{"thread":{"id":"21599","subject":"[PATCH 1/2] git-svn: add (failing) test for SVN 1.5+ merge with intervening commit","startedAt":"2009-11-12T20:48:39Z","lastAt":"2009-11-16T01:30:13Z","messageCount":4,"participants":["Toby Allsopp","Eric Wong"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"127479","messageId":"874ooz5o8s.fsf@navakl084.mitacad.com","threadId":"21599","inReplyTo":null,"subject":"[PATCH 1/2] git-svn: add (failing) test for SVN 1.5+ merge with intervening commit","fromName":"Toby Allsopp","fromEmail":"toby.allsopp@navman.co.nz","sentAt":"2009-11-12T20:48:39Z","receivedAt":"2009-11-12T20:48:39Z","isPatch":true,"sender":{"key":"toby.allsopp@navman.co.nz","avatar":null},"body":"This test exposes a bug in git-svn's handling of SVN 1.5+ mergeinfo\nproperties.  The problematic case is when there is some commit on an\nunrelated branch after the last commit on the merged-from branch.\nWhen SVN records the mergeinfo property, it records the latest\nrevision in the whole repository, which, in the problematic case, is\nnot on the branch it is merging from.\n\nTo trigger the git-svn bug, we modify t9151 to include two SVN merges,\nthe second of which has an intervening commit.  The SVN dump was\ngenerated using SVN 1.6.6 (on Debian squeeze amd64).\n\nSigned-off-by: Toby Allsopp <toby.allsopp@navman.co.nz>\n---\n t/t9151-svn-mergeinfo.sh   |    6 +-\n t/t9151/make-svnmerge-dump |   32 ++++-\n t/t9151/svn-mergeinfo.dump |  386 +++++++++++++++++++++++++++++++++++++-------\n 3 files changed, 366 insertions(+), 58 deletions(-)\n\ndiff --git a/t/t9151-svn-mergeinfo.sh b/t/t9151-svn-mergeinfo.sh\nindex 9bee516..0d42c84 100755\n--- a/t/t9151-svn-mergeinfo.sh\n+++ b/t/t9151-svn-mergeinfo.sh\n@@ -15,7 +15,11 @@ test_expect_success 'load svn dump' \"\n \tgit svn fetch --all\n \t\"\n \n-test_expect_success 'svn merges were represented coming in' \"\n+test_expect_success 'represent svn merges without intervening commits' \"\n+\t[ `git cat-file commit HEAD^1 | grep parent | wc -l` -eq 2 ]\n+\t\"\n+\n+test_expect_failure 'represent svn merges with intervening commits' \"\n \t[ `git cat-file commit HEAD | grep parent | wc -l` -eq 2 ]\n \t\"\n \ndiff --git a/t/t9151/make-svnmerge-dump b/t/t9151/make-svnmerge-dump\nindex e35d64d..7e3da75 100644\n--- a/t/t9151/make-svnmerge-dump\n+++ b/t/t9151/make-svnmerge-dump\n@@ -28,6 +28,10 @@ svn cp trunk branches/left\n \n echo \"Committing BRANCH POINT\"\n svn commit -m \"make left branch\"\n+svn cp trunk branches/right\n+\n+echo \"Committing other BRANCH POINT\"\n+svn commit -m \"make right branch\"\n cd branches/left/\n \n #$sm init\n@@ -64,7 +68,33 @@ git cat-file blob b51ad431:Makefile > Makefile\n \n svn resolved Makefile\n \n-svn commit -m \"Merge trunk\"\n+svn commit -m \"Merge trunk 1\"\n+\n+# create commits on both branches\n+\n+cd ../branches/left\n+git cat-file blob ff5ebe39:Makefile > Makefile\n+echo \"Committing BRANCH UPDATE 4\"\n+svn commit -m \"left update 4\"\n+\n+cd ../right\n+git cat-file blob b5039db6:Makefile > Makefile\n+echo \"Committing other BRANCH UPDATE 1\"\n+svn commit -m \"right update 1\"\n+\n+# merge to trun again\n+\n+cd ../..\n+svn update\n+cd trunk\n+\n+svn merge ../branches/left --accept postpone\n+\n+git cat-file blob b51ad431:Makefile > Makefile\n+\n+svn resolved Makefile\n+\n+svn commit -m \"Merge trunk 2\"\n \n cd ../..\n \ndiff --git a/t/t9151/svn-mergeinfo.dump b/t/t9151/svn-mergeinfo.dump\nindex 2153187..11a883f 100644\n--- a/t/t9151/svn-mergeinfo.dump\n+++ b/t/t9151/svn-mergeinfo.dump\n@@ -1,6 +1,6 @@\n SVN-fs-dump-format-version: 2\n \n-UUID: 1ce241d1-ba54-4eb9-bded-03057fe48a33\n+UUID: 1530d5a2-a1dc-4438-8ad5-d95e96db8945\n \n Revision-number: 0\n Prop-content-length: 56\n@@ -9,12 +9,12 @@ Content-length: 56\n K 8\n svn:date\n V 27\n-2009-10-20T01:33:37.692723Z\n+2009-11-12T20:29:38.812226Z\n PROPS-END\n \n Revision-number: 1\n-Prop-content-length: 123\n-Content-length: 123\n+Prop-content-length: 127\n+Content-length: 127\n \n K 7\n svn:log\n@@ -22,12 +22,12 @@ V 24\n Setup trunk and branches\n K 10\n svn:author\n-V 4\n-samv\n+V 8\n+tallsopp\n K 8\n svn:date\n V 27\n-2009-10-20T01:33:38.159933Z\n+2009-11-12T20:29:39.045856Z\n PROPS-END\n \n Node-path: branches\n@@ -49,8 +49,8 @@ PROPS-END\n \n \n Revision-number: 2\n-Prop-content-length: 106\n-Content-length: 106\n+Prop-content-length: 110\n+Content-length: 110\n \n K 7\n svn:log\n@@ -58,12 +58,12 @@ V 8\n ancestor\n K 10\n svn:author\n-V 4\n-samv\n+V 8\n+tallsopp\n K 8\n svn:date\n V 27\n-2009-10-20T01:33:39.160059Z\n+2009-11-12T20:29:40.079587Z\n PROPS-END\n \n Node-path: trunk/Makefile\n@@ -72,6 +72,7 @@ Node-action: add\n Prop-content-length: 10\n Text-content-length: 2401\n Text-content-md5: bfd8ff778d1492dc6758567373176a89\n+Text-content-sha1: 103205ce331f7d64086dba497574734f78439590\n Content-length: 2411\n \n PROPS-END\n@@ -155,8 +156,8 @@ backup: clean\n \n \n Revision-number: 3\n-Prop-content-length: 115\n-Content-length: 115\n+Prop-content-length: 119\n+Content-length: 119\n \n K 7\n svn:log\n@@ -164,12 +165,12 @@ V 16\n make left branch\n K 10\n svn:author\n-V 4\n-samv\n+V 8\n+tallsopp\n K 8\n svn:date\n V 27\n-2009-10-20T01:33:41.148192Z\n+2009-11-12T20:29:42.084439Z\n PROPS-END\n \n Node-path: branches/left\n@@ -177,27 +178,54 @@ Node-kind: dir\n Node-action: add\n Node-copyfrom-rev: 1\n Node-copyfrom-path: trunk\n-Prop-content-length: 34\n-Content-length: 34\n \n-K 13\n-svn:mergeinfo\n-V 0\n \n+Node-path: branches/left/Makefile\n+Node-kind: file\n+Node-action: add\n+Node-copyfrom-rev: 2\n+Node-copyfrom-path: trunk/Makefile\n+Text-copy-source-md5: bfd8ff778d1492dc6758567373176a89\n+Text-copy-source-sha1: 103205ce331f7d64086dba497574734f78439590\n+\n+\n+Revision-number: 4\n+Prop-content-length: 120\n+Content-length: 120\n+\n+K 7\n+svn:log\n+V 17\n+make right branch\n+K 10\n+svn:author\n+V 8\n+tallsopp\n+K 8\n+svn:date\n+V 27\n+2009-11-12T20:29:44.065452Z\n PROPS-END\n \n+Node-path: branches/right\n+Node-kind: dir\n+Node-action: add\n+Node-copyfrom-rev: 1\n+Node-copyfrom-path: trunk\n+\n \n-Node-path: branches/left/Makefile\n+Node-path: branches/right/Makefile\n Node-kind: file\n Node-action: add\n Node-copyfrom-rev: 2\n Node-copyfrom-path: trunk/Makefile\n Text-copy-source-md5: bfd8ff778d1492dc6758567373176a89\n+Text-copy-source-sha1: 103205ce331f7d64086dba497574734f78439590\n \n \n-Revision-number: 4\n-Prop-content-length: 112\n-Content-length: 112\n+Revision-number: 5\n+Prop-content-length: 116\n+Content-length: 116\n \n K 7\n svn:log\n@@ -205,12 +233,12 @@ V 13\n left update 1\n K 10\n svn:author\n-V 4\n-samv\n+V 8\n+tallsopp\n K 8\n svn:date\n V 27\n-2009-10-20T01:33:42.148773Z\n+2009-11-12T20:29:45.066262Z\n PROPS-END\n \n Node-path: branches/left/Makefile\n@@ -218,6 +246,7 @@ Node-kind: file\n Node-action: change\n Text-content-length: 2465\n Text-content-md5: 16e38d9753b061731650561ce01b1195\n+Text-content-sha1: 36da4b84ea9b64218ab48171dfc5c48ae025f38b\n Content-length: 2465\n \n # -DCOLLISION_CHECK if you believe that SHA1's\n@@ -299,9 +328,9 @@ backup: clean\n \tcd .. ; tar czvf dircache.tar.gz dir-cache\n \n \n-Revision-number: 5\n-Prop-content-length: 111\n-Content-length: 111\n+Revision-number: 6\n+Prop-content-length: 115\n+Content-length: 115\n \n K 7\n svn:log\n@@ -309,12 +338,12 @@ V 12\n trunk update\n K 10\n svn:author\n-V 4\n-samv\n+V 8\n+tallsopp\n K 8\n svn:date\n V 27\n-2009-10-20T01:33:43.159959Z\n+2009-11-12T20:29:46.278498Z\n PROPS-END\n \n Node-path: trunk/Makefile\n@@ -322,6 +351,7 @@ Node-kind: file\n Node-action: change\n Text-content-length: 2521\n Text-content-md5: 0668418a621333f4aa8b6632cd63e2a0\n+Text-content-sha1: 4f29afd038e52f45acb5ef8c41acfc70062a741a\n Content-length: 2521\n \n # -DCOLLISION_CHECK if you believe that SHA1's\n@@ -406,9 +436,9 @@ backup: clean\n \tcd .. ; tar czvf dircache.tar.gz dir-cache\n \n \n-Revision-number: 6\n-Prop-content-length: 112\n-Content-length: 112\n+Revision-number: 7\n+Prop-content-length: 116\n+Content-length: 116\n \n K 7\n svn:log\n@@ -416,12 +446,12 @@ V 13\n left update 2\n K 10\n svn:author\n-V 4\n-samv\n+V 8\n+tallsopp\n K 8\n svn:date\n V 27\n-2009-10-20T01:33:44.164175Z\n+2009-11-12T20:29:47.069090Z\n PROPS-END\n \n Node-path: branches/left/Makefile\n@@ -429,6 +459,7 @@ Node-kind: file\n Node-action: change\n Text-content-length: 2529\n Text-content-md5: f6b197cc3f2e89a83e545d4bb003de73\n+Text-content-sha1: 2f656677cfec0bceec85e53036ffb63e25126f8e\n Content-length: 2529\n \n # -DCOLLISION_CHECK if you believe that SHA1's\n@@ -510,9 +541,9 @@ backup: clean\n \tcd .. ; tar czvf dircache.tar.gz dir-cache\n \n \n-Revision-number: 7\n-Prop-content-length: 112\n-Content-length: 112\n+Revision-number: 8\n+Prop-content-length: 116\n+Content-length: 116\n \n K 7\n svn:log\n@@ -520,12 +551,12 @@ V 13\n left update 3\n K 10\n svn:author\n-V 4\n-samv\n+V 8\n+tallsopp\n K 8\n svn:date\n V 27\n-2009-10-20T01:33:45.144214Z\n+2009-11-12T20:29:48.053835Z\n PROPS-END\n \n Node-path: branches/left/Makefile\n@@ -533,6 +564,7 @@ Node-kind: file\n Node-action: change\n Text-content-length: 2593\n Text-content-md5: 5ccff689fb290e00b85fe18ee50c54ba\n+Text-content-sha1: a13de8e23f1483efca3e57b2b64b0ae6f740ce10\n Content-length: 2593\n \n # -DCOLLISION_CHECK if you believe that SHA1's\n@@ -614,22 +646,22 @@ backup: clean\n \tcd .. ; tar czvf dircache.tar.gz dir-cache\n \n \n-Revision-number: 8\n-Prop-content-length: 110\n-Content-length: 110\n+Revision-number: 9\n+Prop-content-length: 116\n+Content-length: 116\n \n K 7\n svn:log\n-V 11\n-Merge trunk\n+V 13\n+Merge trunk 1\n K 10\n svn:author\n-V 4\n-samv\n+V 8\n+tallsopp\n K 8\n svn:date\n V 27\n-2009-10-20T01:33:48.176135Z\n+2009-11-12T20:29:51.098306Z\n PROPS-END\n \n Node-path: trunk\n@@ -641,7 +673,7 @@ Content-length: 53\n K 13\n svn:mergeinfo\n V 18\n-/branches/left:2-7\n+/branches/left:2-8\n PROPS-END\n \n \n@@ -650,6 +682,7 @@ Node-kind: file\n Node-action: change\n Text-content-length: 2713\n Text-content-md5: 0afbe34f244cd662b1f97d708c687f90\n+Text-content-sha1: 46d9377d783e67a9b581da110352e799517c8a14\n Content-length: 2713\n \n # -DCOLLISION_CHECK if you believe that SHA1's\n@@ -734,3 +767,244 @@ backup: clean\n \tcd .. ; tar czvf dircache.tar.gz dir-cache\n \n \n+Revision-number: 10\n+Prop-content-length: 116\n+Content-length: 116\n+\n+K 7\n+svn:log\n+V 13\n+left update 4\n+K 10\n+svn:author\n+V 8\n+tallsopp\n+K 8\n+svn:date\n+V 27\n+2009-11-12T20:29:52.081644Z\n+PROPS-END\n+\n+Node-path: branches/left/Makefile\n+Node-kind: file\n+Node-action: change\n+Text-content-length: 2529\n+Text-content-md5: f6b197cc3f2e89a83e545d4bb003de73\n+Text-content-sha1: 2f656677cfec0bceec85e53036ffb63e25126f8e\n+Content-length: 2529\n+\n+# -DCOLLISION_CHECK if you believe that SHA1's\n+# 1461501637330902918203684832716283019655932542976 hashes do not give you\n+# enough guarantees about no collisions between objects ever hapenning.\n+#\n+# -DNSEC if you want git to care about sub-second file mtimes and ctimes.\n+# Note that you need some new glibc (at least >2.2.4) for this, and it will\n+# BREAK YOUR LOCAL DIFFS! show-diff and anything using it will likely randomly\n+# break unless your underlying filesystem supports those sub-second times\n+# (my ext3 doesn't).\n+CFLAGS=-g -O3 -Wall\n+\n+CC=gcc\n+\n+\n+PROG=   update-cache show-diff init-db write-tree read-tree commit-tree \\\n+\tcat-file fsck-cache checkout-cache diff-tree rev-tree show-files \\\n+\tcheck-files ls-tree merge-base\n+\n+all: $(PROG)\n+\n+install: $(PROG)\n+\tinstall $(PROG) $(HOME)/bin/\n+\n+LIBS= -lssl -lz\n+\n+init-db: init-db.o\n+\n+update-cache: update-cache.o read-cache.o\n+\t$(CC) $(CFLAGS) -o update-cache update-cache.o read-cache.o $(LIBS)\n+\n+show-diff: show-diff.o read-cache.o\n+\t$(CC) $(CFLAGS) -o show-diff show-diff.o read-cache.o $(LIBS)\n+\n+write-tree: write-tree.o read-cache.o\n+\t$(CC) $(CFLAGS) -o write-tree write-tree.o read-cache.o $(LIBS)\n+\n+read-tree: read-tree.o read-cache.o\n+\t$(CC) $(CFLAGS) -o read-tree read-tree.o read-cache.o $(LIBS)\n+\n+commit-tree: commit-tree.o read-cache.o\n+\t$(CC) $(CFLAGS) -o commit-tree commit-tree.o read-cache.o $(LIBS)\n+\n+cat-file: cat-file.o read-cache.o\n+\t$(CC) $(CFLAGS) -o cat-file cat-file.o read-cache.o $(LIBS)\n+\n+fsck-cache: fsck-cache.o read-cache.o object.o commit.o tree.o blob.o\n+\t$(CC) $(CFLAGS) -o fsck-cache fsck-cache.o read-cache.o object.o commit.o tree.o blob.o $(LIBS)\n+\n+checkout-cache: checkout-cache.o read-cache.o\n+\t$(CC) $(CFLAGS) -o checkout-cache checkout-cache.o read-cache.o $(LIBS)\n+\n+diff-tree: diff-tree.o read-cache.o\n+\t$(CC) $(CFLAGS) -o diff-tree diff-tree.o read-cache.o $(LIBS)\n+\n+rev-tree: rev-tree.o read-cache.o object.o commit.o tree.o blob.o\n+\t$(CC) $(CFLAGS) -o rev-tree rev-tree.o read-cache.o object.o commit.o tree.o blob.o $(LIBS)\n+\n+show-files: show-files.o read-cache.o\n+\t$(CC) $(CFLAGS) -o show-files show-files.o read-cache.o $(LIBS)\n+\n+check-files: check-files.o read-cache.o\n+\t$(CC) $(CFLAGS) -o check-files check-files.o read-cache.o $(LIBS)\n+\n+ls-tree: ls-tree.o read-cache.o\n+\t$(CC) $(CFLAGS) -o ls-tree ls-tree.o read-cache.o $(LIBS)\n+\n+merge-base: merge-base.o read-cache.o\n+\t$(CC) $(CFLAGS) -o merge-base merge-base.o read-cache.o $(LIBS)\n+\n+read-cache.o: cache.h\n+show-diff.o: cache.h\n+\n+clean:\n+\trm -f *.o $(PROG)\n+\n+backup: clean\n+\tcd .. ; tar czvf dircache.tar.gz dir-cache\n+\n+\n+Revision-number: 11\n+Prop-content-length: 117\n+Content-length: 117\n+\n+K 7\n+svn:log\n+V 14\n+right update 1\n+K 10\n+svn:author\n+V 8\n+tallsopp\n+K 8\n+svn:date\n+V 27\n+2009-11-12T20:29:53.059636Z\n+PROPS-END\n+\n+Node-path: branches/right/Makefile\n+Node-kind: file\n+Node-action: change\n+Text-content-length: 2593\n+Text-content-md5: 5ccff689fb290e00b85fe18ee50c54ba\n+Text-content-sha1: a13de8e23f1483efca3e57b2b64b0ae6f740ce10\n+Content-length: 2593\n+\n+# -DCOLLISION_CHECK if you believe that SHA1's\n+# 1461501637330902918203684832716283019655932542976 hashes do not give you\n+# enough guarantees about no collisions between objects ever hapenning.\n+#\n+# -DNSEC if you want git to care about sub-second file mtimes and ctimes.\n+# Note that you need some new glibc (at least >2.2.4) for this, and it will\n+# BREAK YOUR LOCAL DIFFS! show-diff and anything using it will likely randomly\n+# break unless your underlying filesystem supports those sub-second times\n+# (my ext3 doesn't).\n+CFLAGS=-g -O3 -Wall\n+\n+CC=gcc\n+\n+\n+PROG=   update-cache show-diff init-db write-tree read-tree commit-tree \\\n+\tcat-file fsck-cache checkout-cache diff-tree rev-tree show-files \\\n+\tcheck-files ls-tree merge-base\n+\n+all: $(PROG)\n+\n+install: $(PROG)\n+\tinstall $(PROG) $(HOME)/bin/\n+\n+LIBS= -lssl -lz\n+\n+init-db: init-db.o\n+\n+update-cache: update-cache.o read-cache.o\n+\t$(CC) $(CFLAGS) -o update-cache update-cache.o read-cache.o $(LIBS)\n+\n+show-diff: show-diff.o read-cache.o\n+\t$(CC) $(CFLAGS) -o show-diff show-diff.o read-cache.o $(LIBS)\n+\n+write-tree: write-tree.o read-cache.o\n+\t$(CC) $(CFLAGS) -o write-tree write-tree.o read-cache.o $(LIBS)\n+\n+read-tree: read-tree.o read-cache.o\n+\t$(CC) $(CFLAGS) -o read-tree read-tree.o read-cache.o $(LIBS)\n+\n+commit-tree: commit-tree.o read-cache.o\n+\t$(CC) $(CFLAGS) -o commit-tree commit-tree.o read-cache.o $(LIBS)\n+\n+cat-file: cat-file.o read-cache.o\n+\t$(CC) $(CFLAGS) -o cat-file cat-file.o read-cache.o $(LIBS)\n+\n+fsck-cache: fsck-cache.o read-cache.o object.o commit.o tree.o blob.o\n+\t$(CC) $(CFLAGS) -o fsck-cache fsck-cache.o read-cache.o object.o commit.o tree.o blob.o $(LIBS)\n+\n+checkout-cache: checkout-cache.o read-cache.o\n+\t$(CC) $(CFLAGS) -o checkout-cache checkout-cache.o read-cache.o $(LIBS)\n+\n+diff-tree: diff-tree.o read-cache.o\n+\t$(CC) $(CFLAGS) -o diff-tree diff-tree.o read-cache.o $(LIBS)\n+\n+rev-tree: rev-tree.o read-cache.o object.o commit.o tree.o blob.o\n+\t$(CC) $(CFLAGS) -o rev-tree rev-tree.o read-cache.o object.o commit.o tree.o blob.o $(LIBS)\n+\n+show-files: show-files.o read-cache.o\n+\t$(CC) $(CFLAGS) -o show-files show-files.o read-cache.o $(LIBS)\n+\n+check-files: check-files.o read-cache.o\n+\t$(CC) $(CFLAGS) -o check-files check-files.o read-cache.o $(LIBS)\n+\n+ls-tree: ls-tree.o read-cache.o\n+\t$(CC) $(CFLAGS) -o ls-tree ls-tree.o read-cache.o $(LIBS)\n+\n+merge-base: merge-base.o read-cache.o object.o commit.o tree.o blob.o\n+\t$(CC) $(CFLAGS) -o merge-base merge-base.o read-cache.o object.o commit.o tree.o blob.o $(LIBS)\n+\n+read-cache.o: cache.h\n+show-diff.o: cache.h\n+\n+clean:\n+\trm -f *.o $(PROG)\n+\n+backup: clean\n+\tcd .. ; tar czvf dircache.tar.gz dir-cache\n+\n+\n+Revision-number: 12\n+Prop-content-length: 116\n+Content-length: 116\n+\n+K 7\n+svn:log\n+V 13\n+Merge trunk 2\n+K 10\n+svn:author\n+V 8\n+tallsopp\n+K 8\n+svn:date\n+V 27\n+2009-11-12T20:29:56.083003Z\n+PROPS-END\n+\n+Node-path: trunk\n+Node-kind: dir\n+Node-action: change\n+Prop-content-length: 54\n+Content-length: 54\n+\n+K 13\n+svn:mergeinfo\n+V 19\n+/branches/left:2-11\n+PROPS-END\n+\n+\n-- \n1.6.5.2.155.gbb47.dirty\n"},{"id":"127563","messageId":"20091114214031.GA3732@dcvr.yhbt.net","threadId":"21599","inReplyTo":"874ooz5o8s.fsf@navakl084.mitacad.com","subject":"Re: [PATCH 1/2] git-svn: add (failing) test for SVN 1.5+ merge with intervening commit","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2009-11-14T21:40:32Z","receivedAt":"2009-11-14T21:40:32Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"Toby Allsopp <toby.allsopp@navman.co.nz> wrote:\n> This test exposes a bug in git-svn's handling of SVN 1.5+ mergeinfo\n> properties.  The problematic case is when there is some commit on an\n> unrelated branch after the last commit on the merged-from branch.\n> When SVN records the mergeinfo property, it records the latest\n> revision in the whole repository, which, in the problematic case, is\n> not on the branch it is merging from.\n> \n> To trigger the git-svn bug, we modify t9151 to include two SVN merges,\n> the second of which has an intervening commit.  The SVN dump was\n> generated using SVN 1.6.6 (on Debian squeeze amd64).\n> \n> Signed-off-by: Toby Allsopp <toby.allsopp@navman.co.nz>\n\nHi Toby,\n\nThanks for this series, acked and squashed into a single commit to avoid\nunnecessary bisection failures at git://git.bogomips.org/git-svn\n\ncommit 753dc384dc2c4ab3e1049f695425cebf41ff7e6b\nAuthor: Toby Allsopp <toby.allsopp@navman.co.nz>\nDate:   Sat Nov 14 13:26:47 2009 -0800\n\n    git svn: handle SVN merges from revisions past the tip of the branch\n    \n    When recording the revisions that it has merged, SVN sets the top\n    revision to be the latest revision in the repository, which is not\n    necessarily a revision on the branch that is being merged from.  When\n    it is not on the branch, git-svn fails to add the extra parent to\n    represent the merge because it relies on finding the commit on the\n    branch that corresponds to the top of the SVN merge range.\n    \n    In order to correctly handle this case, we look for the maximum\n    revision less than or equal to the top of the SVN merge range that is\n    actually on the branch being merged from.\n    \n    [ew: This includes the following (squashed) commit to prevent\n         errors during bisect:]\n    \n      Author: Toby Allsopp <toby.allsopp@navman.co.nz>\n      Date:   Fri Nov 13 09:48:39 2009 +1300\n    \n        git-svn: add (failing) test for SVN 1.5+ merge with intervening commit\n    \n        This test exposes a bug in git-svn's handling of SVN 1.5+ mergeinfo\n        properties.  The problematic case is when there is some commit on an\n        unrelated branch after the last commit on the merged-from branch.\n        When SVN records the mergeinfo property, it records the latest\n        revision in the whole repository, which, in the problematic case, is\n        not on the branch it is merging from.\n    \n        To trigger the git-svn bug, we modify t9151 to include two SVN merges,\n        the second of which has an intervening commit.  The SVN dump was\n        generated using SVN 1.6.6 (on Debian squeeze amd64).\n    \n    Signed-off-by: Toby Allsopp <toby.allsopp@navman.co.nz>\n    Acked-by: Eric Wong <normalperson@yhbt.net>\n\n-- \nEric Wong\n"},{"id":"127651","messageId":"87k4xrb785.fsf@navakl084.mitacad.com","threadId":"21599","inReplyTo":"20091114214031.GA3732@dcvr.yhbt.net","subject":"Re: [PATCH 1/2] git-svn: add (failing) test for SVN 1.5+ merge with intervening commit","fromName":"Toby Allsopp","fromEmail":"toby.allsopp@navman.co.nz","sentAt":"2009-11-16T01:15:22Z","receivedAt":"2009-11-16T01:15:22Z","isPatch":true,"sender":{"key":"toby.allsopp@navman.co.nz","avatar":null},"body":"[Dropped Junio from CC]\n\nOn Sun, Nov 15 2009, Eric Wong wrote:\n\n> Hi Toby,\n>\n> Thanks for this series, acked and squashed into a single commit to avoid\n> unnecessary bisection failures at git://git.bogomips.org/git-svn\n\nGreat, thanks.  I have no objection to being squashed, but I'm not sure\nwhat you mean by bisection failures.  Does a test_expect_failure cause\nproblems for bisection?  It appears to be fairly common to introduce a\nfailing test case and later fix it, e.g. ce06461 then 751c597.  I'd just\nlike to understand any potential problems with what I did.\n\nCheers,\nToby.\n"},{"id":"127652","messageId":"20091116013013.GA3829@dcvr.yhbt.net","threadId":"21599","inReplyTo":"87k4xrb785.fsf@navakl084.mitacad.com","subject":"Re: [PATCH 1/2] git-svn: add (failing) test for SVN 1.5+ merge with intervening commit","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2009-11-16T01:30:13Z","receivedAt":"2009-11-16T01:30:13Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"Toby Allsopp <Toby.Allsopp@navman.co.nz> wrote:\n> [Dropped Junio from CC]\n> \n> On Sun, Nov 15 2009, Eric Wong wrote:\n> \n> > Hi Toby,\n> >\n> > Thanks for this series, acked and squashed into a single commit to avoid\n> > unnecessary bisection failures at git://git.bogomips.org/git-svn\n> \n> Great, thanks.  I have no objection to being squashed, but I'm not sure\n> what you mean by bisection failures.  Does a test_expect_failure cause\n> problems for bisection?  It appears to be fairly common to introduce a\n> failing test case and later fix it, e.g. ce06461 then 751c597.  I'd just\n> like to understand any potential problems with what I did.\n\nOops.  I didn't even notice you had test_expect_failure there :x\nI'll just leave it as is incase somebody has already pulled from me\n(other, unrelated patches coming in a few)\n\n-- \nEric Wong\n"}]}