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

[PATCH 13/13] Add new test case to ensure git-merge reduces octopus parents when possible

From
Miklos Vajna <vmiklos@frugalware.org>
Date
Jun 21, 2008, 17:15 UTC
Message-ID
<1214068535-18418-1-git-send-email-vmiklos@frugalware.org>
In-Reply-To
<67668993d3fc7ea52c9c191178f3e1dea7bb4282.1214066799.git.vmiklos@frugalware.org>

The old shell version used show-branch --independent to filter for the ones that cannot be reached from any other reference.

The new C version uses reduce_heads() from commit.c for this, so add test to ensure it works as expected.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
---
On Sat, Jun 21, 2008 at 07:00:50PM +0200, Miklos Vajna <vmiklos@frugalware.org> wrote:
> The new C version uses filter_independent() from commit.c for this, so
> add test to ensure it works as expected.

Ouch, this info is now outdated. I updated the commit message and renamed the test, no functional changes.

 t/t7603-merge-reduce-heads.sh |   63 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+), 0 deletions(-)
 create mode 100755 t/t7603-merge-reduce-heads.sh
diff --git a/t/t7603-merge-reduce-heads.sh b/t/t7603-merge-reduce-heads.sh
new file mode 100755
index 0000000..17b19dc
--- /dev/null
+++ b/t/t7603-merge-reduce-heads.sh
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+test_description='git-merge
+
+Testing octopus merge when reducing parents to independent branches.'
+
+. ./test-lib.sh
+
+# 0 - 1
+#   \ 2
+#   \ 3
+#   \ 4 - 5
+#
+# So 1, 2, 3 and 5 should be kept, 4 should be avoided.
+
+test_expect_success 'setup' '
+	echo c0 > c0.c &&
+	git add c0.c &&
+	git commit -m c0 &&
+	git tag c0 &&
+	echo c1 > c1.c &&
+	git add c1.c &&
+	git commit -m c1 &&
+	git tag c1 &&
+	git reset --hard c0 &&
+	echo c2 > c2.c &&
+	git add c2.c &&
+	git commit -m c2 &&
+	git tag c2 &&
+	git reset --hard c0 &&
+	echo c3 > c3.c &&
+	git add c3.c &&
+	git commit -m c3 &&
+	git tag c3 &&
+	git reset --hard c0 &&
+	echo c4 > c4.c &&
+	git add c4.c &&
+	git commit -m c4 &&
+	git tag c4 &&
+	echo c5 > c5.c &&
+	git add c5.c &&
+	git commit -m c5 &&
+	git tag c5
+'
+
+test_expect_success 'merge c1 with c2, c3, c4, c5' '
+	git reset --hard c1 &&
+	git merge c2 c3 c4 c5 &&
+	test "$(git rev-parse c1)" != "$(git rev-parse HEAD)" &&
+	test "$(git rev-parse c1)" = "$(git rev-parse HEAD^1)" &&
+	test "$(git rev-parse c2)" = "$(git rev-parse HEAD^2)" &&
+	test "$(git rev-parse c3)" = "$(git rev-parse HEAD^3)" &&
+	test "$(git rev-parse c5)" = "$(git rev-parse HEAD^4)" &&
+	git diff --exit-code &&
+	test -f c0.c &&
+	test -f c1.c &&
+	test -f c2.c &&
+	test -f c3.c &&
+	test -f c4.c &&
+	test -f c5.c
+'
+
+test_done
-- 
1.5.6
Previous: Miklos VajnaNext: Olivier Marin
Message 7 of 15 in “Build in merge”
  1. 00/13 Build in mergeMiklos Vajna, Jun 21, 2008
  2. 09/13 Add new test to ensure git-merge handles more than 25 refs.Miklos Vajna, Jun 21, 2008
  3. 10/13 Introduce get_merge_bases_many()Miklos Vajna, Jun 21, 2008
  4. 11/13 Introduce reduce_heads()Miklos Vajna, Jun 21, 2008
  5. 12/13 Build in mergeMiklos Vajna, Jun 21, 2008
  6. 13/13 Add new test case to ensure git-merge filters for independent parentsMiklos Vajna, Jun 21, 2008
  7. 13/13 Add new test case to ensure git-merge reduces octopus parents when possibleMiklos Vajna, Jun 21, 2008
  8. Olivier MarinJun 25, 2008
  9. Miklos VajnaJun 27, 2008
  10. Olivier MarinJun 27, 2008
  11. Miklos VajnaJun 27, 2008
  12. Olivier MarinJun 27, 2008
  13. Miklos VajnaJun 27, 2008
  14. Johannes SchindelinJun 27, 2008
  15. Miklos VajnaJun 27, 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.