git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 07/10] replace: die early if replace ref already exists

From
Christian Couder <chriscool@tuxfamily.org>
Date
May 17, 2014, 12:16 UTC
Message-ID
<20140517121640.27582.63595.chriscool@tuxfamily.org>
In-Reply-To
<20140517120649.27582.58609.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
Previous: Christian CouderNext: Christian Couder
Message 8 of 12 in “replace: add option to edit a Git object”
  1. 00/10 replace: add option to edit a Git objectChristian Couder, May 17, 2014
  2. 01/10 replace: refactor command-mode determinationChristian Couder, May 17, 2014
  3. 02/10 replace: use OPT_CMDMODE to handle modesChristian Couder, May 17, 2014
  4. 03/10 replace: factor object resolution out of replace_objectChristian Couder, May 17, 2014
  5. 04/10 replace: add --edit optionChristian Couder, May 17, 2014
  6. 05/10 replace: make sure --edit results in a different objectChristian Couder, May 17, 2014
  7. 06/10 replace: refactor checking ref validityChristian Couder, May 17, 2014
  8. 07/10 replace: die early if replace ref already existsChristian Couder, May 17, 2014
  9. 08/10 replace: add tests for --editChristian Couder, May 17, 2014
  10. 09/10 replace: add --edit to usage stringChristian Couder, May 17, 2014
  11. 10/10 Documentation: replace: describe new --edit optionChristian Couder, May 17, 2014
  12. Junio C HamanoMay 19, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.