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

[PATCH v2 05/10] replace: make sure --edit results in a different object

From
Christian Couder <chriscool@tuxfamily.org>
Date
May 17, 2014, 06:41 UTC
Message-ID
<20140517064133.18932.27058.chriscool@tuxfamily.org>
In-Reply-To
<20140517062418.18932.21200.chriscool@tuxfamily.org>

It's a bad idea to create a replace ref for an object that points to the original object itself.

That's why we have to check if the result from editing the original object is a different object and error out if it isn't.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 builtin/replace.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/builtin/replace.c b/builtin/replace.c
index 3da1bae..0751804 100644
--- a/builtin/replace.c
+++ b/builtin/replace.c
@@ -275,6 +275,9 @@ static int edit_and_replace(const char *object_ref, int force)
 
 	free(tmpfile);
 
+	if (!hashcmp(old, new))
+		return error("new object is the same as the old one: '%s'", sha1_to_hex(old));
+
 	return replace_object_sha1(object_ref, old, "replacement", new, force);
 }
 
-- 
1.9.rc0.17.g651113e
Previous: Christian CouderNext: Jeff King
Message 6 of 16 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. Jeff KingMay 17, 2014
  8. 06/10 replace: refactor checking ref validityChristian Couder, May 17, 2014
  9. 07/10 replace: die early if replace ref already existsChristian Couder, May 17, 2014
  10. Jeff KingMay 17, 2014
  11. 08/10 replace: add tests for --editChristian Couder, May 17, 2014
  12. Jeff KingMay 17, 2014
  13. 09/10 replace: add --edit to usage stringChristian Couder, May 17, 2014
  14. 10/10 Documentation: replace: describe new --edit optionChristian Couder, May 17, 2014
  15. Jeff KingMay 17, 2014
  16. Jeff KingMay 17, 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.