All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johan Herland <johan@herland.net>
To: git@vger.kernel.org
Cc: "Daniel Barkalow" <barkalow@iabervon.org>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
	"Kristian Høgsberg" <krh@redhat.com>,
	"Santi Béjar" <sbejar@gmail.com>,
	"Junio C Hamano" <gitster@pobox.com>,
	"Linus Torvalds" <torvalds@linux-foundation.org>
Subject: [PATCH 2/2] Overly simplistic fix for issue with sha1_file_name() and switching repos
Date: Tue, 04 Mar 2008 04:05:04 +0100	[thread overview]
Message-ID: <200803040405.04537.johan@herland.net> (raw)
In-Reply-To: <200803040402.57993.johan@herland.net>

This is not a final fix, just an illustration of how synchronizing the
"char *base" holding the object directory does in fact fix the test
added by the previous patch. A real fix will explicitly reset "base"
when needed, without comparing with get_object_directory() on every
invocation. A real fix will also have to deal with the other similar
issue in this (and possibly other) file(s).

Signed-off-by: Johan Herland <johan@herland.net>
---
 sha1_file.c                |    5 +++--
 t/t5700-clone-reference.sh |    2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/sha1_file.c b/sha1_file.c
index 4ce4d9d..909226e 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -161,9 +161,10 @@ char *sha1_file_name(const unsigned char *sha1)
 {
 	static char *name, *base;
 
-	if (!base) {
-		const char *sha1_file_directory = get_object_directory();
+	const char *sha1_file_directory = get_object_directory();
+	if (!base || prefixcmp(base, sha1_file_directory) != 0) {
 		int len = strlen(sha1_file_directory);
+		free(base);
 		base = xmalloc(len + 60);
 		memcpy(base, sha1_file_directory, len);
 		memset(base+len, 0, 60);
diff --git a/t/t5700-clone-reference.sh b/t/t5700-clone-reference.sh
index 40826ac..0c42d9f 100755
--- a/t/t5700-clone-reference.sh
+++ b/t/t5700-clone-reference.sh
@@ -134,7 +134,7 @@ git commit -m addition'
 
 cd "$base_dir"
 
-test_expect_failure 'cloning alternate repo #1, using #2 as reference' \
+test_expect_success 'cloning alternate repo #1, using #2 as reference' \
 'git clone --reference G F H'
 
 cd "$base_dir"
-- 
1.5.4.3.328.gcaed


  parent reply	other threads:[~2008-03-04  3:05 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-25 21:12 [RFC] Build in clone Daniel Barkalow
2008-02-26  2:21 ` Johan Herland
2008-02-26 11:14   ` Johannes Schindelin
2008-02-26 12:19     ` Johan Herland
2008-02-26 12:58       ` Johan Herland
2008-02-26 13:37         ` Johan Herland
2008-02-26 15:35           ` [PATCH] Fix premature free of ref_lists while writing temporary refs to file Johan Herland
2008-02-26 15:42             ` Johannes Schindelin
2008-02-26 17:17               ` Johan Herland
2008-02-26 23:07               ` Daniel Barkalow
2008-02-26 23:11                 ` Johan Herland
2008-02-26 15:40   ` [PATCH] Fix premature call to git_config() causing t1020-subdirectory to fail Johan Herland
2008-02-26 15:47     ` Johannes Schindelin
2008-02-26 22:12     ` Daniel Barkalow
2008-02-26 22:40       ` Johannes Schindelin
2008-02-26 22:49         ` Daniel Barkalow
2008-02-27  0:20           ` Junio C Hamano
2008-02-27  0:53             ` Daniel Barkalow
2008-02-27  1:34               ` Junio C Hamano
2008-02-27 19:47                 ` Daniel Barkalow
2008-02-27 20:09                   ` Junio C Hamano
2008-02-27 20:31                     ` Daniel Barkalow
2008-02-26 17:36   ` [RFC] Build in clone Daniel Barkalow
2008-02-26 18:53     ` Kristian Høgsberg
2008-03-02  5:57     ` [PATCH] builtin-clone: create remotes/origin/HEAD symref, if guessed Johannes Schindelin
2008-03-02  6:25       ` [PATCH, fixed] " Johannes Schindelin
2008-03-02  7:46         ` [PATCH] builtin clone: support bundles Johannes Schindelin
2008-03-02 16:19           ` Daniel Barkalow
2008-03-03  0:04             ` Santi Béjar
2008-03-02 16:48           ` Daniel Barkalow
2008-03-02 17:34             ` Johannes Schindelin
2008-03-02 17:50               ` Junio C Hamano
2008-03-02 17:54                 ` Junio C Hamano
2008-03-03  9:04             ` [PATCH] Add test for cloning with "--reference" repo being a subset of source repo Johan Herland
2008-03-03 16:36               ` Daniel Barkalow
2008-03-03 18:21               ` Daniel Barkalow
2008-03-04  3:02                 ` Johan Herland
2008-03-04  3:04                   ` [PATCH 1/2] Add test illustrating issues with sha1_file_name() and switching repos Johan Herland
2008-03-04  3:05                   ` Johan Herland [this message]
2008-03-04 23:10                   ` [PATCH] Add test for cloning with "--reference" repo being a subset of source repo Daniel Barkalow
2008-03-05  0:24                     ` Daniel Barkalow
2008-03-05 23:56                       ` Johan Herland
2008-03-03 17:05         ` [PATCH, fixed] builtin-clone: create remotes/origin/HEAD symref, if guessed Kristian Høgsberg
2008-03-03 17:09           ` Pierre Habouzit
2008-03-03 19:55             ` Johannes Schindelin
2008-03-03 17:10           ` Johannes Schindelin
2008-03-03 17:41           ` Johan Herland

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=200803040405.04537.johan@herland.net \
    --to=johan@herland.net \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=barkalow@iabervon.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=krh@redhat.com \
    --cc=sbejar@gmail.com \
    --cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.