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

[PATCH 2/4] revision: make tree comparison functions take commits rather than trees

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Nov 3, 2008, 19:35 UTC
Message-ID
<alpine.LFD.2.00.0811031133590.3419@nehalem.linux-foundation.org>
In-Reply-To
<alpine.LFD.2.00.0811031132520.3419@nehalem.linux-foundation.org>
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Mon, 3 Nov 2008 10:45:41 -0800
Subject: [PATCH 2/4] revision: make tree comparison functions take commits rather than trees

This will make it easier to do various clever things that don't depend on the pure tree contents. It also makes the parameter passing much simpler - the callers doesn't really look at trees anywhere else, and it's really the function that should look at the low-level details.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---

This is a trivial no-op change that just passes commits instead of trees to the commit compare functions. The whole point is that we can now start comparing them based on not just contents of the trees, but other attributes too.

The patch makes no semantic changes. Just preparation.
 revision.c |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/revision.c b/revision.c
index d45f05a..56b09eb 100644
--- a/revision.c
+++ b/revision.c
@@ -294,8 +294,11 @@ static void file_change(struct diff_options *options,
 	DIFF_OPT_SET(options, HAS_CHANGES);
 }
 
-static int rev_compare_tree(struct rev_info *revs, struct tree *t1, struct tree *t2)
+static int rev_compare_tree(struct rev_info *revs, struct commit *parent, struct commit *commit)
 {
+	struct tree *t1 = parent->tree;
+	struct tree *t2 = commit->tree;
+
 	if (!t1)
 		return REV_TREE_NEW;
 	if (!t2)
@@ -308,12 +311,13 @@ static int rev_compare_tree(struct rev_info *revs, struct tree *t1, struct tree
 	return tree_difference;
 }
 
-static int rev_same_tree_as_empty(struct rev_info *revs, struct tree *t1)
+static int rev_same_tree_as_empty(struct rev_info *revs, struct commit *commit)
 {
 	int retval;
 	void *tree;
 	unsigned long size;
 	struct tree_desc empty, real;
+	struct tree *t1 = commit->tree;
 
 	if (!t1)
 		return 0;
@@ -347,7 +351,7 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
 		return;
 
 	if (!commit->parents) {
-		if (rev_same_tree_as_empty(revs, commit->tree))
+		if (rev_same_tree_as_empty(revs, commit))
 			commit->object.flags |= TREESAME;
 		return;
 	}
@@ -367,7 +371,7 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
 			die("cannot simplify commit %s (because of %s)",
 			    sha1_to_hex(commit->object.sha1),
 			    sha1_to_hex(p->object.sha1));
-		switch (rev_compare_tree(revs, p->tree, commit->tree)) {
+		switch (rev_compare_tree(revs, p, commit)) {
 		case REV_TREE_SAME:
 			tree_same = 1;
 			if (!revs->simplify_history || (p->object.flags & UNINTERESTING)) {
@@ -387,7 +391,7 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
 
 		case REV_TREE_NEW:
 			if (revs->remove_empty_trees &&
-			    rev_same_tree_as_empty(revs, p->tree)) {
+			    rev_same_tree_as_empty(revs, p)) {
 				/* We are adding all the specified
 				 * paths from this parent, so the
 				 * history beyond this parent is not
-- 
1.6.0.3.616.gf1239d6.dirty
Previous: Linus TorvaldsNext: Linus Torvalds
Message 8 of 18 in “[Q] Abbreviated history graph?”
  1. Brian FosterNov 3, 2008
  2. Santi BéjarNov 3, 2008
  3. Santi BéjarNov 3, 2008
  4. Brian FosterNov 3, 2008
  5. Santi BéjarNov 3, 2008
  6. Linus TorvaldsNov 3, 2008
  7. 1/4 Add a 'source' decorator for commitsLinus Torvalds, Nov 3, 2008
  8. 2/4 revision: make tree comparison functions take commits rather than treesLinus Torvalds, Nov 3, 2008
  9. 3/4 Make '--decorate' set an explicit 'show_decorations' flagLinus Torvalds, Nov 3, 2008
  10. 4/4 Add support for 'namespace' history simplificationLinus Torvalds, Nov 3, 2008
  11. Santi BéjarNov 3, 2008
  12. Linus TorvaldsNov 3, 2008
  13. Santi BéjarNov 3, 2008
  14. Robin RosenbergNov 3, 2008
  15. Clemens BuchacherNov 4, 2008
  16. Linus TorvaldsNov 3, 2008
  17. Linus TorvaldsNov 3, 2008
  18. Junio C HamanoNov 4, 2008

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.