[SCM-631] Mercurial SCM provider works with repository like centralized SCM's do
Submitted by Alexander Betaev.
Patch applyed with modifications due to some changes applyed before.
git-svn-id: https://svn.apache.org/repos/asf/maven/scm/trunk@1207290 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/HgCommandConstants.java b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/HgCommandConstants.java
index 024ca93..37676a3 100644
--- a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/HgCommandConstants.java
+++ b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/HgCommandConstants.java
@@ -34,6 +34,7 @@
private HgCommandConstants()
{
+ // no o
}
/**
@@ -145,5 +146,6 @@
public static final String NEW_BRANCH_OPTION = "--new-branch";
+ public static final String CLEAN_OPTION = "-c";
}
diff --git a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/changelog/HgChangeLogConsumer.java b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/changelog/HgChangeLogConsumer.java
index c46c1ab..09e1793 100644
--- a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/changelog/HgChangeLogConsumer.java
+++ b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/changelog/HgChangeLogConsumer.java
@@ -207,7 +207,7 @@
currentChange.addFile( changeFile );
}
}
- else
+ else if ( line.length() > 0 )
{
if ( getLogger().isWarnEnabled() )
{
diff --git a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkin/HgCheckInCommand.java b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkin/HgCheckInCommand.java
index 6a9836a..9957fbd 100644
--- a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkin/HgCheckInCommand.java
+++ b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkin/HgCheckInCommand.java
@@ -63,7 +63,7 @@
File workingDir = fileSet.getBasedir();
String branchName = HgUtils.getCurrentBranchName( getLogger(), workingDir );
- boolean differentOutgoingBranch = HgUtils.differentOutgoingBranchFound( getLogger(), workingDir, branchName );
+ boolean differentOutgoingBranch = repo.isPushChanges() ? HgUtils.differentOutgoingBranchFound( getLogger(), workingDir, branchName ) : false;
// Get files that will be committed (if not specified in fileSet)
List<ScmFile> commitedFiles = new ArrayList<ScmFile>();
diff --git a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java
index a98c2e2..8151ad2 100644
--- a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java
+++ b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/checkout/HgCheckOutCommand.java
@@ -74,12 +74,23 @@
// Do the actual checkout
List<String> cmdList = new ArrayList<String>();
- cmdList.add( HgCommandConstants.CLONE_CMD );
+ if ( repo.isPushChanges() )
+ {
+ cmdList.add( HgCommandConstants.CLONE_CMD );
+ }
+ else
+ {
+ cmdList.add( HgCommandConstants.UPDATE_CMD );
+ }
if ( scmVersion != null && !StringUtils.isEmpty( scmVersion.getName() ) )
{
cmdList.add( HgCommandConstants.REVISION_OPTION );
cmdList.add( scmVersion.getName() );
}
+ if ( !repo.isPushChanges() )
+ {
+ cmdList.add( HgCommandConstants.CLEAN_OPTION );
+ }
cmdList.add( url );
cmdList.add( checkoutDir.getAbsolutePath() );
String[] checkoutCmd = cmdList.toArray( new String[0] );
diff --git a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/update/HgUpdateCommand.java b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/update/HgUpdateCommand.java
index 73248ee..508f078 100644
--- a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/update/HgUpdateCommand.java
+++ b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/command/update/HgUpdateCommand.java
@@ -59,11 +59,19 @@
{
File workingDir = fileSet.getBasedir();
+ String[] updateCmd;
// Update branch
- String[] updateCmd = new String[] {
- HgCommandConstants.PULL_CMD,
- HgCommandConstants.REVISION_OPTION,
- tag != null && !StringUtils.isEmpty( tag.getName() ) ? tag.getName() : "tip" };
+ if (repo.isPushChanges()) {
+ updateCmd = new String[] {
+ HgCommandConstants.PULL_CMD,
+ HgCommandConstants.REVISION_OPTION,
+ tag != null && !StringUtils.isEmpty( tag.getName() ) ? tag.getName() : "tip" };
+ } else {
+ updateCmd = new String[] {
+ HgCommandConstants.UPDATE_CMD,
+ tag != null && !StringUtils.isEmpty( tag.getName() ) ? tag.getName() : "tip",
+ HgCommandConstants.CLEAN_OPTION };
+ }
ScmResult updateResult = HgUtils.execute( new HgConsumer( getLogger() ), getLogger(), workingDir, updateCmd );
if ( !updateResult.isSuccess() )
@@ -99,8 +107,10 @@
}
}
- String[] hgUpdateCmd = new String[] { HgCommandConstants.UPDATE_CMD };
- HgUtils.execute( new HgConsumer( getLogger() ), getLogger(), workingDir, hgUpdateCmd );
+ if ( repo.isPushChanges() ) {
+ String[] hgUpdateCmd = new String[] { HgCommandConstants.UPDATE_CMD };
+ HgUtils.execute( new HgConsumer( getLogger() ), getLogger(), workingDir, hgUpdateCmd );
+ }
return new UpdateScmResultWithRevision( updatedFiles, new ArrayList<ChangeSet>(0), String.valueOf( currentRevision ), diffResult );
}