rename_ref_available(): add docstring

And improve the internal variable names.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
David Turner 2016-09-04 18:08:08 +02:00 committed by Junio C Hamano
parent f6e75467ca
commit ff3a299c45
2 changed files with 17 additions and 7 deletions

12
refs.c
View File

@ -1081,20 +1081,20 @@ const char *find_descendant_ref(const char *dirname,
return NULL; return NULL;
} }
int rename_ref_available(const char *oldname, const char *newname) int rename_ref_available(const char *old_refname, const char *new_refname)
{ {
struct string_list skip = STRING_LIST_INIT_NODUP; struct string_list skip = STRING_LIST_INIT_NODUP;
struct strbuf err = STRBUF_INIT; struct strbuf err = STRBUF_INIT;
int ret; int ok;
string_list_insert(&skip, oldname); string_list_insert(&skip, old_refname);
ret = !verify_refname_available(newname, NULL, &skip, &err); ok = !verify_refname_available(new_refname, NULL, &skip, &err);
if (!ret) if (!ok)
error("%s", err.buf); error("%s", err.buf);
string_list_clear(&skip, 0); string_list_clear(&skip, 0);
strbuf_release(&err); strbuf_release(&err);
return ret; return ok;
} }
int head_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data) int head_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)

View File

@ -240,7 +240,17 @@ const char *find_descendant_ref(const char *dirname,
const struct string_list *extras, const struct string_list *extras,
const struct string_list *skip); const struct string_list *skip);
int rename_ref_available(const char *oldname, const char *newname); /*
* Check whether an attempt to rename old_refname to new_refname would
* cause a D/F conflict with any existing reference (other than
* possibly old_refname). If there would be a conflict, emit an error
* message and return false; otherwise, return true.
*
* Note that this function is not safe against all races with other
* processes (though rename_ref() catches some races that might get by
* this check).
*/
int rename_ref_available(const char *old_refname, const char *new_refname);
/* We allow "recursive" symbolic refs. Only within reason, though */ /* We allow "recursive" symbolic refs. Only within reason, though */
#define SYMREF_MAXDEPTH 5 #define SYMREF_MAXDEPTH 5