1 package org.apache.maven.scm.provider; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 import org.apache.maven.scm.CommandParameters; 23 import org.apache.maven.scm.ScmBranch; 24 import org.apache.maven.scm.ScmBranchParameters; 25 import org.apache.maven.scm.ScmException; 26 import org.apache.maven.scm.ScmFileSet; 27 import org.apache.maven.scm.ScmTagParameters; 28 import org.apache.maven.scm.ScmVersion; 29 import org.apache.maven.scm.command.add.AddScmResult; 30 import org.apache.maven.scm.command.blame.BlameScmRequest; 31 import org.apache.maven.scm.command.blame.BlameScmResult; 32 import org.apache.maven.scm.command.branch.BranchScmResult; 33 import org.apache.maven.scm.command.changelog.ChangeLogScmRequest; 34 import org.apache.maven.scm.command.changelog.ChangeLogScmResult; 35 import org.apache.maven.scm.command.checkin.CheckInScmResult; 36 import org.apache.maven.scm.command.checkout.CheckOutScmResult; 37 import org.apache.maven.scm.command.diff.DiffScmResult; 38 import org.apache.maven.scm.command.edit.EditScmResult; 39 import org.apache.maven.scm.command.export.ExportScmResult; 40 import org.apache.maven.scm.command.info.InfoScmResult; 41 import org.apache.maven.scm.command.list.ListScmResult; 42 import org.apache.maven.scm.command.mkdir.MkdirScmResult; 43 import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult; 44 import org.apache.maven.scm.command.remove.RemoveScmResult; 45 import org.apache.maven.scm.command.status.StatusScmResult; 46 import org.apache.maven.scm.command.tag.TagScmResult; 47 import org.apache.maven.scm.command.unedit.UnEditScmResult; 48 import org.apache.maven.scm.command.update.UpdateScmResult; 49 import org.apache.maven.scm.log.ScmLogger; 50 import org.apache.maven.scm.repository.ScmRepository; 51 import org.apache.maven.scm.repository.ScmRepositoryException; 52 import org.apache.maven.scm.repository.UnknownRepositoryStructure; 53 54 import java.io.File; 55 import java.util.Date; 56 import java.util.List; 57 58 /** 59 * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a> 60 * 61 */ 62 public interface ScmProvider 63 { 64 String ROLE = ScmProvider.class.getName(); 65 66 String getScmType(); 67 68 /** 69 * Add a logger listener. 70 * 71 * @param logger The logger 72 */ 73 void addListener( ScmLogger logger ); 74 75 boolean requiresEditMode(); 76 77 ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter ) 78 throws ScmRepositoryException; 79 80 ScmProviderRepository makeProviderScmRepository( File path ) 81 throws ScmRepositoryException, UnknownRepositoryStructure; 82 83 /** 84 * Validate the scm url. 85 * 86 * @param scmSpecificUrl The SCM url 87 * @param delimiter The delimiter used in the SCM url 88 * @return Returns a list of messages if the validation failed 89 */ 90 List<String> validateScmUrl( String scmSpecificUrl, char delimiter ); 91 92 /** 93 * Returns the scm reserved file name where the SCM stores information like 'CVS', '.svn'. 94 * 95 * @return the scm reserved file name 96 */ 97 String getScmSpecificFilename(); 98 99 /** 100 * Check if this tag is valid for this SCM provider. 101 * 102 * @param tag tag name to check 103 * @return true if tag is valid 104 */ 105 boolean validateTagName( String tag ); 106 107 /** 108 * Given a tag name, make it suitable for this SCM provider. For example, CVS converts "." into "_" 109 * 110 * @param tag input tag name 111 * @return sanitized tag name 112 */ 113 String sanitizeTagName( String tag ); 114 115 /** 116 * Adds the given files to the source control system 117 * 118 * @param repository the source control system 119 * @param fileSet the files to be added 120 * @return an {@link AddScmResult} that contains the files that have been added 121 * @throws ScmException if any 122 */ 123 AddScmResult add( ScmRepository repository, ScmFileSet fileSet ) 124 throws ScmException; 125 126 /** 127 * Adds the given files to the source control system 128 * 129 * @param repository the source control system 130 * @param fileSet the files to be added 131 * @param message a string that is a comment on the new added file 132 * @return an {@link AddScmResult} that contains the files that have been added 133 * @throws ScmException if any 134 */ 135 AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message ) 136 throws ScmException; 137 138 /** 139 * Adds the given files to the source control system 140 * 141 * @param repository the source control system 142 * @param fileSet the files to be added 143 * @param commandParameters {@link CommandParameters} 144 * @return an {@link AddScmResult} that contains the files that have been added 145 * @throws ScmException if any 146 */ 147 AddScmResult add( ScmRepository repository, ScmFileSet fileSet, CommandParameters commandParameters ) 148 throws ScmException; 149 150 /** 151 * Branch (or label in some systems) will create a branch of the source file with a certain branch name 152 * 153 * @param repository the source control system 154 * @param fileSet the files to branch. Implementations can also give the changes 155 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 156 * @param branchName the branch name to apply to the files 157 * @return 158 * @throws ScmException if any 159 * @deprecated use {@link #branch(ScmRepository, ScmFileSet, String, String, ScmBranchParameters)} 160 */ 161 BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName ) 162 throws ScmException; 163 164 /** 165 * Branch (or label in some systems) will create a branch of the source file with a certain branch name 166 * 167 * @param repository the source control system 168 * @param fileSet the files to branch. Implementations can also give the changes 169 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 170 * @param branchName the branch name to apply to the files 171 * @param message the commit message used for the tag creation 172 * @return 173 * @throws ScmException if any 174 * @deprecated use {@link #branch(ScmRepository, ScmFileSet, String, String, ScmBranchParameters)} 175 */ 176 BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message ) 177 throws ScmException; 178 179 /** 180 * Branch (or label in some systems) will create a branch of the source file with a certain 181 * branch name 182 * 183 * @param repository the source control system 184 * @param fileSet the files to branch. Implementations can also give the changes from the 185 * {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 186 * @param branchName the branch name to apply to the files 187 * @return 188 * @throws ScmException if any 189 * @since 1.3 190 */ 191 BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, 192 ScmBranchParameters scmBranchParameters ) 193 throws ScmException; 194 195 /** 196 * Returns the changes that have happend in the source control system in a certain period of time. 197 * This can be adding, removing, updating, ... of files 198 * 199 * @param repository the source control system 200 * @param fileSet the files to know the changes about. Implementations can also give the changes 201 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 202 * @param startDate the start date of the period 203 * @param endDate the end date of the period 204 * @param numDays the number days before the current time if startdate and enddate are null 205 * @param branch the branch/tag name 206 * @return The SCM result of the changelog command 207 * @throws ScmException if any 208 * @deprecated you must use {@link ScmProvider#changeLog(org.apache.maven.scm.repository.ScmRepository, 209 * org.apache.maven.scm.ScmFileSet, java.util.Date, java.util.Date, int, org.apache.maven.scm.ScmBranch)} 210 */ 211 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, 212 int numDays, String branch ) 213 throws ScmException; 214 215 /** 216 * Returns the changes that have happend in the source control system in a certain period of time. 217 * This can be adding, removing, updating, ... of files 218 * 219 * @param repository the source control system 220 * @param fileSet the files to know the changes about. Implementations can also give the changes 221 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 222 * @param startDate the start date of the period 223 * @param endDate the end date of the period 224 * @param numDays the number days before the current time if startdate and enddate are null 225 * @param branch the branch/tag 226 * @return The SCM result of the changelog command 227 * @throws ScmException if any 228 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 229 */ 230 @Deprecated 231 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, 232 int numDays, ScmBranch branch ) 233 throws ScmException; 234 235 /** 236 * Returns the changes that have happend in the source control system in a certain period of time. 237 * This can be adding, removing, updating, ... of files 238 * 239 * @param repository the source control system 240 * @param fileSet the files to know the changes about. Implementations can also give the changes 241 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 242 * @param startDate the start date of the period 243 * @param endDate the end date of the period 244 * @param numDays the number days before the current time if startdate and enddate are null 245 * @param branch the branch/tag name 246 * @param datePattern the date pattern use in changelog output returned by scm tool 247 * @return The SCM result of the changelog command 248 * @throws ScmException if any 249 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 250 */ 251 @Deprecated 252 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, 253 int numDays, String branch, String datePattern ) 254 throws ScmException; 255 256 /** 257 * Returns the changes that have happend in the source control system in a certain period of time. 258 * This can be adding, removing, updating, ... of files 259 * 260 * @param repository the source control system 261 * @param fileSet the files to know the changes about. Implementations can also give the changes 262 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 263 * @param startDate the start date of the period 264 * @param endDate the end date of the period 265 * @param numDays the number days before the current time if startdate and enddate are null 266 * @param branch the branch/tag 267 * @param datePattern the date pattern use in changelog output returned by scm tool 268 * @return The SCM result of the changelog command 269 * @throws ScmException if any 270 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 271 */ 272 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, 273 int numDays, ScmBranch branch, String datePattern ) 274 throws ScmException; 275 276 /** 277 * Returns the changes that have happend in the source control system in a certain period of time. 278 * This can be adding, removing, updating, ... of files 279 * 280 * @param scmRequest request wrapping detailed parameters for the changelog command 281 * @return The SCM result of the changelog command 282 * @throws ScmException if any 283 * @since 1.8 284 */ 285 ChangeLogScmResult changeLog( ChangeLogScmRequest scmRequest ) 286 throws ScmException; 287 288 /** 289 * Returns the changes that have happend in the source control system between two tags. 290 * This can be adding, removing, updating, ... of files 291 * 292 * @param repository the source control system 293 * @param fileSet the files to know the changes about. Implementations can also give the changes 294 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 295 * @param startTag the start tag 296 * @param endTag the end tag 297 * @return The SCM result of the changelog command 298 * @throws ScmException if any 299 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 300 */ 301 @Deprecated 302 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag ) 303 throws ScmException; 304 305 /** 306 * Returns the changes that have happend in the source control system between two tags. 307 * This can be adding, removing, updating, ... of files 308 * 309 * @param repository the source control system 310 * @param fileSet the files to know the changes about. Implementations can also give the changes 311 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 312 * @param startVersion the start branch/tag/revision 313 * @param endVersion the end branch/tag/revision 314 * @return The SCM result of the changelog command 315 * @throws ScmException if any 316 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 317 */ 318 @Deprecated 319 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, 320 ScmVersion endVersion ) 321 throws ScmException; 322 323 /** 324 * Returns the changes that have happend in the source control system between two tags. 325 * This can be adding, removing, updating, ... of files 326 * 327 * @param repository the source control system 328 * @param fileSet the files to know the changes about. Implementations can also give the changes 329 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 330 * @param startTag the start tag 331 * @param endTag the end tag 332 * @param datePattern the date pattern use in changelog output returned by scm tool 333 * @return 334 * @throws ScmException if any 335 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 336 */ 337 @Deprecated 338 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag, 339 String datePattern ) 340 throws ScmException; 341 342 /** 343 * Returns the changes that have happend in the source control system between two tags. 344 * This can be adding, removing, updating, ... of files 345 * 346 * @param repository the source control system 347 * @param fileSet the files to know the changes about. Implementations can also give the changes 348 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 349 * @param startRevision the start revision 350 * @param endRevision the end revision 351 * @param datePattern the date pattern use in changelog output returned by scm tool 352 * @return 353 * @throws ScmException if any 354 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 355 */ 356 @Deprecated 357 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision, 358 ScmVersion endRevision, String datePattern ) 359 throws ScmException; 360 361 /** 362 * Save the changes you have done into the repository. This will create a new version of the file or 363 * directory in the repository. 364 * <p/> 365 * When the fileSet has no entries, the fileSet.getBaseDir() is recursively committed. 366 * When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet 367 * are committed. 368 * 369 * @param repository the source control system 370 * @param fileSet the files to check in (sometimes called commit) 371 * @param tag tag or revision 372 * @param message a string that is a comment on the changes that where done 373 * @return 374 * @throws ScmException if any 375 * @deprecated you must use {@link ScmProvider#checkIn(org.apache.maven.scm.repository.ScmRepository, 376 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)} 377 */ 378 CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message ) 379 throws ScmException; 380 381 /** 382 * Save the changes you have done into the repository. This will create a new version of the file or 383 * directory in the repository. 384 * <p/> 385 * When the fileSet has no entries, the fileSet.getBaseDir() is recursively committed. 386 * When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet 387 * are committed. 388 * 389 * @param repository the source control system 390 * @param fileSet the files to check in (sometimes called commit) 391 * @param message a string that is a comment on the changes that where done 392 * @return 393 * @throws ScmException if any 394 */ 395 CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String message ) 396 throws ScmException; 397 398 /** 399 * Save the changes you have done into the repository. This will create a new version of the file or 400 * directory in the repository. 401 * <p/> 402 * When the fileSet has no entries, the fileSet.getBaseDir() is recursively committed. 403 * When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet 404 * are committed. 405 * 406 * @param repository the source control system 407 * @param fileSet the files to check in (sometimes called commit) 408 * @param revision branch/tag/revision 409 * @param message a string that is a comment on the changes that where done 410 * @return 411 * @throws ScmException if any 412 */ 413 CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion revision, String message ) 414 throws ScmException; 415 416 /** 417 * Create a copy of the repository on your local machine 418 * 419 * @param repository the source control system 420 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 421 * @param tag get the version defined by the tag 422 * @return 423 * @throws ScmException if any 424 * @deprecated you must use {@link ScmProvider#checkOut(org.apache.maven.scm.repository.ScmRepository, 425 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)} 426 */ 427 CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag ) 428 throws ScmException; 429 430 /** 431 * Create a copy of the repository on your local machine 432 * 433 * @param repository the source control system 434 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 435 * @return 436 * @throws ScmException if any 437 */ 438 CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet ) 439 throws ScmException; 440 441 /** 442 * Create a copy of the repository on your local machine 443 * 444 * @param repository the source control system 445 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 446 * @param version get the version defined by the revision, branch or tag 447 * @return 448 * @throws ScmException if any 449 */ 450 CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) 451 throws ScmException; 452 453 /** 454 * Create a copy of the repository on your local machine. 455 * 456 * @param scmRepository the source control system 457 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 458 * @param tag tag or revision 459 * @param recursive whether to check out recursively 460 * @return 461 * @throws ScmException if any 462 * @deprecated you must use {@link ScmProvider#checkOut(org.apache.maven.scm.repository.ScmRepository, 463 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, boolean)} 464 */ 465 CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, String tag, boolean recursive ) 466 throws ScmException; 467 468 /** 469 * Create a copy of the repository on your local machine. 470 * 471 * @param scmRepository the source control system 472 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 473 * @param recursive whether to check out recursively 474 * @return 475 * @throws ScmException if any 476 */ 477 CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, boolean recursive ) 478 throws ScmException; 479 480 /** 481 * Create a copy of the repository on your local machine. 482 * 483 * @param scmRepository the source control system 484 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 485 * @param version get the version defined by the revision, branch or tag 486 * @param recursive whether to check out recursively 487 * @return 488 * @throws ScmException if any 489 */ 490 CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion version, 491 boolean recursive ) 492 throws ScmException; 493 494 /** 495 * Create a diff between two branch/tag/revision. 496 * 497 * @param scmRepository the source control system 498 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 499 * @param startRevision the start revision 500 * @param endRevision the end revision 501 * @return 502 * @throws ScmException if any 503 * @deprecated you must use {@link ScmProvider#diff(org.apache.maven.scm.repository.ScmRepository, 504 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, org.apache.maven.scm.ScmVersion)} 505 */ 506 DiffScmResult diff( ScmRepository scmRepository, ScmFileSet scmFileSet, String startRevision, String endRevision ) 507 throws ScmException; 508 509 /** 510 * Create a diff between two branch/tag/revision. 511 * 512 * @param scmRepository the source control system 513 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 514 * @param startVersion the start branch/tag/revision 515 * @param endVersion the end branch/tag/revision 516 * @return 517 * @throws ScmException if any 518 */ 519 DiffScmResult diff( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion startVersion, 520 ScmVersion endVersion ) 521 throws ScmException; 522 523 /** 524 * Create an exported copy of the repository on your local machine 525 * 526 * @param repository the source control system 527 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 528 * @param tag get the version defined by the tag 529 * @return 530 * @throws ScmException if any 531 * @deprecated you must use {@link ScmProvider#export(org.apache.maven.scm.repository.ScmRepository, 532 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)} 533 */ 534 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag ) 535 throws ScmException; 536 537 /** 538 * Create an exported copy of the repository on your local machine 539 * 540 * @param repository the source control system 541 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 542 * @return 543 * @throws ScmException if any 544 */ 545 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet ) 546 throws ScmException; 547 548 /** 549 * Create an exported copy of the repository on your local machine 550 * 551 * @param repository the source control system 552 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 553 * @param version get the version defined by the branch/tag/revision 554 * @return 555 * @throws ScmException if any 556 */ 557 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) 558 throws ScmException; 559 560 /** 561 * Create an exported copy of the repository on your local machine 562 * 563 * @param repository the source control system 564 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 565 * @param tag get the version defined by the tag 566 * @param outputDirectory the directory where the export will be stored 567 * @return 568 * @throws ScmException if any 569 * @deprecated you must use {@link ScmProvider#export(org.apache.maven.scm.repository.ScmRepository, 570 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)} 571 */ 572 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory ) 573 throws ScmException; 574 575 /** 576 * Create an exported copy of the repository on your local machine 577 * 578 * @param repository the source control system 579 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 580 * @param version get the version defined by the branch/tag/revision 581 * @param outputDirectory the directory where the export will be stored 582 * @return 583 * @throws ScmException if any 584 */ 585 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String outputDirectory ) 586 throws ScmException; 587 588 /** 589 * Removes the given files from the source control system 590 * 591 * @param repository the source control system 592 * @param fileSet the files to be removed 593 * @param message 594 * @return 595 * @throws ScmException if any 596 */ 597 RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message ) 598 throws ScmException; 599 600 /** 601 * Returns the status of the files in the source control system. The state of each file can be one 602 * of the {@link org.apache.maven.scm.ScmFileStatus} flags. 603 * 604 * @param repository the source control system 605 * @param fileSet the files to know the status about. Implementations can also give the changes 606 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 607 * @return 608 * @throws ScmException if any 609 */ 610 StatusScmResult status( ScmRepository repository, ScmFileSet fileSet ) 611 throws ScmException; 612 613 /** 614 * Tag (or label in some systems) will tag the source file with a certain tag 615 * 616 * @param repository the source control system 617 * @param fileSet the files to tag. Implementations can also give the changes 618 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 619 * @param tagName the tag name to apply to the files 620 * @return 621 * @throws ScmException if any 622 * @deprecated use {@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)} 623 */ 624 TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName ) 625 throws ScmException; 626 627 /** 628 * Tag (or label in some systems) will tag the source file with a certain tag 629 * 630 * @param repository the source control system 631 * @param fileSet the files to tag. Implementations can also give the changes 632 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 633 * @param tagName the tag name to apply to the files 634 * @param message the commit message used for the tag creation 635 * @return 636 * @throws ScmException if any 637 * @deprecated use {@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)} 638 */ 639 TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message ) 640 throws ScmException; 641 642 /** 643 * Tag (or label in some systems) will tag the source file with a certain tag 644 * 645 * @param repository the source control system 646 * @param fileSet the files to tag. Implementations can also give the changes 647 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 648 * @param tagName the tag name to apply to the files 649 * @param scmTagParameters bean to pass some paramters for tagging {@link ScmTagParameters} 650 * @return 651 * @throws ScmException if any 652 * @since 1.2 653 */ 654 TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, ScmTagParameters scmTagParameters ) 655 throws ScmException; 656 657 /** 658 * Updates the copy on the local machine with the changes in the repository 659 * 660 * @param repository the source control system 661 * @param fileSet location of your local copy 662 * @return 663 * @throws ScmException if any 664 */ 665 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet ) 666 throws ScmException; 667 668 /** 669 * Updates the copy on the local machine with the changes in the repository 670 * 671 * @param repository the source control system 672 * @param fileSet location of your local copy 673 * @param tag use the version defined by the tag 674 * @return 675 * @throws ScmException if any 676 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 677 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)} 678 */ 679 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag ) 680 throws ScmException; 681 682 /** 683 * Updates the copy on the local machine with the changes in the repository 684 * 685 * @param repository the source control system 686 * @param fileSet location of your local copy 687 * @param version use the version defined by the branch/tag/revision 688 * @return 689 * @throws ScmException if any 690 */ 691 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) 692 throws ScmException; 693 694 /** 695 * Updates the copy on the local machine with the changes in the repository 696 * 697 * @param repository the source control system 698 * @param fileSet location of your local copy 699 * @param tag use the version defined by the tag 700 * @param runChangelog Run the changelog command after the update 701 * @return 702 * @throws ScmException if any 703 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 704 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, boolean)} 705 */ 706 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog ) 707 throws ScmException; 708 709 /** 710 * Updates the copy on the local machine with the changes in the repository 711 * 712 * @param repository the source control system 713 * @param fileSet location of your local copy 714 * @param runChangelog Run the changelog command after the update 715 * @return 716 * @throws ScmException if any 717 */ 718 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog ) 719 throws ScmException; 720 721 /** 722 * Updates the copy on the local machine with the changes in the repository 723 * 724 * @param repository the source control system 725 * @param fileSet location of your local copy 726 * @param version use the version defined by the branch/tag/revision 727 * @param runChangelog Run the changelog command after the update 728 * @return 729 * @throws ScmException if any 730 */ 731 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, boolean runChangelog ) 732 throws ScmException; 733 734 /** 735 * Updates the copy on the local machine with the changes in the repository 736 * 737 * @param repository the source control system 738 * @param fileSet location of your local copy 739 * @param tag use the version defined by the tag 740 * @param datePattern the date pattern use in changelog output returned by scm tool 741 * @return 742 * @throws ScmException if any 743 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 744 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)} 745 */ 746 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern ) 747 throws ScmException; 748 749 /** 750 * Updates the copy on the local machine with the changes in the repository 751 * 752 * @param repository the source control system 753 * @param fileSet location of your local copy 754 * @param version use the version defined by the branch/tag/revision 755 * @param datePattern the date pattern use in changelog output returned by scm tool 756 * @return 757 * @throws ScmException if any 758 */ 759 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String datePattern ) 760 throws ScmException; 761 762 /** 763 * Updates the copy on the local machine with the changes in the repository 764 * 765 * @param repository the source control system 766 * @param fileSet location of your local copy 767 * @param tag use the version defined by the tag 768 * @param lastUpdate 769 * @return 770 * @throws ScmException if any 771 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 772 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, java.util.Date)} 773 */ 774 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate ) 775 throws ScmException; 776 777 /** 778 * Updates the copy on the local machine with the changes in the repository 779 * 780 * @param repository the source control system 781 * @param fileSet location of your local copy 782 * @param version use the version defined by the branch/tag/revision 783 * @param lastUpdate 784 * @return 785 * @throws ScmException if any 786 */ 787 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate ) 788 throws ScmException; 789 790 /** 791 * Updates the copy on the local machine with the changes in the repository 792 * 793 * @param repository the source control system 794 * @param fileSet location of your local copy 795 * @param tag use the version defined by the tag 796 * @param lastUpdate Date of last update 797 * @param datePattern the date pattern use in changelog output returned by scm tool 798 * @return 799 * @throws ScmException if any 800 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 801 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, java.util.Date, String)} 802 */ 803 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate, 804 String datePattern ) 805 throws ScmException; 806 807 /** 808 * Updates the copy on the local machine with the changes in the repository 809 * 810 * @param repository the source control system 811 * @param fileSet location of your local copy 812 * @param version use the version defined by the branch/tag/revision 813 * @param lastUpdate Date of last update 814 * @param datePattern the date pattern use in changelog output returned by scm tool 815 * @return 816 * @throws ScmException if any 817 */ 818 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate, 819 String datePattern ) 820 throws ScmException; 821 822 /** 823 * Make a file editable. This is used in source control systems where you look at read-only files 824 * and you need to make them not read-only anymore before you can edit them. This can also mean 825 * that no other user in the system can make the file not read-only anymore. 826 * 827 * @param repository the source control system 828 * @param fileSet the files to make editable 829 * @return 830 * @throws ScmException if any 831 */ 832 EditScmResult edit( ScmRepository repository, ScmFileSet fileSet ) 833 throws ScmException; 834 835 /** 836 * Make a file no longer editable. This is the conterpart of {@link #edit( 837 *org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet)}. 838 * It makes the file read-only again. 839 * 840 * @param repository the source control system 841 * @param fileSet the files to make uneditable 842 * @return 843 * @throws ScmException if any 844 */ 845 UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet ) 846 throws ScmException; 847 848 /** 849 * List each element (files and directories) of <B>fileSet</B> as they exist in the repository. 850 * 851 * @param repository the source control system 852 * @param fileSet the files to list 853 * @param recursive descend recursively 854 * @param tag use the version defined by the tag 855 * @return the list of files in the repository 856 * @deprecated you must use {@link ScmProvider#list(org.apache.maven.scm.repository.ScmRepository, 857 * org.apache.maven.scm.ScmFileSet, boolean, org.apache.maven.scm.ScmVersion)} 858 */ 859 ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag ) 860 throws ScmException; 861 862 /** 863 * List each element (files and directories) of <B>fileSet</B> as they exist in the repository. 864 * 865 * @param repository the source control system 866 * @param fileSet the files to list 867 * @param recursive descend recursively 868 * @param version use the version defined by the branch/tag/revision 869 * @return the list of files in the repository 870 * @throws ScmException if any 871 */ 872 ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion version ) 873 throws ScmException; 874 875 /** 876 * Returns the blame of specified file 877 * 878 * @param repository the source control system 879 * @param fileSet location of your local copy 880 * @param filename file 881 * @return blame for specified file 882 * @throws ScmException 883 * @since 1.4 884 * @deprecated use blame with {@link BlameScmRequest} parameter 885 */ 886 BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename ) 887 throws ScmException; 888 889 /** 890 * 891 * @param blameScmRequest 892 * @return blame for the file specified in the request 893 * @throws ScmException 894 * @since 1.8 895 */ 896 BlameScmResult blame( BlameScmRequest blameScmRequest ) 897 throws ScmException; 898 899 900 /** 901 * Create directory/directories in the repository. 902 * 903 * @param repository 904 * @param fileSet 905 * @param createInLocal 906 * @param message 907 * @return 908 * @throws ScmException 909 */ 910 MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal ) 911 throws ScmException; 912 913 /** 914 * @param repository the source control system 915 * @param fileSet location of your local copy 916 * @param parameters some parameters (not use currently but for future use) 917 * @return if the scm implementation doesn't support "info" result will <code>null</code> 918 * @throws ScmException 919 * @since 1.5 920 */ 921 InfoScmResult info( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) 922 throws ScmException; 923 924 /** 925 * @param repository the source control system 926 * @param fileSet not use currently but for future use 927 * @param parameters some parameters (not use currently but for future use) 928 * @return if the scm implementation doesn't support "info" result will <code>null</code> 929 * @throws ScmException 930 * @since 1.6 931 */ 932 RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) 933 throws ScmException; 934 }