Git development
 help / color / mirror / Atom feed
From: Junio C Hamano <junkio@cox.net>
To: git@vger.kernel.org
Subject: [PATCH] Remove misguided branch disambiguation.
Date: Sat, 17 Dec 2005 01:37:38 -0800	[thread overview]
Message-ID: <7virto12u5.fsf@assigned-by-dhcp.cox.net> (raw)

This removes the misguided attempt to refuse processing a branch
name xyzzy and insist it to be given as either heads/xyzzy or
tags/xyzzy when a tag xyzzy exists.  There was no reason to do
so --- the search order was predictable and well defined, so if
the user says xyzzy we should have taken the tag xyzzy in such a
case without complaining.

This incidentally fixes another subtle bug related to this.  If
such a duplicate branch/tag name happened to be a unique valid
prefix of an existing commit object name (say, "beef"), we did
not take the tag "beef" but after complaining used the commit
object whose name started with beef.

Another problem this fixes while introducing some confusion is
that there is no longer a reason to forbid a branch name HEAD
anymore.  In other words, now "git pull . ref1:HEAD" would work
as expected, once we revert "We do not like HEAD branch" patch.
It creates "HEAD" branch under ${GIT_DIR-.git}/refs/heads (or
fast-forwards if already exists) using the tip of ref1 branch
from the current repository, and merges it into the current
branch.

Signed-off-by: Junio C Hamano <junkio@cox.net>

---

 sha1_name.c |   33 +++------------------------------
 1 files changed, 3 insertions(+), 30 deletions(-)

a012e1b2b5218729e148befd0705bd52962ac272
diff --git a/sha1_name.c b/sha1_name.c
index bf8f0f0..49e2cc3 100644
--- a/sha1_name.c
+++ b/sha1_name.c
@@ -238,7 +238,6 @@ static int get_sha1_basic(const char *st
 		NULL
 	};
 	const char **p;
-	int found = 0;
 
 	if (len == 40 && !get_sha1_hex(str, sha1))
 		return 0;
@@ -249,36 +248,10 @@ static int get_sha1_basic(const char *st
 
 	for (p = prefix; *p; p++) {
 		char *pathname = git_path("%s/%.*s", *p, len, str);
-
-		if (!read_ref(pathname, sha1)) {
-			/* Must be unique; i.e. when heads/foo and
-			 * tags/foo are both present, reject "foo".
-			 */
-			if (1 < found++)
-				return -1;
-		}
-
-		/* We want to allow .git/description file and
-		 * "description" branch to exist at the same time.
-		 * "git-rev-parse description" should silently skip
-		 * .git/description file as a candidate for
-		 * get_sha1().  However, having garbage file anywhere
-		 * under refs/ is not OK, and we would not have caught
-		 * ambiguous heads and tags with the above test.
-		 */
-		else if (**p && !access(pathname, F_OK)) {
-			/* Garbage exists under .git/refs */
-			return error("garbage ref found '%s'", pathname);
-		}
-	}
-	switch (found) {
-	case 0:
-		return -1;
-	case 1:
-		return 0;
-	default:
-		return error("ambiguous refname '%.*s'", len, str);
+		if (!read_ref(pathname, sha1))
+			return 0;
 	}
+	return -1;
 }
 
 static int get_sha1_1(const char *name, int len, unsigned char *sha1);
-- 
0.99.9.GIT

             reply	other threads:[~2005-12-17  9:37 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-12-17  9:37 Junio C Hamano [this message]
2005-12-18  0:06 ` [PATCH] Remove misguided branch disambiguation Alex Riesen
2005-12-18  3:03   ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7virto12u5.fsf@assigned-by-dhcp.cox.net \
    --to=junkio@cox.net \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox