diff options
author | Junio C Hamano <junkio@cox.net> | 2006-11-28 23:07:20 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-11-28 23:07:20 -0800 |
commit | df6b7bfb719622af05f62656ea25435538c82e19 (patch) | |
tree | 316193a74e1c1e4aa9410747c21938bf8fee763d /fetch-pack.c | |
parent | Merge branch 'maint' (diff) | |
parent | fetch-pack: do not barf when duplicate re patterns are given (diff) | |
download | tgif-df6b7bfb719622af05f62656ea25435538c82e19.tar.xz |
Merge branch 'jc/globfetch'
* jc/globfetch:
fetch-pack: do not barf when duplicate re patterns are given
git-fetch: allow forcing glob pattern in refspec
git-fetch: allow glob pattern in refspec
git-fetch: fix dumb protocol transport to fetch from pack-pruned ref
git-fetch: reuse ls-remote result.
Diffstat (limited to 'fetch-pack.c')
-rw-r--r-- | fetch-pack.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/fetch-pack.c b/fetch-pack.c index 0a169dce85..743eab7efa 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -566,6 +566,29 @@ static int fetch_pack(int fd[2], int nr_match, char **match) 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; @@ -617,6 +640,8 @@ int main(int argc, char **argv) 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]); |