1 package org.apache.maven.scm.provider.hg.command.diff;
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.ScmException;
23 import org.apache.maven.scm.ScmFileSet;
24 import org.apache.maven.scm.ScmResult;
25 import org.apache.maven.scm.ScmVersion;
26 import org.apache.maven.scm.command.Command;
27 import org.apache.maven.scm.command.diff.AbstractDiffCommand;
28 import org.apache.maven.scm.command.diff.DiffScmResult;
29 import org.apache.maven.scm.provider.ScmProviderRepository;
30 import org.apache.maven.scm.provider.hg.HgUtils;
31 import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
32 import org.codehaus.plexus.util.StringUtils;
33
34
35
36
37
38 public class HgDiffCommand
39 extends AbstractDiffCommand
40 implements Command
41 {
42
43 protected DiffScmResult executeDiffCommand( ScmProviderRepository repo, ScmFileSet fileSet,
44 ScmVersion startRevision, ScmVersion endRevision )
45 throws ScmException
46 {
47 String[] diffCmd;
48 if ( startRevision != null && !StringUtils.isEmpty( startRevision.getName() ) )
49 {
50 String revArg = startRevision.getName();
51 if ( endRevision != null && !StringUtils.isEmpty( endRevision.getName() ) )
52 {
53 revArg += ".." + endRevision;
54 }
55 diffCmd = new String[] { HgCommandConstants.DIFF_CMD, HgCommandConstants.REVISION_OPTION, revArg };
56 }
57 else
58 {
59 diffCmd = new String[] { HgCommandConstants.DIFF_CMD };
60 }
61
62 diffCmd = HgUtils.expandCommandLine( diffCmd, fileSet );
63 HgDiffConsumer consumer = new HgDiffConsumer( getLogger(), fileSet.getBasedir() );
64
65 ScmResult result = HgUtils.execute( consumer, getLogger(), fileSet.getBasedir(), diffCmd );
66
67 return new DiffScmResult( consumer.getChangedFiles(), consumer.getDifferences(), consumer.getPatch(), result );
68 }
69 }