diff options
| author | Christian Couder <chriscool@tuxfamily.org> | 2014-05-17 14:16:36 +0200 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2014-05-19 13:39:53 -0700 | 
| commit | 24790835738dc098fa6becedc44aac0341b7d5af (patch) | |
| tree | 85980c644b0fd861e33954a607e5ad103d3486f5 /builtin/replace.c | |
| parent | b6e38840921ac4a0fe07e10e632f66736745da10 (diff) | |
replace: die early if replace ref already exists
If a replace ref already exists for an object, it is
much better for the user if we error out before we
let the user edit the object, rather than after.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/replace.c')
| -rw-r--r-- | builtin/replace.c | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/builtin/replace.c b/builtin/replace.c index 3d6edaf7c7..4ee3d929fa 100644 --- a/builtin/replace.c +++ b/builtin/replace.c @@ -268,7 +268,8 @@ static int edit_and_replace(const char *object_ref, int force)  {  	char *tmpfile = git_pathdup("REPLACE_EDITOBJ");  	enum object_type type; -	unsigned char old[20], new[20]; +	unsigned char old[20], new[20], prev[20]; +	char ref[PATH_MAX];  	if (get_sha1(object_ref, old) < 0)  		die("Not a valid object name: '%s'", object_ref); @@ -277,6 +278,8 @@ static int edit_and_replace(const char *object_ref, int force)  	if (type < 0)  		die("unable to get object type for %s", sha1_to_hex(old)); +	check_ref_valid(old, prev, ref, sizeof(ref), force); +  	export_object(old, tmpfile);  	if (launch_editor(tmpfile, NULL, NULL) < 0)  		die("editing object file failed"); | 
