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

[PATCH 3/4] line-log: convert to using diff_tree_sha1()

From
Kirill Smelkov <kirr@mns.spb.ru>
Date
Feb 5, 2014, 16:57 UTC
Message-ID
<0df5c2e1e93e4873bf276f3f500109249fe1afee.1391619218.git.kirr@mns.spb.ru>
In-Reply-To
<cover.1391619218.git.kirr@mns.spb.ru>

Since diff_tree_sha1() can now accept empty trees via NULL sha1, we could just call it without manually reading trees into tree_desc and duplicating code.

Cc: Thomas Rast <tr@thomasrast.ch>
Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
---
 line-log.c | 26 ++------------------------
 1 file changed, 2 insertions(+), 24 deletions(-)
diff --git a/line-log.c b/line-log.c
index 717638b..1500101 100644
--- a/line-log.c
+++ b/line-log.c
@@ -766,16 +766,6 @@ void line_log_init(struct rev_info *rev, const char *prefix, struct string_list
 	}
 }
 
-static void load_tree_desc(struct tree_desc *desc, void **tree,
-			   const unsigned char *sha1)
-{
-	unsigned long size;
-	*tree = read_object_with_reference(sha1, tree_type, &size, NULL);
-	if (!*tree)
-		die("Unable to read tree (%s)", sha1_to_hex(sha1));
-	init_tree_desc(desc, *tree, size);
-}
-
 static int count_parents(struct commit *commit)
 {
 	struct commit_list *parents = commit->parents;
@@ -842,18 +832,11 @@ static void queue_diffs(struct line_log_data *range,
 			struct diff_queue_struct *queue,
 			struct commit *commit, struct commit *parent)
 {
-	void *tree1 = NULL, *tree2 = NULL;
-	struct tree_desc desc1, desc2;
-
 	assert(commit);
-	load_tree_desc(&desc2, &tree2, commit->tree->object.sha1);
-	if (parent)
-		load_tree_desc(&desc1, &tree1, parent->tree->object.sha1);
-	else
-		init_tree_desc(&desc1, "", 0);
 
 	DIFF_QUEUE_CLEAR(&diff_queued_diff);
-	diff_tree(&desc1, &desc2, "", opt);
+	diff_tree_sha1(parent ? parent->tree->object.sha1 : NULL,
+			commit->tree->object.sha1, "", opt);
 	if (opt->detect_rename) {
 		filter_diffs_for_paths(range, 1);
 		if (diff_might_be_rename())
@@ -861,11 +844,6 @@ static void queue_diffs(struct line_log_data *range,
 		filter_diffs_for_paths(range, 0);
 	}
 	move_diff_queue(queue, &diff_queued_diff);
-
-	if (tree1)
-		free(tree1);
-	if (tree2)
-		free(tree2);
 }
 
 static char *get_nth_line(long line, unsigned long *ends, void *data)
-- 
1.9.rc1.181.g641f458
Previous: Kirill SmelkovNext: Thomas Rast
Message 4 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.