You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by im...@apache.org on 2014/07/18 18:40:41 UTC

[6/7] git commit: allow enforcement of username as committer/author

allow enforcement of username as committer/author


Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/e669c9a0
Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/e669c9a0
Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/e669c9a0

Branch: refs/heads/master
Commit: e669c9a0bfd215bfd72a29fc7e9b12cc9f7c0117
Parents: 3047841
Author: imod <do...@fortysix.ch>
Authored: Fri Jul 18 07:03:06 2014 +0200
Committer: imod <do...@fortysix.ch>
Committed: Fri Jul 18 07:03:06 2014 +0200

----------------------------------------------------------------------
 .../command/checkin/JGitCheckInCommand.java     | 14 +++++++++++---
 .../src/site/markdown/index.md.vm               |  4 ++++
 ...GitCheckInCommandCommitterAuthorTckTest.java | 20 ++++++++++++++++++++
 3 files changed, 35 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-scm/blob/e669c9a0/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java
index a85ebd4..b998638 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommand.java
@@ -53,7 +53,9 @@ import java.util.Set;
  * </ol>
  * the "maven-scm" config can be configured like this: <br>
  * the default email domain to be used (will be used to create an email from the username passed to maven):<br>
- * <code>git config --global maven-scm.maildomain "mycomp.com"</code> <br>
+ * <code>git config --global maven-scm.maildomain mycomp.com</code> <br>
+ * you can also enforce the usage of the username for the author and committer:<br>
+ * <code>git config --global maven-scm.forceUsername true</code> <br>
  * 
  * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
  * @author Dominik Bartholdi (imod)
@@ -68,6 +70,8 @@ public class JGitCheckInCommand
 
     protected static final String GIT_MAILDOMAIN = "maildomain";
 
+    protected static final String GIT_FORCE = "forceUsername";
+
     /**
      * {@inheritDoc}
      */
@@ -170,10 +174,12 @@ public class JGitCheckInCommand
 
     private UserInfo getCommitter( ScmProviderRepository repo, Git git )
     {
+        boolean forceMvnUser = git.getRepository().getConfig().getBoolean( GIT_MAVEN_SECTION, GIT_FORCE, false );
+
         // git config
         UserConfig user = git.getRepository().getConfig().get( UserConfig.KEY );
         String committerName = null;
-        if ( !user.isCommitterNameImplicit() )
+        if ( !forceMvnUser && !user.isCommitterNameImplicit() )
         {
             committerName = user.getCommitterName();
         }
@@ -213,10 +219,12 @@ public class JGitCheckInCommand
 
     private UserInfo getAuthor( ScmProviderRepository repo, Git git )
     {
+        boolean forceMvnUser = git.getRepository().getConfig().getBoolean( GIT_MAVEN_SECTION, GIT_FORCE, false );
+
         // git config
         UserConfig user = git.getRepository().getConfig().get( UserConfig.KEY );
         String authorName = null;
-        if ( !user.isAuthorNameImplicit() )
+        if ( !forceMvnUser && !user.isAuthorNameImplicit() )
         {
             authorName = user.getAuthorName();
         }

http://git-wip-us.apache.org/repos/asf/maven-scm/blob/e669c9a0/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/site/markdown/index.md.vm
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/site/markdown/index.md.vm b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/site/markdown/index.md.vm
index e104bc2..d95a1a6 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/site/markdown/index.md.vm
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/site/markdown/index.md.vm
@@ -86,6 +86,10 @@ If you don't define a user in the .gitconfig, then the user passed as "username"
 the hostname to be used as the domain. you can configure a default domain in the .gitconfig as follows:   
 
 	git config --global maven-scm.maildomain mycomp.com	
+	
+You can also enforce the usage of the "username" for the author and committer (omit the default in the .gitconfig):
+	
+	git config --global maven-scm.forceUsername true
 
 
 			

http://git-wip-us.apache.org/repos/asf/maven-scm/blob/e669c9a0/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommandCommitterAuthorTckTest.java
----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommandCommitterAuthorTckTest.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommandCommitterAuthorTckTest.java
index 87bb9c0..10fdb85 100644
--- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommandCommitterAuthorTckTest.java
+++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/test/java/org/apache/maven/scm/provider/git/jgit/command/checkin/JGitCheckInCommandCommitterAuthorTckTest.java
@@ -141,6 +141,26 @@ public class JGitCheckInCommandCommitterAuthorTckTest
         git = Git.open( getWorkingCopy() );
         config = git.getRepository().getConfig();
         unsetConfig( config );
+        config.setString( "user", null, "name", "dbartholdi" );
+        config.setBoolean( JGitCheckInCommand.GIT_MAVEN_SECTION, null, JGitCheckInCommand.GIT_FORCE, true );
+        config.setString( JGitCheckInCommand.GIT_MAVEN_SECTION, null, JGitCheckInCommand.GIT_MAILDOMAIN, "anycomp.com" );
+        config.save();
+
+        // make a change with an user on the commandline
+        createAndCommitFile( fooJava, "dude" );
+
+        // check new commit is done with new maven user in config
+        head = getHeadCommit( git.getRepository() );
+        assertEquals( "dude", head.getCommitterIdent().getName() );
+        assertEquals( "dude@anycomp.com", head.getCommitterIdent().getEmailAddress() );
+        assertEquals( "dude", head.getAuthorIdent().getName() );
+        assertEquals( "dude@anycomp.com", head.getAuthorIdent().getEmailAddress() );
+        JGitUtils.closeRepo( git );
+
+        // unset a user and maven user but set default mail domain
+        git = Git.open( getWorkingCopy() );
+        config = git.getRepository().getConfig();
+        unsetConfig( config );
         config.setString( JGitCheckInCommand.GIT_MAVEN_SECTION, null, JGitCheckInCommand.GIT_MAILDOMAIN, "anycomp.com" );
         config.save();