simplify and add more tests
Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/d114bfbb Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/d114bfbb Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/d114bfbb Branch: refs/heads/master Commit: d114bfbb052b7eef8d73d2ade38f94159704abf0 Parents: 6a4ccf5 Author: imod <[email protected]> Authored: Fri Jul 18 06:15:20 2014 +0200 Committer: imod <[email protected]> Committed: Fri Jul 18 06:15:20 2014 +0200 ---------------------------------------------------------------------- .../command/checkin/JGitCheckInCommand.java | 34 +++--------- ...GitCheckInCommandCommitterAuthorTckTest.java | 58 ++++++++++++-------- 2 files changed, 44 insertions(+), 48 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-scm/blob/d114bfbb/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 7e91cf0..d6e55d4 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 @@ -47,7 +47,6 @@ import java.util.Set; /** * This provider uses the following strategy to discover the committer and author name/mail for a commit: * <ol> - * <li>"maven-scm" section in .gitconfig</li> * <li>"user" section in .gitconfig</li> * <li>"username" passed to maven execution</li> * <li>default git config (system user and hostname for email)</li> @@ -55,10 +54,6 @@ import java.util.Set; * * the "maven-scm" config can be configured like this: * - * the user to be used:<br> - * <code>git config --global maven-scm.name "dude"</code> - * <br> - * <code>git config --global maven-scm.email "[email protected]"</code> * <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> @@ -75,10 +70,6 @@ public class JGitCheckInCommand protected static final String GIT_MAVEN_SECTION = "maven-scm"; - protected static final String GIT_USERNAME = "name"; - - protected static final String GIT_EMAIL = "email"; - protected static final String GIT_MAILDOMAIN = "maildomain"; /** @@ -180,12 +171,10 @@ public class JGitCheckInCommand private UserInfo getCommitter( ScmProviderRepository repo, Git git ) { - // mvn scm git config - String committerName = git.getRepository().getConfig().getString( GIT_MAVEN_SECTION, null, GIT_USERNAME ); - // git config UserConfig user = git.getRepository().getConfig().get(UserConfig.KEY); - if ( StringUtils.isBlank( committerName ) && !user.isCommitterNameImplicit() ) + String committerName = null; + if ( !user.isCommitterNameImplicit() ) { committerName = user.getCommitterName(); } @@ -201,13 +190,10 @@ public class JGitCheckInCommand { committerName = user.getCommitterName(); } - - // maven scm git config - String committerMail = git.getRepository().getConfig().getString( GIT_MAVEN_SECTION, null, GIT_EMAIL ); - // git config - if ( StringUtils.isBlank( committerMail ) && !user.isCommitterEmailImplicit() ) + String committerMail = null; + if ( !user.isCommitterEmailImplicit() ) { committerMail = user.getCommitterEmail(); } @@ -226,12 +212,10 @@ public class JGitCheckInCommand private UserInfo getAuthor( ScmProviderRepository repo, Git git ) { - // mvn scm config - String authorName = git.getRepository().getConfig().getString( GIT_MAVEN_SECTION, null, GIT_USERNAME ); - // git config UserConfig user = git.getRepository().getConfig().get(UserConfig.KEY); - if ( StringUtils.isBlank( authorName ) && !user.isAuthorNameImplicit() ) + String authorName = null; + if ( !user.isAuthorNameImplicit() ) { authorName = user.getAuthorName(); } @@ -248,11 +232,9 @@ public class JGitCheckInCommand authorName = user.getAuthorName(); } - // maven scm git config - String authorMail = git.getRepository().getConfig().getString( GIT_MAVEN_SECTION, null, GIT_EMAIL ); - // git config - if ( StringUtils.isBlank( authorMail ) && !user.isAuthorEmailImplicit() ) + String authorMail = null; + if ( !user.isAuthorEmailImplicit() ) { authorMail = user.getAuthorEmail(); } http://git-wip-us.apache.org/repos/asf/maven-scm/blob/d114bfbb/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 260be1c..37e1842 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 @@ -117,27 +117,6 @@ public class JGitCheckInCommandCommitterAuthorTckTest assertEquals( "dbartholdi", head.getCommitterIdent().getName() ); assertFalse( "no mail domain is configured, git system default should be used", head.getCommitterIdent().getEmailAddress().contains( "dbartholdi" ) ); JGitUtils.closeRepo( git ); - - - - // set a user in the maven section of the git config - git = Git.open( getWorkingCopy() ); - config = git.getRepository().getConfig(); - unsetConfig(config); - config.setString( JGitCheckInCommand.GIT_MAVEN_SECTION, null, JGitCheckInCommand.GIT_USERNAME, "Dude" ); - config.setString( JGitCheckInCommand.GIT_MAVEN_SECTION, null, JGitCheckInCommand.GIT_EMAIL, "[email protected]" ); - config.save(); - - // make a change - createAndCommitFile( fooJava, null ); - - // check new commit is done with new maven user in config - head = getHeadCommit( git.getRepository() ); - assertEquals( "Dude", head.getCommitterIdent().getName() ); - assertEquals( "Dude", head.getAuthorIdent().getName() ); - assertEquals( "[email protected]", head.getCommitterIdent().getEmailAddress() ); - assertEquals( "[email protected]", head.getAuthorIdent().getEmailAddress() ); - JGitUtils.closeRepo( git ); // unset a user and maven user but set default mail domain @@ -158,13 +137,27 @@ public class JGitCheckInCommandCommitterAuthorTckTest 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(); + + // make a change with no username given + createAndCommitFile( fooJava, null ); + + // check new commit does not contain the configured email domain + head = getHeadCommit( git.getRepository() ); + assertFalse( head.getCommitterIdent().getEmailAddress().contains("anycomp.com") ); + assertFalse( head.getAuthorIdent().getEmailAddress().contains("anycomp.com") ); + JGitUtils.closeRepo( git ); // unset a user and full maven section git = Git.open( getWorkingCopy() ); config = git.getRepository().getConfig(); unsetConfig(config); config.save(); - config.getString("user", null, "name"); // make a change with an user on the commandline createAndCommitFile( fooJava, "dundy" ); @@ -176,8 +169,29 @@ public class JGitCheckInCommandCommitterAuthorTckTest assertTrue( "the maven user (from parameter) name must be in the committer mail when nothing else is configured", head.getCommitterIdent().getEmailAddress().contains( "dundy" ) ); assertTrue( "the user name (from parameter) must be in the author mail when nothing else is configured", head.getAuthorIdent().getEmailAddress().contains( "dundy" ) ); JGitUtils.closeRepo( git ); + + + // unset all configs + git = Git.open( getWorkingCopy() ); + config = git.getRepository().getConfig(); + unsetConfig(config); + config.save(); + + // make a change with no user on the commandline + createAndCommitFile( fooJava, null ); + + // check new commit is has a committer/author with email set + head = getHeadCommit( git.getRepository() ); + assertNotNull( head.getCommitterIdent().getName() ); + assertNotNull( head.getAuthorIdent().getName() ); + assertNotNull( head.getCommitterIdent().getEmailAddress() ); + assertNotNull( head.getAuthorIdent().getEmailAddress() ); + JGitUtils.closeRepo( git ); } + /** + * make sure the local .gitconfig is in a clean state + */ private void unsetConfig(StoredConfig config) { config.unsetSection( "user", null ); config.unset( "user", null, "name" );
