diff options
author | Michael Haggerty <mhagger@alum.mit.edu> | 2013-10-30 06:33:09 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-10-30 14:16:41 -0700 |
commit | b9afe6654db2bfb776db933f832e7e03052adf98 (patch) | |
tree | b88e6f7c317f436739cd15d8942bc00518d391c2 /remote.h | |
parent | 2071e05ed27df847e300b51aca661a34a765aea3 (diff) | |
download | git-b9afe6654db2bfb776db933f832e7e03052adf98.tar.gz |
ref_remove_duplicates(): simplify loop logic
Change the loop body into the more straightforward
* remove item from the front of the old list
* if necessary, add it to the tail of the new list
and return a pointer to the new list (even though it is currently
always the same as the input argument, because the first element in
the list is currently never deleted).
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'remote.h')
-rw-r--r-- | remote.h | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -149,9 +149,13 @@ int resolve_remote_symref(struct ref *ref, struct ref *list); int ref_newer(const unsigned char *new_sha1, const unsigned char *old_sha1); /* - * Removes and frees any duplicate refs in the map. + * Remove and free all but the first of any entries in the input list + * that map the same remote reference to the same local reference. If + * there are two entries that map different remote references to the + * same local reference, emit an error message and die. Return a + * pointer to the head of the resulting list. */ -void ref_remove_duplicates(struct ref *ref_map); +struct ref *ref_remove_duplicates(struct ref *ref_map); int valid_fetch_refspec(const char *refspec); struct refspec *parse_fetch_refspec(int nr_refspec, const char **refspec); |