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

[PATCH v4 15/15] revision.c: make default history consider bottom commits

From
Kevin Bracey <kevin@bracey.fi>
Date
May 16, 2013, 15:32 UTC
Message-ID
<1368718361-27859-16-git-send-email-kevin@bracey.fi>
In-Reply-To
<1368718361-27859-1-git-send-email-kevin@bracey.fi>

Previously, the default history treated bottom commits the same as any other UNINTERESTING commit, which could force it down side branches.

Consider the following history:
   *A--*B---D--*F         * marks !TREESAME parent paths
     \     /*
      `-C-'

When requesting "B..F", B is UNINTERESTING but TREESAME to D. C is !UNINTERESTING.

So default following would go from D into the irrelevant side branch C to A, rather than to B. Note also that if there had been an extra !UNINTERESTING commit B1 between B and D, it wouldn't have gone down C.

Change the default following to test relevant_commit() instead of !UNINTERESTING, so it can proceed straight from D to B, thus finishing the traversal of that path.

Signed-off-by: Kevin Bracey <kevin@bracey.fi>
---
 revision.c                   |  2 +-
 t/t6111-rev-list-treesame.sh | 12 ++++++------
 2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/revision.c b/revision.c
index edb7e1c..914ac78 100644
--- a/revision.c
+++ b/revision.c
@@ -684,7 +684,7 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
 			    sha1_to_hex(p->object.sha1));
 		switch (rev_compare_tree(revs, p, commit)) {
 		case REV_TREE_SAME:
-			if (!revs->simplify_history || (p->object.flags & UNINTERESTING)) {
+			if (!revs->simplify_history || !relevant_commit(p)) {
 				/* Even if a merge with an uninteresting
 				 * side branch brought the entire change
 				 * we are interested in, we do not want
diff --git a/t/t6111-rev-list-treesame.sh b/t/t6111-rev-list-treesame.sh
index 25cc8ad..88b84df 100755
--- a/t/t6111-rev-list-treesame.sh
+++ b/t/t6111-rev-list-treesame.sh
@@ -146,8 +146,8 @@ check_result '(LH)M (E)H (J)L (I)J (E)I' E..M --ancestry-path --simplify-merges
 # to G.
 check_result 'M L K J I H' G..M
 check_result 'M H L K J I' G..M --topo-order
-check_outcome failure 'M L H' G..M -- file # includes J I
-check_outcome failure '(LH)M (G)L (G)H' G..M --parents -- file # includes J I
+check_result 'M L H' G..M -- file
+check_result '(LH)M (G)L (G)H' G..M --parents -- file
 check_result 'M L J I H' G..M --full-history -- file
 check_result 'M L K J I H' G..M --full-history --parents -- file
 check_result 'M H L J I' G..M --simplify-merges -- file
@@ -161,8 +161,8 @@ check_result 'M H L J I' G..M --ancestry-path --simplify-merges -- file
 # But --full-history shouldn't drop D on its own - without simplification,
 # we can't decide if the merge from INTERESTING commit C was sensible.
 check_result 'F D C' B..F
-check_outcome failure 'F' B..F -- file # includes D
-check_outcome failure '(B)F' B..F --parents -- file # includes D
+check_result 'F' B..F -- file
+check_result '(B)F' B..F --parents -- file
 check_result 'F D' B..F --full-history -- file
 check_result '(D)F (BA)D' B..F --full-history --parents -- file
 check_result '(B)F' B..F --simplify-merges -- file
@@ -174,8 +174,8 @@ check_result 'F D' B..F --first-parent
 check_result 'F' B..F --first-parent -- file
 
 # E...F should be equivalent to E F ^B, and be able to drop D as above.
-check_outcome failure 'F' E F ^B -- file # includes D
-check_outcome failure 'F' E...F -- file # includes D
+check_result 'F' E F ^B -- file # includes D
+check_result 'F' E...F -- file # includes D
 
 # Any sort of full history of C..F should show D, as it's the connection to C,
 # and it differs from it.
-- 
1.8.3.rc0.28.g4b02ef5
Previous: Kevin Bracey
Message 16 of 16 in “History traversal refinements”
  1. 00/15 History traversal refinementsKevin Bracey, May 16, 2013
  2. 01/15 decorate.c: compact table when growingKevin Bracey, May 16, 2013
  3. 02/15 t6019: test file dropped in -s ours mergeKevin Bracey, May 16, 2013
  4. 03/15 t6111: new TREESAME test setKevin Bracey, May 16, 2013
  5. 04/15 t6111: allow checking the parents as wellKevin Bracey, May 16, 2013
  6. 05/15 t6111: add parents to testsKevin Bracey, May 16, 2013
  7. 06/15 rev-list-options.txt: correct TREESAME for PKevin Bracey, May 16, 2013
  8. 07/15 Documentation: avoid "uninteresting"Kevin Bracey, May 16, 2013
  9. 08/15 revision.c: Make --full-history consider more mergesKevin Bracey, May 16, 2013
  10. 09/15 t6012: update test for tweaked full-history traversalKevin Bracey, May 16, 2013
  11. 10/15 simplify-merges: never remove all TREESAME parentsKevin Bracey, May 16, 2013
  12. 11/15 simplify-merges: drop merge from irrelevant side branchKevin Bracey, May 16, 2013
  13. 12/15 revision.c: add BOTTOM flag for commitsKevin Bracey, May 16, 2013
  14. 13/15 revision.c: discount side branches when computing TREESAMEKevin Bracey, May 16, 2013
  15. 14/15 revision.c: don't show all merges for --parentsKevin Bracey, May 16, 2013
  16. 15/15 revision.c: make default history consider bottom commitsKevin Bracey, May 16, 2013

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.