]> source.dussan.org Git - jgit.git/commitdiff
repo: Do not use search path to find refs/remotes/origin/<branch> 53/60853/5
authorJonathan Nieder <jrn@google.com>
Thu, 19 Nov 2015 20:47:18 +0000 (12:47 -0800)
committerJonathan Nieder <jrn@google.com>
Wed, 25 Nov 2015 22:05:24 +0000 (14:05 -0800)
When running from a non-bare repository, "jgit repo" checks whether
the rev passed in is a sha1 or branch name and in the latter case will
check out origin/<branch>.

We are expecting refs/remotes/origin/<branch>, but as a side effect of
using getRef we also end up looking for refs/origin/<branch>,
refs/heads/origin/<branch>, and so on.  Avoid that by using exactRef
instead.

Signed-off-by: Jonathan Nieder <jrn@google.com>
Change-Id: I670b2e48a88138a1f2104ea201baa958e9edbddb

org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java

index 1d2d3bfaaff15cfef7358a8377eaa434a7907052..ff9f233aa583701b311579bd49f8c9d3624135ce 100644 (file)
@@ -42,6 +42,9 @@
  */
 package org.eclipse.jgit.gitrepo;
 
+import static org.eclipse.jgit.lib.Constants.DEFAULT_REMOTE_NAME;
+import static org.eclipse.jgit.lib.Constants.R_REMOTES;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -574,7 +577,7 @@ public class RepoCommand extends GitCommand<RevCommit> {
        private static String findRef(String ref, Repository repo)
                        throws IOException {
                if (!ObjectId.isId(ref)) {
-                       Ref r = repo.getRef(Constants.DEFAULT_REMOTE_NAME + "/" + ref); //$NON-NLS-1$
+                       Ref r = repo.exactRef(R_REMOTES + DEFAULT_REMOTE_NAME + "/" + ref); //$NON-NLS-1$
                        if (r != null)
                                return r.getName();
                }