1 package org.apache.maven.scm.provider;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.scm.CommandParameter;
23 import org.apache.maven.scm.CommandParameters;
24 import org.apache.maven.scm.NoSuchCommandScmException;
25 import org.apache.maven.scm.ScmBranch;
26 import org.apache.maven.scm.ScmBranchParameters;
27 import org.apache.maven.scm.ScmException;
28 import org.apache.maven.scm.ScmFileSet;
29 import org.apache.maven.scm.ScmRevision;
30 import org.apache.maven.scm.ScmTagParameters;
31 import org.apache.maven.scm.ScmVersion;
32 import org.apache.maven.scm.command.add.AddScmResult;
33 import org.apache.maven.scm.command.blame.BlameScmRequest;
34 import org.apache.maven.scm.command.blame.BlameScmResult;
35 import org.apache.maven.scm.command.branch.BranchScmResult;
36 import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
37 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
38 import org.apache.maven.scm.command.checkin.CheckInScmResult;
39 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
40 import org.apache.maven.scm.command.diff.DiffScmResult;
41 import org.apache.maven.scm.command.edit.EditScmResult;
42 import org.apache.maven.scm.command.export.ExportScmResult;
43 import org.apache.maven.scm.command.info.InfoScmResult;
44 import org.apache.maven.scm.command.list.ListScmResult;
45 import org.apache.maven.scm.command.login.LoginScmResult;
46 import org.apache.maven.scm.command.mkdir.MkdirScmResult;
47 import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
48 import org.apache.maven.scm.command.remove.RemoveScmResult;
49 import org.apache.maven.scm.command.status.StatusScmResult;
50 import org.apache.maven.scm.command.tag.TagScmResult;
51 import org.apache.maven.scm.command.unedit.UnEditScmResult;
52 import org.apache.maven.scm.command.update.UpdateScmResult;
53 import org.apache.maven.scm.log.ScmLogDispatcher;
54 import org.apache.maven.scm.log.ScmLogger;
55 import org.apache.maven.scm.repository.ScmRepository;
56 import org.apache.maven.scm.repository.ScmRepositoryException;
57 import org.apache.maven.scm.repository.UnknownRepositoryStructure;
58 import org.codehaus.plexus.util.StringUtils;
59
60 import java.io.File;
61 import java.util.ArrayList;
62 import java.util.Date;
63 import java.util.List;
64
65
66
67
68
69
70
71 public abstract class AbstractScmProvider
72 implements ScmProvider
73 {
74 private ScmLogDispatcher logDispatcher = new ScmLogDispatcher();
75
76
77
78
79
80
81
82
83 public String getScmSpecificFilename()
84 {
85 return null;
86 }
87
88
89
90
91 public String sanitizeTagName( String tag )
92 {
93
94 return tag;
95 }
96
97
98
99
100 public boolean validateTagName( String tag )
101 {
102
103 return true;
104 }
105
106
107
108
109 public List<String> validateScmUrl( String scmSpecificUrl, char delimiter )
110 {
111 List<String> messages = new ArrayList<String>();
112
113 try
114 {
115 makeProviderScmRepository( scmSpecificUrl, delimiter );
116 }
117 catch ( ScmRepositoryException e )
118 {
119 messages.add( e.getMessage() );
120 }
121
122 return messages;
123 }
124
125
126
127
128 public boolean requiresEditMode()
129 {
130 return false;
131 }
132
133
134
135
136
137
138
139
140 public AddScmResult add( ScmRepository repository, ScmFileSet fileSet )
141 throws ScmException
142 {
143 return add( repository, fileSet, (String) null );
144 }
145
146
147
148
149 public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message )
150 throws ScmException
151 {
152 login( repository, fileSet );
153
154 CommandParameters parameters = new CommandParameters();
155
156 parameters.setString( CommandParameter.MESSAGE, message == null ? "" : message );
157
158
159
160 parameters.setString( CommandParameter.BINARY, "false" );
161
162 return add( repository.getProviderRepository(), fileSet, parameters );
163 }
164
165 public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
166 throws ScmException
167 {
168 login( repository, fileSet );
169
170
171
172 parameters.setString( CommandParameter.BINARY, "false" );
173
174 return add( repository.getProviderRepository(), fileSet, parameters );
175 }
176
177 public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
178 throws ScmException
179 {
180 throw new NoSuchCommandScmException( "add" );
181 }
182
183
184
185
186 public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName )
187 throws ScmException
188 {
189 return branch( repository, fileSet, branchName, new ScmBranchParameters() );
190 }
191
192
193
194
195 public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message )
196 throws ScmException
197 {
198 ScmBranchParameters scmBranchParameters = new ScmBranchParameters();
199
200 if ( StringUtils.isNotEmpty( message ) )
201 {
202 scmBranchParameters.setMessage( message );
203 }
204
205 return branch( repository, fileSet, branchName, scmBranchParameters );
206 }
207
208 public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName,
209 ScmBranchParameters scmBranchParameters )
210 throws ScmException
211 {
212 login( repository, fileSet );
213
214 CommandParameters parameters = new CommandParameters();
215
216 parameters.setString( CommandParameter.BRANCH_NAME, branchName );
217
218 parameters.setScmBranchParameters( CommandParameter.SCM_BRANCH_PARAMETERS, scmBranchParameters );
219
220 return branch( repository.getProviderRepository(), fileSet, parameters );
221 }
222
223 protected BranchScmResult branch( ScmProviderRepository repository, ScmFileSet fileSet,
224 CommandParameters parameters )
225 throws ScmException
226 {
227 throw new NoSuchCommandScmException( "branch" );
228 }
229
230
231
232
233
234
235 public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
236 int numDays, String branch )
237 throws ScmException
238 {
239 return changeLog( repository, fileSet, startDate, endDate, numDays, branch, null );
240 }
241
242
243
244
245
246
247 public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
248 int numDays, String branch, String datePattern )
249 throws ScmException
250 {
251 ScmBranch scmBranch = null;
252
253 if ( StringUtils.isNotEmpty( branch ) )
254 {
255 scmBranch = new ScmBranch( branch );
256 }
257 return changeLog( repository, fileSet, startDate, endDate, numDays, scmBranch, null );
258
259 }
260
261
262
263
264 public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
265 int numDays, ScmBranch branch )
266 throws ScmException
267 {
268 return changeLog( repository, fileSet, startDate, endDate, numDays, branch, null );
269 }
270
271
272
273
274 public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
275 int numDays, ScmBranch branch, String datePattern )
276 throws ScmException
277 {
278 final ChangeLogScmRequest request = new ChangeLogScmRequest( repository, fileSet );
279 request.setDateRange( startDate, endDate );
280 request.setNumDays( numDays );
281 request.setScmBranch( branch );
282 request.setDatePattern( datePattern );
283 return changeLog( request );
284 }
285
286
287
288
289 public ChangeLogScmResult changeLog( ChangeLogScmRequest request )
290 throws ScmException
291 {
292 final ScmRepository scmRepository = request.getScmRepository();
293 final ScmFileSet scmFileSet = request.getScmFileSet();
294 login( scmRepository, scmFileSet );
295 return changelog( scmRepository.getProviderRepository(), scmFileSet, request.getCommandParameters() );
296 }
297
298
299
300
301
302
303
304 public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag )
305 throws ScmException
306 {
307 return changeLog( repository, fileSet, startTag, endTag, null );
308 }
309
310
311
312
313
314
315 public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag,
316 String datePattern )
317 throws ScmException
318 {
319 ScmVersion startRevision = null;
320 ScmVersion endRevision = null;
321
322 if ( StringUtils.isNotEmpty( startTag ) )
323 {
324 startRevision = new ScmRevision( startTag );
325 }
326
327 if ( StringUtils.isNotEmpty( endTag ) )
328 {
329 endRevision = new ScmRevision( endTag );
330 }
331
332 return changeLog( repository, fileSet, startRevision, endRevision, null );
333 }
334
335
336
337
338 public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
339 ScmVersion endVersion )
340 throws ScmException
341 {
342 return changeLog( repository, fileSet, startVersion, endVersion, null );
343 }
344
345
346
347
348 public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
349 ScmVersion endVersion, String datePattern )
350 throws ScmException
351 {
352 login( repository, fileSet );
353
354 CommandParameters parameters = new CommandParameters();
355
356 parameters.setScmVersion( CommandParameter.START_SCM_VERSION, startVersion );
357
358 parameters.setScmVersion( CommandParameter.END_SCM_VERSION, endVersion );
359
360 parameters.setString( CommandParameter.CHANGELOG_DATE_PATTERN, datePattern );
361
362 return changelog( repository.getProviderRepository(), fileSet, parameters );
363 }
364
365 protected ChangeLogScmResult changelog( ScmProviderRepository repository, ScmFileSet fileSet,
366 CommandParameters parameters )
367 throws ScmException
368 {
369 throw new NoSuchCommandScmException( "changelog" );
370 }
371
372
373
374
375
376
377
378 public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message )
379 throws ScmException
380 {
381 ScmVersion scmVersion = null;
382
383 if ( StringUtils.isNotEmpty( tag ) )
384 {
385 scmVersion = new ScmBranch( tag );
386 }
387
388 return checkIn( repository, fileSet, scmVersion, message );
389 }
390
391
392
393
394 public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String message )
395 throws ScmException
396 {
397 return checkIn( repository, fileSet, (ScmVersion) null, message );
398 }
399
400
401
402
403 public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
404 String message )
405 throws ScmException
406 {
407 login( repository, fileSet );
408
409 CommandParameters parameters = new CommandParameters();
410
411 parameters.setScmVersion( CommandParameter.SCM_VERSION, scmVersion );
412
413 parameters.setString( CommandParameter.MESSAGE, message );
414
415 return checkin( repository.getProviderRepository(), fileSet, parameters );
416 }
417
418 protected CheckInScmResult checkin( ScmProviderRepository repository, ScmFileSet fileSet,
419 CommandParameters parameters )
420 throws ScmException
421 {
422 throw new NoSuchCommandScmException( "checkin" );
423 }
424
425
426
427
428
429
430
431 public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag )
432 throws ScmException
433 {
434 return checkOut( repository, fileSet, tag, true );
435 }
436
437
438
439
440
441
442 public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag, boolean recursive )
443 throws ScmException
444 {
445 ScmVersion scmVersion = null;
446
447 if ( StringUtils.isNotEmpty( tag ) )
448 {
449 scmVersion = new ScmBranch( tag );
450 }
451
452 return checkOut( repository, fileSet, scmVersion, recursive );
453 }
454
455
456
457
458 public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet )
459 throws ScmException
460 {
461 return checkOut( repository, fileSet, (ScmVersion) null, true );
462 }
463
464
465
466
467 public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion )
468 throws ScmException
469 {
470 return checkOut( repository, fileSet, scmVersion, true );
471 }
472
473
474
475
476 public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, boolean recursive )
477 throws ScmException
478 {
479 return checkOut( repository, fileSet, (ScmVersion) null, recursive );
480 }
481
482
483
484
485 public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
486 boolean recursive )
487 throws ScmException
488 {
489 login( repository, fileSet );
490
491 CommandParameters parameters = new CommandParameters();
492
493 parameters.setScmVersion( CommandParameter.SCM_VERSION, scmVersion );
494
495 parameters.setString( CommandParameter.RECURSIVE, Boolean.toString( recursive ) );
496
497 return checkout( repository.getProviderRepository(), fileSet, parameters );
498 }
499
500 protected CheckOutScmResult checkout( ScmProviderRepository repository, ScmFileSet fileSet,
501 CommandParameters parameters )
502 throws ScmException
503 {
504 throw new NoSuchCommandScmException( "checkout" );
505 }
506
507
508
509
510
511
512 public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, String startRevision, String endRevision )
513 throws ScmException
514 {
515 ScmVersion startVersion = null;
516 ScmVersion endVersion = null;
517
518 if ( StringUtils.isNotEmpty( startRevision ) )
519 {
520 startVersion = new ScmRevision( startRevision );
521 }
522
523 if ( StringUtils.isNotEmpty( endRevision ) )
524 {
525 endVersion = new ScmRevision( endRevision );
526 }
527
528 return diff( repository, fileSet, startVersion, endVersion );
529 }
530
531
532
533
534 public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
535 ScmVersion endVersion )
536 throws ScmException
537 {
538 login( repository, fileSet );
539
540 CommandParameters parameters = new CommandParameters();
541
542 parameters.setScmVersion( CommandParameter.START_SCM_VERSION, startVersion );
543
544 parameters.setScmVersion( CommandParameter.END_SCM_VERSION, endVersion );
545
546 return diff( repository.getProviderRepository(), fileSet, parameters );
547 }
548
549 protected DiffScmResult diff( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
550 throws ScmException
551 {
552 throw new NoSuchCommandScmException( "diff" );
553 }
554
555
556
557
558 public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet )
559 throws ScmException
560 {
561 login( repository, fileSet );
562
563 CommandParameters parameters = new CommandParameters();
564
565 return edit( repository.getProviderRepository(), fileSet, parameters );
566 }
567
568 protected EditScmResult edit( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
569 throws ScmException
570 {
571 if ( getLogger().isWarnEnabled() )
572 {
573 getLogger().warn( "Provider " + this.getScmType() + " does not support edit operation." );
574 }
575
576 return new EditScmResult( "", null, null, true );
577 }
578
579
580
581
582
583
584 public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag )
585 throws ScmException
586 {
587 return export( repository, fileSet, tag, null );
588 }
589
590
591
592
593
594
595 public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory )
596 throws ScmException
597 {
598 ScmVersion scmVersion = null;
599
600 if ( StringUtils.isNotEmpty( tag ) )
601 {
602 scmVersion = new ScmRevision( tag );
603 }
604
605 return export( repository, fileSet, scmVersion, outputDirectory );
606 }
607
608
609
610
611 public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet )
612 throws ScmException
613 {
614 return export( repository, fileSet, (ScmVersion) null, null );
615 }
616
617
618
619
620 public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion )
621 throws ScmException
622 {
623 return export( repository, fileSet, scmVersion, null );
624 }
625
626
627
628
629 public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
630 String outputDirectory )
631 throws ScmException
632 {
633 login( repository, fileSet );
634
635 CommandParameters parameters = new CommandParameters();
636
637 parameters.setScmVersion( CommandParameter.SCM_VERSION, scmVersion );
638
639 parameters.setString( CommandParameter.OUTPUT_DIRECTORY, outputDirectory );
640
641 return export( repository.getProviderRepository(), fileSet, parameters );
642 }
643
644 protected ExportScmResult export( ScmProviderRepository repository, ScmFileSet fileSet,
645 CommandParameters parameters )
646 throws ScmException
647 {
648 throw new NoSuchCommandScmException( "export" );
649 }
650
651
652
653
654 public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag )
655 throws ScmException
656 {
657 ScmVersion scmVersion = null;
658
659 if ( StringUtils.isNotEmpty( tag ) )
660 {
661 scmVersion = new ScmRevision( tag );
662 }
663
664 return list( repository, fileSet, recursive, scmVersion );
665 }
666
667
668
669
670 public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion scmVersion )
671 throws ScmException
672 {
673 login( repository, fileSet );
674
675 CommandParameters parameters = new CommandParameters();
676
677 parameters.setString( CommandParameter.RECURSIVE, Boolean.toString( recursive ) );
678
679 if ( scmVersion != null )
680 {
681 parameters.setScmVersion( CommandParameter.SCM_VERSION, scmVersion );
682 }
683
684 return list( repository.getProviderRepository(), fileSet, parameters );
685 }
686
687
688
689
690
691
692
693
694
695
696
697 protected ListScmResult list( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
698 throws ScmException
699 {
700 throw new NoSuchCommandScmException( "list" );
701 }
702
703
704
705
706 public MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal )
707 throws ScmException
708 {
709 login( repository, fileSet );
710
711 CommandParameters parameters = new CommandParameters();
712
713 if ( message == null )
714 {
715 message = "";
716 if ( !createInLocal )
717 {
718 getLogger().warn( "Commit message is empty!" );
719 }
720 }
721
722 parameters.setString( CommandParameter.MESSAGE, message );
723
724 parameters.setString( CommandParameter.SCM_MKDIR_CREATE_IN_LOCAL, Boolean.toString( createInLocal ) );
725
726 return mkdir( repository.getProviderRepository(), fileSet, parameters );
727 }
728
729
730
731
732
733
734
735
736
737
738 protected MkdirScmResult mkdir( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
739 throws ScmException
740 {
741 throw new NoSuchCommandScmException( "mkdir" );
742 }
743
744 private void login( ScmRepository repository, ScmFileSet fileSet )
745 throws ScmException
746 {
747 LoginScmResult result = login( repository.getProviderRepository(), fileSet, new CommandParameters() );
748
749 if ( !result.isSuccess() )
750 {
751 throw new ScmException( "Can't login.\n" + result.getCommandOutput() );
752 }
753 }
754
755 protected LoginScmResult login( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
756 throws ScmException
757 {
758 return new LoginScmResult( null, null, null, true );
759 }
760
761
762
763
764 public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message )
765 throws ScmException
766 {
767 login( repository, fileSet );
768
769 CommandParameters parameters = new CommandParameters();
770
771 parameters.setString( CommandParameter.MESSAGE, message == null ? "" : message );
772
773 return remove( repository.getProviderRepository(), fileSet, parameters );
774 }
775
776 protected RemoveScmResult remove( ScmProviderRepository repository, ScmFileSet fileSet,
777 CommandParameters parameters )
778 throws ScmException
779 {
780 throw new NoSuchCommandScmException( "remove" );
781 }
782
783
784
785
786 public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet )
787 throws ScmException
788 {
789 login( repository, fileSet );
790
791 CommandParameters parameters = new CommandParameters();
792
793 return status( repository.getProviderRepository(), fileSet, parameters );
794 }
795
796 protected StatusScmResult status( ScmProviderRepository repository, ScmFileSet fileSet,
797 CommandParameters parameters )
798 throws ScmException
799 {
800 throw new NoSuchCommandScmException( "status" );
801 }
802
803
804
805
806 public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName )
807 throws ScmException
808 {
809 return tag( repository, fileSet, tagName, new ScmTagParameters() );
810 }
811
812
813
814
815 public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message )
816 throws ScmException
817 {
818 login( repository, fileSet );
819
820 CommandParameters parameters = new CommandParameters();
821
822 parameters.setString( CommandParameter.TAG_NAME, tagName );
823
824 if ( StringUtils.isNotEmpty( message ) )
825 {
826 parameters.setString( CommandParameter.MESSAGE, message );
827 }
828
829 ScmTagParameters scmTagParameters = new ScmTagParameters( message );
830
831 parameters.setScmTagParameters( CommandParameter.SCM_TAG_PARAMETERS, scmTagParameters );
832
833 return tag( repository.getProviderRepository(), fileSet, parameters );
834 }
835
836
837
838
839 public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName,
840 ScmTagParameters scmTagParameters )
841 throws ScmException
842 {
843 login( repository, fileSet );
844
845 CommandParameters parameters = new CommandParameters();
846
847 parameters.setString( CommandParameter.TAG_NAME, tagName );
848
849 parameters.setScmTagParameters( CommandParameter.SCM_TAG_PARAMETERS, scmTagParameters );
850
851 return tag( repository.getProviderRepository(), fileSet, parameters );
852 }
853
854 protected TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
855 throws ScmException
856 {
857 throw new NoSuchCommandScmException( "tag" );
858 }
859
860
861
862
863 public UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet )
864 throws ScmException
865 {
866 login( repository, fileSet );
867
868 CommandParameters parameters = new CommandParameters();
869
870 return unedit( repository.getProviderRepository(), fileSet, parameters );
871 }
872
873 protected UnEditScmResult unedit( ScmProviderRepository repository, ScmFileSet fileSet,
874 CommandParameters parameters )
875 throws ScmException
876 {
877 if ( getLogger().isWarnEnabled() )
878 {
879 getLogger().warn( "Provider " + this.getScmType() + " does not support unedit operation." );
880 }
881
882 return new UnEditScmResult( "", null, null, true );
883 }
884
885
886
887
888
889
890 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag )
891 throws ScmException
892 {
893 return update( repository, fileSet, tag, true );
894 }
895
896
897
898
899
900
901 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog )
902 throws ScmException
903 {
904 return update( repository, fileSet, tag, "", runChangelog );
905 }
906
907
908
909
910 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet )
911 throws ScmException
912 {
913 return update( repository, fileSet, (ScmVersion) null, true );
914 }
915
916
917
918
919 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion )
920 throws ScmException
921 {
922 return update( repository, fileSet, scmVersion, true );
923 }
924
925
926
927
928 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog )
929 throws ScmException
930 {
931 return update( repository, fileSet, (ScmVersion) null, "", runChangelog );
932 }
933
934
935
936
937 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
938 boolean runChangelog )
939 throws ScmException
940 {
941 return update( repository, fileSet, scmVersion, "", runChangelog );
942 }
943
944
945
946
947
948
949 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern )
950 throws ScmException
951 {
952 return update( repository, fileSet, tag, datePattern, true );
953 }
954
955
956
957
958 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
959 String datePattern )
960 throws ScmException
961 {
962 return update( repository, fileSet, scmVersion, datePattern, true );
963 }
964
965
966
967
968 private UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern,
969 boolean runChangelog )
970 throws ScmException
971 {
972 ScmBranch scmBranch = null;
973
974 if ( StringUtils.isNotEmpty( tag ) )
975 {
976 scmBranch = new ScmBranch( tag );
977 }
978
979 return update( repository, fileSet, scmBranch, datePattern, runChangelog );
980 }
981
982 private UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
983 String datePattern, boolean runChangelog )
984 throws ScmException
985 {
986 login( repository, fileSet );
987
988 CommandParameters parameters = new CommandParameters();
989
990 parameters.setScmVersion( CommandParameter.SCM_VERSION, scmVersion );
991
992 parameters.setString( CommandParameter.CHANGELOG_DATE_PATTERN, datePattern );
993
994 parameters.setString( CommandParameter.RUN_CHANGELOG_WITH_UPDATE, String.valueOf( runChangelog ) );
995
996 return update( repository.getProviderRepository(), fileSet, parameters );
997 }
998
999
1000
1001
1002
1003
1004 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate )
1005 throws ScmException
1006 {
1007 return update( repository, fileSet, tag, lastUpdate, null );
1008 }
1009
1010
1011
1012
1013 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
1014 Date lastUpdate )
1015 throws ScmException
1016 {
1017 return update( repository, fileSet, scmVersion, lastUpdate, null );
1018 }
1019
1020
1021
1022
1023
1024
1025 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate,
1026 String datePattern )
1027 throws ScmException
1028 {
1029 ScmBranch scmBranch = null;
1030
1031 if ( StringUtils.isNotEmpty( tag ) )
1032 {
1033 scmBranch = new ScmBranch( tag );
1034 }
1035
1036 return update( repository, fileSet, scmBranch, lastUpdate, datePattern );
1037 }
1038
1039
1040
1041
1042 public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, Date lastUpdate,
1043 String datePattern )
1044 throws ScmException
1045 {
1046 login( repository, fileSet );
1047
1048 CommandParameters parameters = new CommandParameters();
1049
1050 parameters.setScmVersion( CommandParameter.SCM_VERSION, scmVersion );
1051
1052 if ( lastUpdate != null )
1053 {
1054 parameters.setDate( CommandParameter.START_DATE, lastUpdate );
1055 }
1056
1057 parameters.setString( CommandParameter.CHANGELOG_DATE_PATTERN, datePattern );
1058
1059 parameters.setString( CommandParameter.RUN_CHANGELOG_WITH_UPDATE, "true" );
1060
1061 return update( repository.getProviderRepository(), fileSet, parameters );
1062 }
1063
1064 protected UpdateScmResult update( ScmProviderRepository repository, ScmFileSet fileSet,
1065 CommandParameters parameters )
1066 throws ScmException
1067 {
1068 throw new NoSuchCommandScmException( "update" );
1069 }
1070
1071
1072
1073
1074 public BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename )
1075 throws ScmException
1076 {
1077 login( repository, fileSet );
1078
1079 CommandParameters parameters = new CommandParameters();
1080
1081 parameters.setString( CommandParameter.FILE, filename );
1082
1083 return blame( repository.getProviderRepository(), fileSet, parameters );
1084 }
1085
1086 protected BlameScmResult blame( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
1087 throws ScmException
1088 {
1089 throw new NoSuchCommandScmException( "blame" );
1090 }
1091
1092 public BlameScmResult blame( BlameScmRequest blameScmRequest )
1093 throws ScmException
1094 {
1095 return blame( blameScmRequest.getScmRepository().getProviderRepository(), blameScmRequest.getScmFileSet(),
1096 blameScmRequest.getCommandParameters() );
1097 }
1098
1099 public InfoScmResult info( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
1100 throws ScmException
1101 {
1102 return null;
1103 }
1104
1105 public RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet,
1106 CommandParameters parameters )
1107 throws ScmException
1108 {
1109 return null;
1110 }
1111
1112
1113
1114
1115
1116
1117
1118
1119 public void addListener( ScmLogger logger )
1120 {
1121 logDispatcher.addListener( logger );
1122 }
1123
1124 public ScmLogger getLogger()
1125 {
1126 return logDispatcher;
1127 }
1128
1129
1130
1131
1132 public ScmProviderRepository makeProviderScmRepository( File path )
1133 throws ScmRepositoryException, UnknownRepositoryStructure
1134 {
1135 throw new UnknownRepositoryStructure();
1136 }
1137 }