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

[PATCH 7/9] Test that pulls a patch creating a file that got modified afterwards

From
Yann Dirson <ydirson@altern.org>
Date
Apr 16, 2006, 10:52 UTC
Message-ID
<20060416105241.9884.16429.stgit@gandelf.nowhere.earth>
In-Reply-To
<20060416104144.9884.28167.stgit@gandelf.nowhere.earth>

This demonstrates an issue wite has bitten me more than once: the stg branch adds a file in one patch, and modifies it in a later patch; then all patches get integrated in upstream tree, and at "stg pull" time, stgit believes there is a conflict, even one the patches are exactly the same.

"stg push" apparently does not consider patches one by one, or it would have noticed that the patches were "already applied". It reports:

 Pushing patch "p1"...Error: File "file2" added in branches but different
 The merge failed during "push". Use "refresh" after fixing the conflicts
 stg push: GIT index merging failed (possible conflicts)
Signed-off-by: Yann Dirson <ydirson@altern.org>
---
 t/t1200-push-modified.sh |   51 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/t/t1200-push-modified.sh b/t/t1200-push-modified.sh
new file mode 100755
index 0000000..18a4df2
--- /dev/null
+++ b/t/t1200-push-modified.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+#
+# Copyright (c) 2006 Yann Dirson
+#
+
+test_description='Exercise pushing patches applied upstream.
+
+Especially, consider the case of a patch that adds a file,
+while a subsequent one modifies it.
+'
+
+. ./test-lib.sh
+
+# don't need this repo, but better not drop it, see t1100
+#rm -rf .git
+
+# Need a repo to clone
+test_create_repo foo
+
+test_expect_success \
+    'Clone tree and setup changes' \
+    "stg clone foo bar &&
+     (cd bar && stg new p1 -m p1
+      printf 'a\nc\n' > file && stg add file && stg refresh &&
+      stg new p2 -m p2
+      printf 'a\nb\nc\n' > file && stg refresh
+     )
+"
+
+test_expect_success \
+    'Port those patches to orig tree' \
+    "(cd foo &&
+      GIT_DIR=../bar/.git git-format-patch --stdout bases/master..HEAD |
+      git-am -3 -k
+     )
+"
+
+test_expect_success \
+    'Pull to sync with parent, preparing for the problem' \
+    "(cd bar && stg pop --all &&
+      stg pull
+     )
+"
+
+test_expect_success \
+    'Now attempt to push those patches applied upstream' \
+    "(cd bar && stg push --all
+     )
+"
+
+test_done
Previous: Yann DirsonNext: Yann Dirson
Message 8 of 10 in “Add a testsuite to stgit (take 3), and more”
  1. 0/9 Add a testsuite to stgit (take 3), and moreYann Dirson, Apr 16, 2006
  2. 1/9 Add a testsuite framework copied from git-coreYann Dirson, Apr 16, 2006
  3. 2/9 Add list of bugs to TODOYann Dirson, Apr 16, 2006
  4. 3/9 Add a couple of safety checks to series creationYann Dirson, Apr 16, 2006
  5. 4/9 Make branch creation atomicYann Dirson, Apr 16, 2006
  6. 5/9 Correctly handle refs/patches on series renameYann Dirson, Apr 16, 2006
  7. 6/9 Fix a seriously bad interaction between .git caching and repo cloningYann Dirson, Apr 16, 2006
  8. 7/9 Test that pulls a patch creating a file that got modified afterwardsYann Dirson, Apr 16, 2006
  9. 8/9 Exercise "stg pull" on patches just appending lines.Yann Dirson, Apr 16, 2006
  10. 9/9 Look for templates in ~/.stgit/templates as wellYann Dirson, Apr 16, 2006

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.