diff options
| author | Junio C Hamano <gitster@pobox.com> | 2009-01-17 22:27:08 -0800 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2009-01-17 23:00:31 -0800 | 
| commit | b2a6d1c6868b6d5e7d2b4fa9129341220a1e848a (patch) | |
| tree | c5223916691e2b380166006e6014e0e524cafd9b /object.c | |
| parent | f0298cf1c6a7b5cc8b79d84a03b0ce07df2d9e6b (diff) | |
| download | git-b2a6d1c6868b6d5e7d2b4fa9129341220a1e848a.tar.gz | |
bundle: allow the same ref to be given more than once
"git bundle create x master master" used to create a bundle that lists
the same branch (master) twice.  Cloning from such a bundle resulted in
a needless warning "warning: Duplicated ref: refs/remotes/origin/master".
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'object.c')
| -rw-r--r-- | object.c | 19 | 
1 files changed, 19 insertions, 0 deletions
@@ -268,3 +268,22 @@ void add_object_array_with_mode(struct object *obj, const char *name, struct obj  	objects[nr].mode = mode;  	array->nr = ++nr;  } + +void object_array_remove_duplicates(struct object_array *array) +{ +	int ref, src, dst; +	struct object_array_entry *objects = array->objects; + +	for (ref = 0; ref < array->nr - 1; ref++) { +		for (src = ref + 1, dst = src; +		     src < array->nr; +		     src++) { +			if (!strcmp(objects[ref].name, objects[src].name)) +				continue; +			if (src != dst) +				objects[dst] = objects[src]; +			dst++; +		} +		array->nr = dst; +	} +}  | 
