Skip to content

Commit

Permalink
replace: die early if replace ref already exists
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Christian Couder authored and Junio C Hamano committed May 19, 2014
1 parent b6e3884 commit 2479083
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion builtin/replace.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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");
Expand Down

0 comments on commit 2479083

Please sign in to comment.