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 <[email protected]>
Authored: Fri Jul 18 07:03:06 2014 +0200
Committer: imod <[email protected]>
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:[email protected]";>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( "[email protected]", 
head.getCommitterIdent().getEmailAddress() );
+        assertEquals( "dude", head.getAuthorIdent().getName() );
+        assertEquals( "[email protected]", 
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();
 

Reply via email to