[PATCH v2 07/10] replace: die early if replace ref already exists
- From
Christian Couder <chriscool@tuxfamily.org>
- Date
- May 17, 2014, 06:41 UTC
- Message-ID
- <20140517064133.18932.92343.chriscool@tuxfamily.org>
- In-Reply-To
- <20140517062418.18932.21200.chriscool@tuxfamily.org>
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> --- builtin/replace.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/builtin/replace.c b/builtin/replace.c index 3d6edaf..4ee3d92 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");
-- 1.9.rc0.17.g651113e