[PATCH v2 08/13] Write local refs written by the "import" helper command only once

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At clone time the "import" helper command has already written a
packfile with all refs, so write_remote_refs will create a duplicate
entry for each ref returned by wanted_peer_refs. Prevent this
duplication by setting fetched_refs_written in the transport when
executing the "import" helper command and only adding the extra refs
if it is not set.

Signed-off-by: Sverre Rabbelier <srabbelier@xxxxxxxxx>
---

	I am not 100% sure this is the proper fix, but I do know that
	without this I get a .git/packed-refs file that has duplicate
	entries in it.

 builtin-clone.c    |    5 ++++-
 transport-helper.c |    3 +++
 transport.h        |    2 ++
 3 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/builtin-clone.c b/builtin-clone.c
index 5df8b0f..e44347e 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c
@@ -542,7 +542,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
 	if (refs) {
 		clear_extra_refs();
 
-		write_remote_refs(mapped_refs);
+		if(transport->fetched_refs_written)
+			pack_refs(PACK_REFS_ALL);
+		else
+			write_remote_refs(mapped_refs);
 
 		remote_head = find_ref_by_name(refs, "HEAD");
 		remote_head_points_at =
diff --git a/transport-helper.c b/transport-helper.c
index 82caaae..148496c 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -165,7 +165,10 @@ static int fetch(struct transport *transport,
 		return fetch_with_fetch(transport, nr_heads, to_fetch);
 
 	if (data->import)
+	{
+		transport->fetched_refs_written = 1;
 		return fetch_with_import(transport, nr_heads, to_fetch);
+	}
 
 	return -1;
 }
diff --git a/transport.h b/transport.h
index 503db11..7458b9e 100644
--- a/transport.h
+++ b/transport.h
@@ -65,6 +65,8 @@ struct transport {
 	signed verbose : 2;
 	/* Force progress even if the output is not a tty */
 	unsigned progress : 1;
+	/* Refs fetched by transport_get_remote_refs are already written */
+	unsigned fetched_refs_written : 1;
 };
 
 #define TRANSPORT_PUSH_ALL 1
-- 
1.6.5.2.295.g0d105

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]