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 copy of the repository on your local machine. 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 version get the version defined by the revision, branch or tag 501 * @param commandParameters parameters 502 * @return 503 * @throws ScmException if any 504 * @since 1.9.6 505 */ 506 CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion version , // 507 CommandParameters commandParameters ) 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 startRevision the start revision 516 * @param endRevision the end revision 517 * @return 518 * @throws ScmException if any 519 * @deprecated you must use {@link ScmProvider#diff(org.apache.maven.scm.repository.ScmRepository, 520 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, org.apache.maven.scm.ScmVersion)} 521 */ 522 DiffScmResult diff( ScmRepository scmRepository, ScmFileSet scmFileSet, String startRevision, String endRevision ) 523 throws ScmException; 524 525 /** 526 * Create a diff between two branch/tag/revision. 527 * 528 * @param scmRepository the source control system 529 * @param scmFileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 530 * @param startVersion the start branch/tag/revision 531 * @param endVersion the end branch/tag/revision 532 * @return 533 * @throws ScmException if any 534 */ 535 DiffScmResult diff( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion startVersion, 536 ScmVersion endVersion ) 537 throws ScmException; 538 539 /** 540 * Create an exported copy of the repository on your local machine 541 * 542 * @param repository the source control system 543 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 544 * @param tag get the version defined by the tag 545 * @return 546 * @throws ScmException if any 547 * @deprecated you must use {@link ScmProvider#export(org.apache.maven.scm.repository.ScmRepository, 548 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)} 549 */ 550 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag ) 551 throws ScmException; 552 553 /** 554 * Create an exported copy of the repository on your local machine 555 * 556 * @param repository the source control system 557 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 558 * @return 559 * @throws ScmException if any 560 */ 561 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet ) 562 throws ScmException; 563 564 /** 565 * Create an exported copy of the repository on your local machine 566 * 567 * @param repository the source control system 568 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 569 * @param version get the version defined by the branch/tag/revision 570 * @return 571 * @throws ScmException if any 572 */ 573 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) 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 tag get the version defined by the tag 582 * @param outputDirectory the directory where the export will be stored 583 * @return 584 * @throws ScmException if any 585 * @deprecated you must use {@link ScmProvider#export(org.apache.maven.scm.repository.ScmRepository, 586 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)} 587 */ 588 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory ) 589 throws ScmException; 590 591 /** 592 * Create an exported copy of the repository on your local machine 593 * 594 * @param repository the source control system 595 * @param fileSet the files are copied to the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} location 596 * @param version get the version defined by the branch/tag/revision 597 * @param outputDirectory the directory where the export will be stored 598 * @return 599 * @throws ScmException if any 600 */ 601 ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String outputDirectory ) 602 throws ScmException; 603 604 /** 605 * Removes the given files from the source control system 606 * 607 * @param repository the source control system 608 * @param fileSet the files to be removed 609 * @param message 610 * @return 611 * @throws ScmException if any 612 */ 613 RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message ) 614 throws ScmException; 615 616 /** 617 * Returns the status of the files in the source control system. The state of each file can be one 618 * of the {@link org.apache.maven.scm.ScmFileStatus} flags. 619 * 620 * @param repository the source control system 621 * @param fileSet the files to know the status about. Implementations can also give the changes 622 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 623 * @return 624 * @throws ScmException if any 625 */ 626 StatusScmResult status( ScmRepository repository, ScmFileSet fileSet ) 627 throws ScmException; 628 629 /** 630 * Tag (or label in some systems) will tag the source file with a certain tag 631 * 632 * @param repository the source control system 633 * @param fileSet the files to tag. Implementations can also give the changes 634 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 635 * @param tagName the tag name to apply to the files 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 ) 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 message the commit message used for the tag creation 651 * @return 652 * @throws ScmException if any 653 * @deprecated use {@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)} 654 */ 655 TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message ) 656 throws ScmException; 657 658 /** 659 * Tag (or label in some systems) will tag the source file with a certain tag 660 * 661 * @param repository the source control system 662 * @param fileSet the files to tag. Implementations can also give the changes 663 * from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. 664 * @param tagName the tag name to apply to the files 665 * @param scmTagParameters bean to pass some paramters for tagging {@link ScmTagParameters} 666 * @return 667 * @throws ScmException if any 668 * @since 1.2 669 */ 670 TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, ScmTagParameters scmTagParameters ) 671 throws ScmException; 672 673 /** 674 * Updates the copy on the local machine with the changes in the repository 675 * 676 * @param repository the source control system 677 * @param fileSet location of your local copy 678 * @return 679 * @throws ScmException if any 680 */ 681 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet ) 682 throws ScmException; 683 684 /** 685 * Updates the copy on the local machine with the changes in the repository 686 * 687 * @param repository the source control system 688 * @param fileSet location of your local copy 689 * @param tag use the version defined by the tag 690 * @return 691 * @throws ScmException if any 692 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 693 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)} 694 */ 695 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag ) 696 throws ScmException; 697 698 /** 699 * Updates the copy on the local machine with the changes in the repository 700 * 701 * @param repository the source control system 702 * @param fileSet location of your local copy 703 * @param version use the version defined by the branch/tag/revision 704 * @return 705 * @throws ScmException if any 706 */ 707 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) 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 tag use the version defined by the tag 716 * @param runChangelog Run the changelog command after the update 717 * @return 718 * @throws ScmException if any 719 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 720 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, boolean)} 721 */ 722 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog ) 723 throws ScmException; 724 725 /** 726 * Updates the copy on the local machine with the changes in the repository 727 * 728 * @param repository the source control system 729 * @param fileSet location of your local copy 730 * @param runChangelog Run the changelog command after the update 731 * @return 732 * @throws ScmException if any 733 */ 734 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog ) 735 throws ScmException; 736 737 /** 738 * Updates the copy on the local machine with the changes in the repository 739 * 740 * @param repository the source control system 741 * @param fileSet location of your local copy 742 * @param version use the version defined by the branch/tag/revision 743 * @param runChangelog Run the changelog command after the update 744 * @return 745 * @throws ScmException if any 746 */ 747 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, boolean runChangelog ) 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 tag use the version defined by the tag 756 * @param datePattern the date pattern use in changelog output returned by scm tool 757 * @return 758 * @throws ScmException if any 759 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 760 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)} 761 */ 762 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern ) 763 throws ScmException; 764 765 /** 766 * Updates the copy on the local machine with the changes in the repository 767 * 768 * @param repository the source control system 769 * @param fileSet location of your local copy 770 * @param version use the version defined by the branch/tag/revision 771 * @param datePattern the date pattern use in changelog output returned by scm tool 772 * @return 773 * @throws ScmException if any 774 */ 775 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String datePattern ) 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 tag use the version defined by the tag 784 * @param lastUpdate 785 * @return 786 * @throws ScmException if any 787 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 788 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, java.util.Date)} 789 */ 790 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate ) 791 throws ScmException; 792 793 /** 794 * Updates the copy on the local machine with the changes in the repository 795 * 796 * @param repository the source control system 797 * @param fileSet location of your local copy 798 * @param version use the version defined by the branch/tag/revision 799 * @param lastUpdate 800 * @return 801 * @throws ScmException if any 802 */ 803 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate ) 804 throws ScmException; 805 806 /** 807 * Updates the copy on the local machine with the changes in the repository 808 * 809 * @param repository the source control system 810 * @param fileSet location of your local copy 811 * @param tag use the version defined by the tag 812 * @param lastUpdate Date of last update 813 * @param datePattern the date pattern use in changelog output returned by scm tool 814 * @return 815 * @throws ScmException if any 816 * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository, 817 * org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, java.util.Date, String)} 818 */ 819 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate, 820 String datePattern ) 821 throws ScmException; 822 823 /** 824 * Updates the copy on the local machine with the changes in the repository 825 * 826 * @param repository the source control system 827 * @param fileSet location of your local copy 828 * @param version use the version defined by the branch/tag/revision 829 * @param lastUpdate Date of last update 830 * @param datePattern the date pattern use in changelog output returned by scm tool 831 * @return 832 * @throws ScmException if any 833 */ 834 UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate, 835 String datePattern ) 836 throws ScmException; 837 838 /** 839 * Make a file editable. This is used in source control systems where you look at read-only files 840 * and you need to make them not read-only anymore before you can edit them. This can also mean 841 * that no other user in the system can make the file not read-only anymore. 842 * 843 * @param repository the source control system 844 * @param fileSet the files to make editable 845 * @return 846 * @throws ScmException if any 847 */ 848 EditScmResult edit( ScmRepository repository, ScmFileSet fileSet ) 849 throws ScmException; 850 851 /** 852 * Make a file no longer editable. This is the conterpart of {@link #edit( 853 *org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet)}. 854 * It makes the file read-only again. 855 * 856 * @param repository the source control system 857 * @param fileSet the files to make uneditable 858 * @return 859 * @throws ScmException if any 860 */ 861 UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet ) 862 throws ScmException; 863 864 /** 865 * List each element (files and directories) of <B>fileSet</B> as they exist in the repository. 866 * 867 * @param repository the source control system 868 * @param fileSet the files to list 869 * @param recursive descend recursively 870 * @param tag use the version defined by the tag 871 * @return the list of files in the repository 872 * @deprecated you must use {@link ScmProvider#list(org.apache.maven.scm.repository.ScmRepository, 873 * org.apache.maven.scm.ScmFileSet, boolean, org.apache.maven.scm.ScmVersion)} 874 */ 875 ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag ) 876 throws ScmException; 877 878 /** 879 * List each element (files and directories) of <B>fileSet</B> as they exist in the repository. 880 * 881 * @param repository the source control system 882 * @param fileSet the files to list 883 * @param recursive descend recursively 884 * @param version use the version defined by the branch/tag/revision 885 * @return the list of files in the repository 886 * @throws ScmException if any 887 */ 888 ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion version ) 889 throws ScmException; 890 891 /** 892 * Returns the blame of specified file 893 * 894 * @param repository the source control system 895 * @param fileSet location of your local copy 896 * @param filename file 897 * @return blame for specified file 898 * @throws ScmException 899 * @since 1.4 900 * @deprecated use blame with {@link BlameScmRequest} parameter 901 */ 902 BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename ) 903 throws ScmException; 904 905 /** 906 * 907 * @param blameScmRequest 908 * @return blame for the file specified in the request 909 * @throws ScmException 910 * @since 1.8 911 */ 912 BlameScmResult blame( BlameScmRequest blameScmRequest ) 913 throws ScmException; 914 915 916 /** 917 * Create directory/directories in the repository. 918 * 919 * @param repository 920 * @param fileSet 921 * @param createInLocal 922 * @param message 923 * @return 924 * @throws ScmException 925 */ 926 MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal ) 927 throws ScmException; 928 929 /** 930 * @param repository the source control system 931 * @param fileSet location of your local copy 932 * @param parameters some parameters (not use currently but for future use) 933 * @return if the scm implementation doesn't support "info" result will <code>null</code> 934 * @throws ScmException 935 * @since 1.5 936 */ 937 InfoScmResult info( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) 938 throws ScmException; 939 940 /** 941 * @param repository the source control system 942 * @param fileSet not use currently but for future use 943 * @param parameters some parameters (not use currently but for future use) 944 * @return if the scm implementation doesn't support "info" result will <code>null</code> 945 * @throws ScmException 946 * @since 1.6 947 */ 948 RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) 949 throws ScmException; 950 }