Skip to content

Commit

Permalink
[FIXED JENKINS-14026] git plugin doesn't support branch name contains
Browse files Browse the repository at this point in the history
slash ("/")

The main issue is to determine whether an input containing a slash is a
qualified branch (remote followed by branch name) or a branch name on
which the remote name needs to be prepended.

When there is only one remote involved, that can be solved by prepending
the remote name to the branch name if the branch name doesn't already
start with the remote name.

Note : This commit doesn't cover cases where the given branch name is a
pattern
  • Loading branch information
Vlatombe committed Jan 9, 2014
1 parent b75d1e2 commit 13c2b08
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/main/java/hudson/plugins/git/GitSCM.java
Expand Up @@ -435,6 +435,10 @@ private String getSingleBranch(EnvVars env) {
// Check for empty string - replace with "**" when seen.
if (branch.equals("")) {
branch = "**";
} else if (!branch.startsWith(repository)) {
// we can hit this case if the given branch name contains a slash.
// Since we have a single repository, it makes sense to prepend it anyway
branch = repository + "/" + branch;
}

return branch;
Expand Down
14 changes: 14 additions & 0 deletions src/test/java/hudson/plugins/git/GitSCMTest.java
Expand Up @@ -494,6 +494,20 @@ public void testBranchIsAvailableInEvironment() throws Exception {
assertEquals("origin/master", getEnvVars(project).get(GitSCM.GIT_BRANCH));
}

public void testBranchContainsSlash() throws Exception {
FreeStyleProject project = setupSimpleProject("my/branch");

final String commitFile1 = "commitFile1";
commit(commitFile1, johnDoe, "Commit number 1");
git.branch("my/branch");
git.checkout("my/branch");
final String commitFile2 = "commitFile2";
commit(commitFile2, johnDoe, "Commit number 2");
build(project, Result.SUCCESS, commitFile1, commitFile2);

assertEquals("origin/my/branch", getEnvVars(project).get(GitSCM.GIT_BRANCH));
}

// For HUDSON-7411
public void testNodeEnvVarsAvailable() throws Exception {
FreeStyleProject project = setupSimpleProject("master");
Expand Down

0 comments on commit 13c2b08

Please sign in to comment.