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

[PATCH 1/4] tree-diff: allow diff_tree_sha1 to accept NULL sha1

From
Kirill Smelkov <kirr@mns.spb.ru>
Date
Feb 5, 2014, 16:57 UTC
Message-ID
<5a71a2ddf1610b1a52d054b3f986c47f15d0412a.1391619218.git.kirr@mns.spb.ru>
In-Reply-To
<cover.1391619218.git.kirr@mns.spb.ru>
which would mean that corresponding tree - old or new - is empty.

As followup patches will show, that functionality was already needed in several places of Git codebase, but there, we were preparing empty tree_desc objects by hand, with some code duplication.

For handling sha1 = NULL case, let's reuse fill_tree_descriptor() which returns just empty tree_desc in that case.

Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
---
 tree-diff.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/tree-diff.c b/tree-diff.c
index f7b3ade..f438478 100644
--- a/tree-diff.c
+++ b/tree-diff.c
@@ -287,14 +287,10 @@ int diff_tree_sha1(const unsigned char *old, const unsigned char *new, const cha
 	unsigned long size1, size2;
 	int retval;
 
-	tree1 = read_object_with_reference(old, tree_type, &size1, NULL);
-	if (!tree1)
-		die("unable to read source tree (%s)", sha1_to_hex(old));
-	tree2 = read_object_with_reference(new, tree_type, &size2, NULL);
-	if (!tree2)
-		die("unable to read destination tree (%s)", sha1_to_hex(new));
-	init_tree_desc(&t1, tree1, size1);
-	init_tree_desc(&t2, tree2, size2);
+	tree1 = fill_tree_descriptor(&t1, old);
+	tree2 = fill_tree_descriptor(&t2, new);
+	size1 = t1.size;
+	size2 = t2.size;
 	retval = diff_tree(&t1, &t2, base, opt);
 	if (!*base && DIFF_OPT_TST(opt, FOLLOW_RENAMES) && diff_might_be_rename()) {
 		init_tree_desc(&t1, tree1, size1);
-- 
1.9.rc1.181.g641f458
Previous: Kirill SmelkovNext: Kirill Smelkov
Message 2 of 10 in “Teach diff_tree_sha1() to accept NULL sha1 for empty trees”
  1. 0/4 Teach diff_tree_sha1() to accept NULL sha1 for empty treesKirill Smelkov, Feb 5, 2014
  2. 1/4 tree-diff: allow diff_tree_sha1 to accept NULL sha1Kirill Smelkov, Feb 5, 2014
  3. 2/4 tree-diff: convert diff_root_tree_sha1() to just call diff_tree_sha1 with old=NULLKirill Smelkov, Feb 5, 2014
  4. 3/4 line-log: convert to using diff_tree_sha1()Kirill Smelkov, Feb 5, 2014
  5. Thomas RastFeb 6, 2014
  6. Junio C HamanoFeb 6, 2014
  7. 4/4 revision: convert to using diff_tree_sha1()Kirill Smelkov, Feb 5, 2014
  8. Jeff KingFeb 5, 2014
  9. Jeff KingFeb 5, 2014
  10. Junio C HamanoFeb 5, 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.