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, 210 * org.apache.maven.scm.ScmBranch)} 211 */ 212 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, 213 int numDays, String branch ) 214 throws ScmException; 215 216 /** 217 * Returns the changes that have happend in the source control system in a certain period of time. 218 * This can be adding, removing, updating, ... of files 219 * 220 * @param repository the source control system 221 * @param fileSet the files to know the changes about. Implementations can also give the changes 222 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 223 * @param startDate the start date of the period 224 * @param endDate the end date of the period 225 * @param numDays the number days before the current time if startdate and enddate are null 226 * @param branch the branch/tag 227 * @return The SCM result of the changelog command 228 * @throws ScmException if any 229 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 230 */ 231 @Deprecated 232 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, 233 int numDays, ScmBranch branch ) 234 throws ScmException; 235 236 /** 237 * Returns the changes that have happend in the source control system in a certain period of time. 238 * This can be adding, removing, updating, ... of files 239 * 240 * @param repository the source control system 241 * @param fileSet the files to know the changes about. Implementations can also give the changes 242 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 243 * @param startDate the start date of the period 244 * @param endDate the end date of the period 245 * @param numDays the number days before the current time if startdate and enddate are null 246 * @param branch the branch/tag name 247 * @param datePattern the date pattern use in changelog output returned by scm tool 248 * @return The SCM result of the changelog command 249 * @throws ScmException if any 250 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 251 */ 252 @Deprecated 253 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, 254 int numDays, String branch, String datePattern ) 255 throws ScmException; 256 257 /** 258 * Returns the changes that have happend in the source control system in a certain period of time. 259 * This can be adding, removing, updating, ... of files 260 * 261 * @param repository the source control system 262 * @param fileSet the files to know the changes about. Implementations can also give the changes 263 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 264 * @param startDate the start date of the period 265 * @param endDate the end date of the period 266 * @param numDays the number days before the current time if startdate and enddate are null 267 * @param branch the branch/tag 268 * @param datePattern the date pattern use in changelog output returned by scm tool 269 * @return The SCM result of the changelog command 270 * @throws ScmException if any 271 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 272 */ 273 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, 274 int numDays, ScmBranch branch, String datePattern ) 275 throws ScmException; 276 277 /** 278 * Returns the changes that have happend in the source control system in a certain period of time. 279 * This can be adding, removing, updating, ... of files 280 * 281 * @param scmRequest request wrapping detailed parameters for the changelog command 282 * @return The SCM result of the changelog command 283 * @throws ScmException if any 284 * @since 1.8 285 */ 286 ChangeLogScmResult changeLog( ChangeLogScmRequest scmRequest ) 287 throws ScmException; 288 289 /** 290 * Returns the changes that have happend in the source control system between two tags. 291 * This can be adding, removing, updating, ... of files 292 * 293 * @param repository the source control system 294 * @param fileSet the files to know the changes about. Implementations can also give the changes 295 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 296 * @param startTag the start tag 297 * @param endTag the end tag 298 * @return The SCM result of the changelog command 299 * @throws ScmException if any 300 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 301 */ 302 @Deprecated 303 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag ) 304 throws ScmException; 305 306 /** 307 * Returns the changes that have happend in the source control system between two tags. 308 * This can be adding, removing, updating, ... of files 309 * 310 * @param repository the source control system 311 * @param fileSet the files to know the changes about. Implementations can also give the changes 312 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 313 * @param startVersion the start branch/tag/revision 314 * @param endVersion the end branch/tag/revision 315 * @return The SCM result of the changelog command 316 * @throws ScmException if any 317 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 318 */ 319 @Deprecated 320 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, 321 ScmVersion endVersion ) 322 throws ScmException; 323 324 /** 325 * Returns the changes that have happend in the source control system between two tags. 326 * This can be adding, removing, updating, ... of files 327 * 328 * @param repository the source control system 329 * @param fileSet the files to know the changes about. Implementations can also give the changes 330 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 331 * @param startTag the start tag 332 * @param endTag the end tag 333 * @param datePattern the date pattern use in changelog output returned by scm tool 334 * @return 335 * @throws ScmException if any 336 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 337 */ 338 @Deprecated 339 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag, 340 String datePattern ) 341 throws ScmException; 342 343 /** 344 * Returns the changes that have happend in the source control system between two tags. 345 * This can be adding, removing, updating, ... of files 346 * 347 * @param repository the source control system 348 * @param fileSet the files to know the changes about. Implementations can also give the changes 349 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 350 * @param startRevision the start revision 351 * @param endRevision the end revision 352 * @param datePattern the date pattern use in changelog output returned by scm tool 353 * @return 354 * @throws ScmException if any 355 * @deprecated use {@link #changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)} instead 356 */ 357 @Deprecated 358 ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision, 359 ScmVersion endRevision, String datePattern ) 360 throws ScmException; 361 362 /** 363 * Save the changes you have done into the repository. This will create a new version of the file or 364 * directory in the repository. 365 * <p/> 366 * When the fileSet has no entries, the fileSet.getBaseDir() is recursively committed. 367 * When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet 368 * are committed. 369 * 370 * @param repository the source control system 371 * @param fileSet the files to check in (sometimes called commit) 372 * @param tag tag or revision 373 * @param message a string that is a comment on the changes that where done 374 * @return 375 * @throws ScmException if any 376 * @deprecated you must use {@link ScmProvider#checkIn(org.apache.maven.scm.repository.ScmRepository, 377 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)} 378 */ 379 CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message ) 380 throws ScmException; 381 382 /** 383 * Save the changes you have done into the repository. This will create a new version of the file or 384 * directory in the repository. 385 * <p/> 386 * When the fileSet has no entries, the fileSet.getBaseDir() is recursively committed. 387 * When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet 388 * are committed. 389 * 390 * @param repository the source control system 391 * @param fileSet the files to check in (sometimes called commit) 392 * @param message a string that is a comment on the changes that where done 393 * @return 394 * @throws ScmException if any 395 */ 396 CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String message ) 397 throws ScmException; 398 399 /** 400 * Save the changes you have done into the repository. This will create a new version of the file or 401 * directory in the repository. 402 * <p/> 403 * When the fileSet has no entries, the fileSet.getBaseDir() is recursively committed. 404 * When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet 405 * are committed. 406 * 407 * @param repository the source control system 408 * @param fileSet the files to check in (sometimes called commit) 409 * @param revision branch/tag/revision 410 * @param message a string that is a comment on the changes that where done 411 * @return 412 * @throws ScmException if any 413 */ 414 CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion revision, String message ) 415 throws ScmException; 416 417 /** 418 * Create a copy of the repository on your local machine 419 * 420 * @param repository the source control system 421 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 422 * @param tag get the version defined by the tag 423 * @return 424 * @throws ScmException if any 425 * @deprecated you must use {@link ScmProvider#checkOut(org.apache.maven.scm.repository.ScmRepository, 426 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)} 427 */ 428 CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag ) 429 throws ScmException; 430 431 /** 432 * Create a copy of the repository on your local machine 433 * 434 * @param repository the source control system 435 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 436 * @return 437 * @throws ScmException if any 438 */ 439 CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet ) 440 throws ScmException; 441 442 /** 443 * Create a copy of the repository on your local machine 444 * 445 * @param repository the source control system 446 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 447 * @param version get the version defined by the revision, branch or tag 448 * @return 449 * @throws ScmException if any 450 */ 451 CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) 452 throws ScmException; 453 454 /** 455 * Create a copy of the repository on your local machine. 456 * 457 * @param scmRepository the source control system 458 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 459 * @param tag tag or revision 460 * @param recursive whether to check out recursively 461 * @return 462 * @throws ScmException if any 463 * @deprecated you must use {@link ScmProvider#checkOut(org.apache.maven.scm.repository.ScmRepository, 464 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, boolean)} 465 */ 466 CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, String tag, boolean recursive ) 467 throws ScmException; 468 469 /** 470 * Create a copy of the repository on your local machine. 471 * 472 * @param scmRepository the source control system 473 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 474 * @param recursive whether to check out recursively 475 * @return 476 * @throws ScmException if any 477 */ 478 CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, boolean recursive ) 479 throws ScmException; 480 481 /** 482 * Create a copy of the repository on your local machine. 483 * 484 * @param scmRepository the source control system 485 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 486 * @param version get the version defined by the revision, branch or tag 487 * @param recursive whether to check out recursively 488 * @return 489 * @throws ScmException if any 490 */ 491 CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion version, 492 boolean recursive ) 493 throws ScmException; 494 495 /** 496 * Create a diff between two branch/tag/revision. 497 * 498 * @param scmRepository the source control system 499 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 500 * @param startRevision the start revision 501 * @param endRevision the end revision 502 * @return 503 * @throws ScmException if any 504 * @deprecated you must use {@link ScmProvider#diff(org.apache.maven.scm.repository.ScmRepository, 505 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, org.apache.maven.scm.ScmVersion)} 506 */ 507 DiffScmResult diff( ScmRepository scmRepository, ScmFileSet scmFileSet, String startRevision, String endRevision ) 508 throws ScmException; 509 510 /** 511 * Create a diff between two branch/tag/revision. 512 * 513 * @param scmRepository the source control system 514 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 515 * @param startVersion the start branch/tag/revision 516 * @param endVersion the end branch/tag/revision 517 * @return 518 * @throws ScmException if any 519 */ 520 DiffScmResult diff( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion startVersion, 521 ScmVersion endVersion ) 522 throws ScmException; 523 524 /** 525 * Create an exported copy of the repository on your local machine 526 * 527 * @param repository the source control system 528 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 529 * @param tag get the version defined by the tag 530 * @return 531 * @throws ScmException if any 532 * @deprecated you must use {@link ScmProvider#export(org.apache.maven.scm.repository.ScmRepository, 533 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)} 534 */ 535 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag ) 536 throws ScmException; 537 538 /** 539 * Create an exported copy of the repository on your local machine 540 * 541 * @param repository the source control system 542 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 543 * @return 544 * @throws ScmException if any 545 */ 546 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet ) 547 throws ScmException; 548 549 /** 550 * Create an exported copy of the repository on your local machine 551 * 552 * @param repository the source control system 553 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 554 * @param version get the version defined by the branch/tag/revision 555 * @return 556 * @throws ScmException if any 557 */ 558 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) 559 throws ScmException; 560 561 /** 562 * Create an exported copy of the repository on your local machine 563 * 564 * @param repository the source control system 565 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 566 * @param tag get the version defined by the tag 567 * @param outputDirectory the directory where the export will be stored 568 * @return 569 * @throws ScmException if any 570 * @deprecated you must use {@link ScmProvider#export(org.apache.maven.scm.repository.ScmRepository, 571 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)} 572 */ 573 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory ) 574 throws ScmException; 575 576 /** 577 * Create an exported copy of the repository on your local machine 578 * 579 * @param repository the source control system 580 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 581 * @param version get the version defined by the branch/tag/revision 582 * @param outputDirectory the directory where the export will be stored 583 * @return 584 * @throws ScmException if any 585 */ 586 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String outputDirectory ) 587 throws ScmException; 588 589 /** 590 * Removes the given files from the source control system 591 * 592 * @param repository the source control system 593 * @param fileSet the files to be removed 594 * @param message 595 * @return 596 * @throws ScmException if any 597 */ 598 RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message ) 599 throws ScmException; 600 601 /** 602 * Returns the status of the files in the source control system. The state of each file can be one 603 * of the {@link org.apache.maven.scm.ScmFileStatus} flags. 604 * 605 * @param repository the source control system 606 * @param fileSet the files to know the status about. Implementations can also give the changes 607 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 608 * @return 609 * @throws ScmException if any 610 */ 611 StatusScmResult status( ScmRepository repository, ScmFileSet fileSet ) 612 throws ScmException; 613 614 /** 615 * Tag (or label in some systems) will tag the source file with a certain tag 616 * 617 * @param repository the source control system 618 * @param fileSet the files to tag. Implementations can also give the changes 619 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 620 * @param tagName the tag name to apply to the files 621 * @return 622 * @throws ScmException if any 623 * @deprecated use {@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)} 624 */ 625 TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName ) 626 throws ScmException; 627 628 /** 629 * Tag (or label in some systems) will tag the source file with a certain tag 630 * 631 * @param repository the source control system 632 * @param fileSet the files to tag. Implementations can also give the changes 633 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 634 * @param tagName the tag name to apply to the files 635 * @param message the commit message used for the tag creation 636 * @return 637 * @throws ScmException if any 638 * @deprecated use {@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)} 639 */ 640 TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message ) 641 throws ScmException; 642 643 /** 644 * Tag (or label in some systems) will tag the source file with a certain tag 645 * 646 * @param repository the source control system 647 * @param fileSet the files to tag. Implementations can also give the changes 648 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 649 * @param tagName the tag name to apply to the files 650 * @param scmTagParameters bean to pass some paramters for tagging {@link ScmTagParameters} 651 * @return 652 * @throws ScmException if any 653 * @since 1.2 654 */ 655 TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, ScmTagParameters scmTagParameters ) 656 throws ScmException; 657 658 /** 659 * Updates the copy on the local machine with the changes in the repository 660 * 661 * @param repository the source control system 662 * @param fileSet location of your local copy 663 * @return 664 * @throws ScmException if any 665 */ 666 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet ) 667 throws ScmException; 668 669 /** 670 * Updates the copy on the local machine with the changes in the repository 671 * 672 * @param repository the source control system 673 * @param fileSet location of your local copy 674 * @param tag use the version defined by the tag 675 * @return 676 * @throws ScmException if any 677 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 678 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)} 679 */ 680 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag ) 681 throws ScmException; 682 683 /** 684 * Updates the copy on the local machine with the changes in the repository 685 * 686 * @param repository the source control system 687 * @param fileSet location of your local copy 688 * @param version use the version defined by the branch/tag/revision 689 * @return 690 * @throws ScmException if any 691 */ 692 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) 693 throws ScmException; 694 695 /** 696 * Updates the copy on the local machine with the changes in the repository 697 * 698 * @param repository the source control system 699 * @param fileSet location of your local copy 700 * @param tag use the version defined by the tag 701 * @param runChangelog Run the changelog command after the update 702 * @return 703 * @throws ScmException if any 704 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 705 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, boolean)} 706 */ 707 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog ) 708 throws ScmException; 709 710 /** 711 * Updates the copy on the local machine with the changes in the repository 712 * 713 * @param repository the source control system 714 * @param fileSet location of your local copy 715 * @param runChangelog Run the changelog command after the update 716 * @return 717 * @throws ScmException if any 718 */ 719 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog ) 720 throws ScmException; 721 722 /** 723 * Updates the copy on the local machine with the changes in the repository 724 * 725 * @param repository the source control system 726 * @param fileSet location of your local copy 727 * @param version use the version defined by the branch/tag/revision 728 * @param runChangelog Run the changelog command after the update 729 * @return 730 * @throws ScmException if any 731 */ 732 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, boolean runChangelog ) 733 throws ScmException; 734 735 /** 736 * Updates the copy on the local machine with the changes in the repository 737 * 738 * @param repository the source control system 739 * @param fileSet location of your local copy 740 * @param tag use the version defined by the tag 741 * @param datePattern the date pattern use in changelog output returned by scm tool 742 * @return 743 * @throws ScmException if any 744 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 745 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)} 746 */ 747 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern ) 748 throws ScmException; 749 750 /** 751 * Updates the copy on the local machine with the changes in the repository 752 * 753 * @param repository the source control system 754 * @param fileSet location of your local copy 755 * @param version use the version defined by the branch/tag/revision 756 * @param datePattern the date pattern use in changelog output returned by scm tool 757 * @return 758 * @throws ScmException if any 759 */ 760 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String datePattern ) 761 throws ScmException; 762 763 /** 764 * Updates the copy on the local machine with the changes in the repository 765 * 766 * @param repository the source control system 767 * @param fileSet location of your local copy 768 * @param tag use the version defined by the tag 769 * @param lastUpdate 770 * @return 771 * @throws ScmException if any 772 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 773 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, java.util.Date)} 774 */ 775 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate ) 776 throws ScmException; 777 778 /** 779 * Updates the copy on the local machine with the changes in the repository 780 * 781 * @param repository the source control system 782 * @param fileSet location of your local copy 783 * @param version use the version defined by the branch/tag/revision 784 * @param lastUpdate 785 * @return 786 * @throws ScmException if any 787 */ 788 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate ) 789 throws ScmException; 790 791 /** 792 * Updates the copy on the local machine with the changes in the repository 793 * 794 * @param repository the source control system 795 * @param fileSet location of your local copy 796 * @param tag use the version defined by the tag 797 * @param lastUpdate Date of last update 798 * @param datePattern the date pattern use in changelog output returned by scm tool 799 * @return 800 * @throws ScmException if any 801 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 802 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, java.util.Date, String)} 803 */ 804 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate, 805 String datePattern ) 806 throws ScmException; 807 808 /** 809 * Updates the copy on the local machine with the changes in the repository 810 * 811 * @param repository the source control system 812 * @param fileSet location of your local copy 813 * @param version use the version defined by the branch/tag/revision 814 * @param lastUpdate Date of last update 815 * @param datePattern the date pattern use in changelog output returned by scm tool 816 * @return 817 * @throws ScmException if any 818 */ 819 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate, 820 String datePattern ) 821 throws ScmException; 822 823 /** 824 * Make a file editable. This is used in source control systems where you look at read-only files 825 * and you need to make them not read-only anymore before you can edit them. This can also mean 826 * that no other user in the system can make the file not read-only anymore. 827 * 828 * @param repository the source control system 829 * @param fileSet the files to make editable 830 * @return 831 * @throws ScmException if any 832 */ 833 EditScmResult edit( ScmRepository repository, ScmFileSet fileSet ) 834 throws ScmException; 835 836 /** 837 * Make a file no longer editable. This is the conterpart of {@link #edit( 838 *org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet)}. 839 * It makes the file read-only again. 840 * 841 * @param repository the source control system 842 * @param fileSet the files to make uneditable 843 * @return 844 * @throws ScmException if any 845 */ 846 UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet ) 847 throws ScmException; 848 849 /** 850 * List each element (files and directories) of <B>fileSet</B> as they exist in the repository. 851 * 852 * @param repository the source control system 853 * @param fileSet the files to list 854 * @param recursive descend recursively 855 * @param tag use the version defined by the tag 856 * @return the list of files in the repository 857 * @deprecated you must use {@link ScmProvider#list(org.apache.maven.scm.repository.ScmRepository, 858 * org.apache.maven.scm.ScmFileSet, boolean, org.apache.maven.scm.ScmVersion)} 859 */ 860 ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag ) 861 throws ScmException; 862 863 /** 864 * List each element (files and directories) of <B>fileSet</B> as they exist in the repository. 865 * 866 * @param repository the source control system 867 * @param fileSet the files to list 868 * @param recursive descend recursively 869 * @param version use the version defined by the branch/tag/revision 870 * @return the list of files in the repository 871 * @throws ScmException if any 872 */ 873 ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion version ) 874 throws ScmException; 875 876 /** 877 * Returns the blame of specified file 878 * 879 * @param repository the source control system 880 * @param fileSet location of your local copy 881 * @param filename file 882 * @return blame for specified file 883 * @throws ScmException 884 * @since 1.4 885 * @deprecated use blame with {@link BlameScmRequest} parameter 886 */ 887 BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename ) 888 throws ScmException; 889 890 /** 891 * 892 * @param blameScmRequest 893 * @return blame for the file specified in the request 894 * @throws ScmException 895 * @since 1.8 896 */ 897 BlameScmResult blame( BlameScmRequest blameScmRequest ) 898 throws ScmException; 899 900 901 /** 902 * Create directory/directories in the repository. 903 * 904 * @param repository 905 * @param fileSet 906 * @param createInLocal 907 * @param message 908 * @return 909 * @throws ScmException 910 */ 911 MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal ) 912 throws ScmException; 913 914 /** 915 * @param repository the source control system 916 * @param fileSet location of your local copy 917 * @param parameters some parameters (not use currently but for future use) 918 * @return if the scm implementation doesn't support "info" result will <code>null</code> 919 * @throws ScmException 920 * @since 1.5 921 */ 922 InfoScmResult info( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) 923 throws ScmException; 924 925 /** 926 * @param repository the source control system 927 * @param fileSet not use currently but for future use 928 * @param parameters some parameters (not use currently but for future use) 929 * @return if the scm implementation doesn't support "info" result will <code>null</code> 930 * @throws ScmException 931 * @since 1.6 932 */ 933 RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) 934 throws ScmException; 935 }