summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: d945d4b)
raw | patch | inline | side by side (parent: d945d4b)
author | Junio C Hamano <junkio@cox.net> | |
Sat, 25 Nov 2006 09:33:06 +0000 (01:33 -0800) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Sat, 25 Nov 2006 09:33:06 +0000 (01:33 -0800) |
Signed-off-by: Junio C Hamano <junkio@cox.net>
fetch-pack.c | patch | blob | history |
diff --git a/fetch-pack.c b/fetch-pack.c
index 0a169dce8574102a03c978bb24f8d0664f1fc9b6..743eab7efaa5b53a56d432bea268dda04350be7b 100644 (file)
--- a/fetch-pack.c
+++ b/fetch-pack.c
return 0;
}
+static int remove_duplicates(int nr_heads, char **heads)
+{
+ int src, dst;
+
+ for (src = dst = 0; src < nr_heads; src++) {
+ /* If heads[src] is different from any of
+ * heads[0..dst], push it in.
+ */
+ int i;
+ for (i = 0; i < dst; i++) {
+ if (!strcmp(heads[i], heads[src]))
+ break;
+ }
+ if (i < dst)
+ continue;
+ if (src != dst)
+ heads[dst] = heads[src];
+ dst++;
+ }
+ heads[dst] = 0;
+ return dst;
+}
+
int main(int argc, char **argv)
{
int i, ret, nr_heads;
pid = git_connect(fd, dest, exec);
if (pid < 0)
return 1;
+ if (heads && nr_heads)
+ nr_heads = remove_duplicates(nr_heads, heads);
ret = fetch_pack(fd, nr_heads, heads);
close(fd[0]);
close(fd[1]);