{"thread":{"id":"22751","subject":"[PATCH 2/3] t9151: Add two new svn:mergeinfo test cases","startedAt":"2010-02-22T07:57:19Z","lastAt":"2010-02-26T09:50:14Z","messageCount":10,"participants":["Tuomas Suutari","Thomas Rast","Sam Vilain","Eric Wong"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"135276","messageId":"1266825442-32107-1-git-send-email-tuomas.suutari@gmail.com","threadId":"22751","inReplyTo":null,"subject":"git-svn detects some merges incorrectly from svn:mergeinfo","fromName":"Tuomas Suutari","fromEmail":"tuomas.suutari@gmail.com","sentAt":"2010-02-22T07:57:19Z","receivedAt":"2010-02-22T07:57:19Z","isPatch":false,"sender":{"key":"tuomas.suutari@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2368817?v=4"},"body":"Hi,\n\nNow that git-svn detects merges from svn:mergeinfo, I thought it's\ntime to re-import some of my SVN repos with git-svn. Detecting of the\nmerges worked mostly well, but when inspecting the imported history\nwith gitk, I found some incorrectly detected merges.\n\nThis patch series adds a test case and a fix for the case.\n\nI was a bit uncertain if the fix should go to parents_exclude function\nor to \"cater for merges which merge commits from multiple branches\"\nsection of find_extra_svn_parents function. I chose the latter and at\nleast it does the trick.\n\n-- \nTuomas\n"},{"id":"135274","messageId":"1266825442-32107-2-git-send-email-tuomas.suutari@gmail.com","threadId":"22751","inReplyTo":"1266825442-32107-1-git-send-email-tuomas.suutari@gmail.com","subject":"[PATCH 1/3] t9151: Fix a few commits in the SVN dump","fromName":"Tuomas Suutari","fromEmail":"tuomas.suutari@gmail.com","sentAt":"2010-02-22T07:57:20Z","receivedAt":"2010-02-22T07:57:20Z","isPatch":true,"sender":{"key":"tuomas.suutari@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2368817?v=4"},"body":"A few \"svn cp\" commands and commit commands were executed in incorrect\norder. Therefore some of the desired commits were missing and some\nwere committed with wrong revision number in the commit message. This\nmade it hard to compare the produced git repository with the SVN\nrepository.\n\nThe dump file is updated too, but only the relevant parts and with\nhand-edited timestamps to make history linear.\n\nSigned-off-by: Tuomas Suutari <tuomas.suutari@gmail.com>\n---\n t/t9151/make-svnmerge-dump |    6 +-\n t/t9151/svn-mergeinfo.dump |  106 +++++++++++++++++++++++++++++--------------\n 2 files changed, 74 insertions(+), 38 deletions(-)\n\ndiff --git a/t/t9151/make-svnmerge-dump b/t/t9151/make-svnmerge-dump\nindex 3d73f14..3168c7c 100644\n--- a/t/t9151/make-svnmerge-dump\n+++ b/t/t9151/make-svnmerge-dump\n@@ -174,8 +174,8 @@ cd ..\n \n say \"Make PARTIAL branch\"\n svn update\n-i=$(commit $i \"make partial branch\")\n svn cp trunk/subdir branches/partial\n+i=$(commit $i \"make partial branch\")\n \n say \"Make a commit to PARTIAL\"\n svn update\n@@ -194,13 +194,13 @@ cd ../../\n \n say \"Tagging trunk\"\n svn update\n-i=$(commit $i \"tagging v1.0\")\n svn cp trunk tags/v1.0\n+i=$(commit $i \"tagging v1.0\")\n \n say \"Branching BUGFIX from v1.0\"\n svn update\n-i=$(commit $i \"make bugfix branch from tag\")\n svn cp tags/v1.0 branches/bugfix\n+i=$(commit $i \"make bugfix branch from tag\")\n \n say \"Make a commit to BUGFIX\"\n svn update\ndiff --git a/t/t9151/svn-mergeinfo.dump b/t/t9151/svn-mergeinfo.dump\nindex ebf386e..f228958 100644\n--- a/t/t9151/svn-mergeinfo.dump\n+++ b/t/t9151/svn-mergeinfo.dump\n@@ -1713,13 +1713,13 @@ Node-copyfrom-path: branches/left/subdir\n \n \n Revision-number: 27\n-Prop-content-length: 118\n-Content-length: 118\n+Prop-content-length: 123\n+Content-length: 123\n \n K 7\n svn:log\n-V 20\n-(r28) partial update\n+V 25\n+(r27) make partial branch\n K 10\n svn:author\n V 3\n@@ -1737,6 +1737,24 @@ Node-copyfrom-rev: 26\n Node-copyfrom-path: trunk/subdir\n \n \n+Revision-number: 28\n+Prop-content-length: 118\n+Content-length: 118\n+\n+K 7\n+svn:log\n+V 20\n+(r28) partial update\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-01-19T04:14:54.000000Z\n+PROPS-END\n+\n Node-path: branches/partial/palindromes\n Node-kind: file\n Node-action: add\n@@ -1750,7 +1768,7 @@ PROPS-END\n racecar\n \n \n-Revision-number: 28\n+Revision-number: 29\n Prop-content-length: 126\n Content-length: 126\n \n@@ -1771,15 +1789,15 @@ PROPS-END\n Node-path: trunk/subdir\n Node-kind: dir\n Node-action: change\n-Prop-content-length: 142\n-Content-length: 142\n+Prop-content-length: 145\n+Content-length: 145\n \n K 13\n svn:mergeinfo\n-V 106\n+V 109\n /branches/left/subdir:2-25\n /branches/left-sub/subdir:4-19\n-/branches/partial:27\n+/branches/partial:27-28\n /branches/right/subdir:2-22\n PROPS-END\n \n@@ -1787,20 +1805,20 @@ PROPS-END\n Node-path: trunk/subdir/palindromes\n Node-kind: file\n Node-action: add\n-Node-copyfrom-rev: 27\n+Node-copyfrom-rev: 28\n Node-copyfrom-path: branches/partial/palindromes\n Text-copy-source-md5: 5d1c2024fb5efc4eef812856df1b080c\n Text-copy-source-sha1: 5f8509ddd14c91a52864dd1447344e706f9bbc69\n \n \n-Revision-number: 29\n-Prop-content-length: 131\n-Content-length: 131\n+Revision-number: 30\n+Prop-content-length: 116\n+Content-length: 116\n \n K 7\n svn:log\n-V 33\n-(r31) make bugfix branch from tag\n+V 18\n+(r30) tagging v1.0\n K 10\n svn:author\n V 3\n@@ -1814,18 +1832,18 @@ PROPS-END\n Node-path: tags/v1.0\n Node-kind: dir\n Node-action: add\n-Node-copyfrom-rev: 28\n+Node-copyfrom-rev: 29\n Node-copyfrom-path: trunk\n \n \n-Revision-number: 30\n-Prop-content-length: 120\n-Content-length: 120\n+Revision-number: 31\n+Prop-content-length: 131\n+Content-length: 131\n \n K 7\n svn:log\n-V 22\n-(r32) commit to bugfix\n+V 33\n+(r31) make bugfix branch from tag\n K 10\n svn:author\n V 3\n@@ -1833,16 +1851,34 @@ adm\n K 8\n svn:date\n V 27\n-2010-01-19T04:15:03.043218Z\n+2010-01-19T04:15:01.000000Z\n PROPS-END\n \n Node-path: branches/bugfix\n Node-kind: dir\n Node-action: add\n-Node-copyfrom-rev: 29\n+Node-copyfrom-rev: 30\n Node-copyfrom-path: tags/v1.0\n \n \n+Revision-number: 32\n+Prop-content-length: 120\n+Content-length: 120\n+\n+K 7\n+svn:log\n+V 22\n+(r32) commit to bugfix\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-01-19T04:15:02.000000Z\n+PROPS-END\n+\n Node-path: branches/bugfix/subdir/palindromes\n Node-kind: file\n Node-action: change\n@@ -1855,7 +1891,7 @@ racecar\n kayak\n \n \n-Revision-number: 31\n+Revision-number: 33\n Prop-content-length: 125\n Content-length: 125\n \n@@ -1876,35 +1912,35 @@ PROPS-END\n Node-path: trunk\n Node-kind: dir\n Node-action: change\n-Prop-content-length: 133\n-Content-length: 133\n+Prop-content-length: 137\n+Content-length: 137\n \n K 13\n svn:mergeinfo\n-V 98\n-/branches/bugfix:30\n+V 101\n+/branches/bugfix:31-32\n /branches/left:2-25\n /branches/left-sub:4-19\n /branches/right:2-22\n-/tags/v1.0:29\n+/tags/v1.0:30\n PROPS-END\n \n \n Node-path: trunk/subdir\n Node-kind: dir\n Node-action: change\n-Prop-content-length: 190\n-Content-length: 190\n+Prop-content-length: 196\n+Content-length: 196\n \n K 13\n svn:mergeinfo\n-V 154\n-/branches/bugfix/subdir:30\n+V 160\n+/branches/bugfix/subdir:31-32\n /branches/left/subdir:2-25\n /branches/left-sub/subdir:4-19\n-/branches/partial:27\n+/branches/partial:27-28\n /branches/right/subdir:2-22\n-/tags/v1.0/subdir:29\n+/tags/v1.0/subdir:30\n PROPS-END\n \n \n-- \n1.7.0.86.g7501\n"},{"id":"135272","messageId":"1266825442-32107-3-git-send-email-tuomas.suutari@gmail.com","threadId":"22751","inReplyTo":"1266825442-32107-1-git-send-email-tuomas.suutari@gmail.com","subject":"[PATCH 2/3] t9151: Add two new svn:mergeinfo test cases","fromName":"Tuomas Suutari","fromEmail":"tuomas.suutari@gmail.com","sentAt":"2010-02-22T07:57:21Z","receivedAt":"2010-02-22T07:57:21Z","isPatch":true,"sender":{"key":"tuomas.suutari@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2368817?v=4"},"body":"When svn:mergeinfo contains two new parents in a specific order and\none is ancestor of the other, it is possible that git-svn discards the\nwrong one. The first test case (\"commit made to merged branch is\nreachable from the merge\") proves this.\n\nThe second test case (\"merging two branches in one commit is detected\ncorrectly\") is just for completeness, since there was no test for\nmerging two (feature) branches to trunk in one commit.\n\nSigned-off-by: Tuomas Suutari <tuomas.suutari@gmail.com>\n---\n t/t9151-svn-mergeinfo.sh   |   15 ++\n t/t9151/make-svnmerge-dump |   83 +++++++\n t/t9151/svn-mergeinfo.dump |  536 +++++++++++++++++++++++++++++++++++++++-----\n 3 files changed, 581 insertions(+), 53 deletions(-)\n\ndiff --git a/t/t9151-svn-mergeinfo.sh b/t/t9151-svn-mergeinfo.sh\nindex 3569c62..353f543 100755\n--- a/t/t9151-svn-mergeinfo.sh\n+++ b/t/t9151-svn-mergeinfo.sh\n@@ -33,6 +33,21 @@ test_expect_success 'svn non-merge merge commits did not become git merge commit\n \t[ -z \"$bad_non_merges\" ]\n \t'\n \n+test_expect_failure 'commit made to merged branch is reachable from the merge' '\n+\tbefore_commit=$(git rev-list --all --grep=\"trunk commit before merging trunk to b2\")\n+\tmerge_commit=$(git rev-list --all --grep=\"Merge trunk to b2\")\n+\tnot_reachable=$(git rev-list -1 $before_commit --not $merge_commit)\n+\t[ -z \"$not_reachable\" ]\n+\t'\n+\n+test_expect_success 'merging two branches in one commit is detected correctly' '\n+\tf1_commit=$(git rev-list --all --grep=\"make f1 branch from trunk\")\n+\tf2_commit=$(git rev-list --all --grep=\"make f2 branch from trunk\")\n+\tmerge_commit=$(git rev-list --all --grep=\"Merge f1 and f2 to trunk\")\n+\tnot_reachable=$(git rev-list -1 $f1_commit $f2_commit --not $merge_commit)\n+\t[ -z \"$not_reachable\" ]\n+\t'\n+\n test_expect_failure 'everything got merged in the end' '\n \tunmerged=$(git rev-list --all --not master)\n \t[ -z \"$unmerged\" ]\ndiff --git a/t/t9151/make-svnmerge-dump b/t/t9151/make-svnmerge-dump\nindex 3168c7c..e1e138c 100644\n--- a/t/t9151/make-svnmerge-dump\n+++ b/t/t9151/make-svnmerge-dump\n@@ -156,6 +156,89 @@ svn merge ../branches/right --accept postpone\n i=$(commit $i \"non-merge right to trunk 2\")\n cd ..\n \n+say \"Branching b1 from trunk\"\n+svn update\n+svn cp trunk branches/b1\n+i=$(commit $i \"make b1 branch from trunk\")\n+\n+say \"Branching b2 from trunk\"\n+svn update\n+svn cp trunk branches/b2\n+i=$(commit $i \"make b2 branch from trunk\")\n+\n+say \"Make a commit to b2\"\n+svn update\n+cd branches/b2\n+echo \"b2\" > b2file\n+svn add b2file\n+i=$(commit $i \"b2 update 1\")\n+cd ../..\n+\n+say \"Make a commit to b1\"\n+svn update\n+cd branches/b1\n+echo \"b1\" > b1file\n+svn add b1file\n+i=$(commit $i \"b1 update 1\")\n+cd ../..\n+\n+say \"Merge b1 to trunk\"\n+svn update\n+cd trunk\n+svn merge ../branches/b1/ --accept postpone\n+i=$(commit $i \"Merge b1 to trunk\")\n+cd ..\n+\n+say \"Make a commit to trunk before merging trunk to b2\"\n+svn update\n+cd trunk\n+echo \"trunk\" > trunkfile\n+svn add trunkfile\n+i=$(commit $i \"trunk commit before merging trunk to b2\")\n+cd ..\n+\n+say \"Merge trunk to b2\"\n+svn update\n+cd branches/b2\n+svn merge ../../trunk/ --accept postpone\n+i=$(commit $i \"Merge trunk to b2\")\n+cd ../..\n+\n+say \"Merge b2 to trunk\"\n+svn update\n+cd trunk\n+svn merge ../branches/b2/ --accept postpone\n+svn resolved b1file\n+svn resolved trunkfile\n+i=$(commit $i \"Merge b2 to trunk\")\n+cd ..\n+\n+say \"Creating f1 from trunk with a new file\"\n+svn update\n+svn cp trunk branches/f1\n+cd branches/f1\n+echo \"f1\" > f1file\n+svn add f1file\n+cd ../..\n+i=$(commit $i \"make f1 branch from trunk with a new file\")\n+\n+say \"Creating f2 from trunk with a new file\"\n+svn update\n+svn cp trunk branches/f2\n+cd branches/f2\n+echo \"f2\" > f2file\n+svn add f2file\n+cd ../..\n+i=$(commit $i \"make f2 branch from trunk with a new file\")\n+\n+say \"Merge f1 and f2 to trunk in one go\"\n+svn update\n+cd trunk\n+svn merge ../branches/f1/ --accept postpone\n+svn merge ../branches/f2/ --accept postpone\n+i=$(commit $i \"Merge f1 and f2 to trunk\")\n+cd ..\n+\n say \"Adding subdirectory to LEFT\"\n svn update\n cd branches/left\ndiff --git a/t/t9151/svn-mergeinfo.dump b/t/t9151/svn-mergeinfo.dump\nindex f228958..47cafcf 100644\n--- a/t/t9151/svn-mergeinfo.dump\n+++ b/t/t9151/svn-mergeinfo.dump\n@@ -1633,13 +1633,427 @@ PROPS-END\n \n \n Revision-number: 25\n+Prop-content-length: 129\n+Content-length: 129\n+\n+K 7\n+svn:log\n+V 31\n+(r25) make b1 branch from trunk\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:18:56.084589Z\n+PROPS-END\n+\n+Node-path: branches/b1\n+Node-kind: dir\n+Node-action: add\n+Node-copyfrom-rev: 24\n+Node-copyfrom-path: trunk\n+\n+\n+Revision-number: 26\n+Prop-content-length: 129\n+Content-length: 129\n+\n+K 7\n+svn:log\n+V 31\n+(r26) make b2 branch from trunk\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:18:59.076940Z\n+PROPS-END\n+\n+Node-path: branches/b2\n+Node-kind: dir\n+Node-action: add\n+Node-copyfrom-rev: 25\n+Node-copyfrom-path: trunk\n+\n+\n+Revision-number: 27\n+Prop-content-length: 115\n+Content-length: 115\n+\n+K 7\n+svn:log\n+V 17\n+(r27) b2 update 1\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:19:01.095762Z\n+PROPS-END\n+\n+Node-path: branches/b2/b2file\n+Node-kind: file\n+Node-action: add\n+Prop-content-length: 10\n+Text-content-length: 3\n+Text-content-md5: 5edbdd57cba621eb3c6e601bf563b4dc\n+Text-content-sha1: 9d4b38049776bd0a2074d67cad23f8eaed35a3b3\n+Content-length: 13\n+\n+PROPS-END\n+b2\n+\n+\n+Revision-number: 28\n+Prop-content-length: 115\n+Content-length: 115\n+\n+K 7\n+svn:log\n+V 17\n+(r28) b1 update 1\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:19:03.097465Z\n+PROPS-END\n+\n+Node-path: branches/b1/b1file\n+Node-kind: file\n+Node-action: add\n+Prop-content-length: 10\n+Text-content-length: 3\n+Text-content-md5: 08778dfd9ac4f603231896aba7aad523\n+Text-content-sha1: b551771aa4ad5b14123fc3bd98d89db2bc0edd4f\n+Content-length: 13\n+\n+PROPS-END\n+b1\n+\n+\n+Revision-number: 29\n+Prop-content-length: 121\n+Content-length: 121\n+\n+K 7\n+svn:log\n+V 23\n+(r29) Merge b1 to trunk\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:19:06.073175Z\n+PROPS-END\n+\n+Node-path: trunk\n+Node-kind: dir\n+Node-action: change\n+Prop-content-length: 118\n+Content-length: 118\n+\n+K 13\n+svn:mergeinfo\n+V 83\n+/branches/b1:25-28\n+/branches/left:2-22\n+/branches/left-sub:4-19\n+/branches/right:2-22\n+PROPS-END\n+\n+\n+Node-path: trunk/b1file\n+Node-kind: file\n+Node-action: add\n+Node-copyfrom-rev: 28\n+Node-copyfrom-path: branches/b1/b1file\n+Text-copy-source-md5: 08778dfd9ac4f603231896aba7aad523\n+Text-copy-source-sha1: b551771aa4ad5b14123fc3bd98d89db2bc0edd4f\n+\n+\n+Revision-number: 30\n+Prop-content-length: 143\n+Content-length: 143\n+\n+K 7\n+svn:log\n+V 45\n+(r30) trunk commit before merging trunk to b2\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:19:08.096353Z\n+PROPS-END\n+\n+Node-path: trunk/trunkfile\n+Node-kind: file\n+Node-action: add\n+Prop-content-length: 10\n+Text-content-length: 6\n+Text-content-md5: edf45fe5c98c5367733b39bbb2bb20d9\n+Text-content-sha1: 7361d1685e5c86dfc523620cfaf598f196f86239\n+Content-length: 16\n+\n+PROPS-END\n+trunk\n+\n+\n+Revision-number: 31\n+Prop-content-length: 121\n+Content-length: 121\n+\n+K 7\n+svn:log\n+V 23\n+(r31) Merge trunk to b2\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:19:11.081541Z\n+PROPS-END\n+\n+Node-path: branches/b2\n+Node-kind: dir\n+Node-action: change\n+Prop-content-length: 131\n+Content-length: 131\n+\n+K 13\n+svn:mergeinfo\n+V 96\n+/branches/b1:25-28\n+/branches/left:2-22\n+/branches/left-sub:4-19\n+/branches/right:2-22\n+/trunk:26-30\n+PROPS-END\n+\n+\n+Node-path: branches/b2/b1file\n+Node-kind: file\n+Node-action: add\n+Node-copyfrom-rev: 30\n+Node-copyfrom-path: trunk/b1file\n+Text-copy-source-md5: 08778dfd9ac4f603231896aba7aad523\n+Text-copy-source-sha1: b551771aa4ad5b14123fc3bd98d89db2bc0edd4f\n+\n+\n+Node-path: branches/b2/trunkfile\n+Node-kind: file\n+Node-action: add\n+Node-copyfrom-rev: 30\n+Node-copyfrom-path: trunk/trunkfile\n+Text-copy-source-md5: edf45fe5c98c5367733b39bbb2bb20d9\n+Text-copy-source-sha1: 7361d1685e5c86dfc523620cfaf598f196f86239\n+\n+\n+Revision-number: 32\n+Prop-content-length: 121\n+Content-length: 121\n+\n+K 7\n+svn:log\n+V 23\n+(r32) Merge b2 to trunk\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:19:14.117939Z\n+PROPS-END\n+\n+Node-path: trunk\n+Node-kind: dir\n+Node-action: change\n+Prop-content-length: 138\n+Content-length: 138\n+\n+K 13\n+svn:mergeinfo\n+V 102\n+/branches/b1:25-28\n+/branches/b2:26-31\n+/branches/left:2-22\n+/branches/left-sub:4-19\n+/branches/right:2-22\n+PROPS-END\n+\n+\n+Node-path: trunk/b2file\n+Node-kind: file\n+Node-action: add\n+Node-copyfrom-rev: 31\n+Node-copyfrom-path: branches/b2/b2file\n+Text-copy-source-md5: 5edbdd57cba621eb3c6e601bf563b4dc\n+Text-copy-source-sha1: 9d4b38049776bd0a2074d67cad23f8eaed35a3b3\n+\n+\n+Revision-number: 33\n+Prop-content-length: 145\n+Content-length: 145\n+\n+K 7\n+svn:log\n+V 47\n+(r33) make f1 branch from trunk with a new file\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:19:17.105832Z\n+PROPS-END\n+\n+Node-path: branches/f1\n+Node-kind: dir\n+Node-action: add\n+Node-copyfrom-rev: 32\n+Node-copyfrom-path: trunk\n+\n+\n+Node-path: branches/f1/f1file\n+Node-kind: file\n+Node-action: add\n+Prop-content-length: 10\n+Text-content-length: 3\n+Text-content-md5: 2b1abc6b6c5c0018851f9f8e6475563b\n+Text-content-sha1: aece6dfba588900e00d95601d22b4408d49580af\n+Content-length: 13\n+\n+PROPS-END\n+f1\n+\n+\n+Revision-number: 34\n+Prop-content-length: 145\n+Content-length: 145\n+\n+K 7\n+svn:log\n+V 47\n+(r34) make f2 branch from trunk with a new file\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:19:20.110057Z\n+PROPS-END\n+\n+Node-path: branches/f2\n+Node-kind: dir\n+Node-action: add\n+Node-copyfrom-rev: 33\n+Node-copyfrom-path: trunk\n+\n+\n+Node-path: branches/f2/f2file\n+Node-kind: file\n+Node-action: add\n+Prop-content-length: 10\n+Text-content-length: 3\n+Text-content-md5: 575c5638d60271457e54ab7d07309502\n+Text-content-sha1: 1c49a440c352f3473efa9512255033b94dc7def0\n+Content-length: 13\n+\n+PROPS-END\n+f2\n+\n+\n+Revision-number: 35\n+Prop-content-length: 128\n+Content-length: 128\n+\n+K 7\n+svn:log\n+V 30\n+(r35) Merge f1 and f2 to trunk\n+K 10\n+svn:author\n+V 3\n+adm\n+K 8\n+svn:date\n+V 27\n+2010-02-22T06:19:24.081490Z\n+PROPS-END\n+\n+Node-path: trunk\n+Node-kind: dir\n+Node-action: change\n+Prop-content-length: 173\n+Content-length: 173\n+\n+K 13\n+svn:mergeinfo\n+V 137\n+/branches/b1:25-28\n+/branches/b2:26-31\n+/branches/f1:33-34\n+/branches/f2:34\n+/branches/left:2-22\n+/branches/left-sub:4-19\n+/branches/right:2-22\n+PROPS-END\n+\n+\n+Node-path: trunk/f1file\n+Node-kind: file\n+Node-action: add\n+Node-copyfrom-rev: 34\n+Node-copyfrom-path: branches/f1/f1file\n+Text-copy-source-md5: 2b1abc6b6c5c0018851f9f8e6475563b\n+Text-copy-source-sha1: aece6dfba588900e00d95601d22b4408d49580af\n+\n+\n+Node-path: trunk/f2file\n+Node-kind: file\n+Node-action: add\n+Node-copyfrom-rev: 34\n+Node-copyfrom-path: branches/f2/f2file\n+Text-copy-source-md5: 575c5638d60271457e54ab7d07309502\n+Text-copy-source-sha1: 1c49a440c352f3473efa9512255033b94dc7def0\n+\n+\n+Revision-number: 36\n Prop-content-length: 135\n Content-length: 135\n \n K 7\n svn:log\n V 37\n-(r25) add subdirectory to left branch\n+(r36) add subdirectory to left branch\n K 10\n svn:author\n V 3\n@@ -1647,7 +2061,7 @@ adm\n K 8\n svn:date\n V 27\n-2010-01-19T04:14:46.052649Z\n+2010-02-22T06:19:26.113516Z\n PROPS-END\n \n Node-path: branches/left/subdir\n@@ -1672,14 +2086,14 @@ PROPS-END\n Yeehaw\n \n \n-Revision-number: 26\n+Revision-number: 37\n Prop-content-length: 123\n Content-length: 123\n \n K 7\n svn:log\n V 25\n-(r26) merge left to trunk\n+(r37) merge left to trunk\n K 10\n svn:author\n V 3\n@@ -1687,19 +2101,23 @@ adm\n K 8\n svn:date\n V 27\n-2010-01-19T04:14:49.040783Z\n+2010-02-22T06:19:29.073699Z\n PROPS-END\n \n Node-path: trunk\n Node-kind: dir\n Node-action: change\n-Prop-content-length: 99\n-Content-length: 99\n+Prop-content-length: 173\n+Content-length: 173\n \n K 13\n svn:mergeinfo\n-V 64\n-/branches/left:2-25\n+V 137\n+/branches/b1:25-28\n+/branches/b2:26-31\n+/branches/f1:33-34\n+/branches/f2:34\n+/branches/left:2-36\n /branches/left-sub:4-19\n /branches/right:2-22\n PROPS-END\n@@ -1708,18 +2126,18 @@ PROPS-END\n Node-path: trunk/subdir\n Node-kind: dir\n Node-action: add\n-Node-copyfrom-rev: 25\n+Node-copyfrom-rev: 36\n Node-copyfrom-path: branches/left/subdir\n \n \n-Revision-number: 27\n+Revision-number: 38\n Prop-content-length: 123\n Content-length: 123\n \n K 7\n svn:log\n V 25\n-(r27) make partial branch\n+(r38) make partial branch\n K 10\n svn:author\n V 3\n@@ -1727,24 +2145,24 @@ adm\n K 8\n svn:date\n V 27\n-2010-01-19T04:14:53.049037Z\n+2010-02-22T06:19:32.072243Z\n PROPS-END\n \n Node-path: branches/partial\n Node-kind: dir\n Node-action: add\n-Node-copyfrom-rev: 26\n+Node-copyfrom-rev: 37\n Node-copyfrom-path: trunk/subdir\n \n \n-Revision-number: 28\n+Revision-number: 39\n Prop-content-length: 118\n Content-length: 118\n \n K 7\n svn:log\n V 20\n-(r28) partial update\n+(r39) partial update\n K 10\n svn:author\n V 3\n@@ -1752,7 +2170,7 @@ adm\n K 8\n svn:date\n V 27\n-2010-01-19T04:14:54.000000Z\n+2010-02-22T06:19:34.097961Z\n PROPS-END\n \n Node-path: branches/partial/palindromes\n@@ -1768,14 +2186,14 @@ PROPS-END\n racecar\n \n \n-Revision-number: 29\n+Revision-number: 40\n Prop-content-length: 126\n Content-length: 126\n \n K 7\n svn:log\n V 28\n-(r29) merge partial to trunk\n+(r40) merge partial to trunk\n K 10\n svn:author\n V 3\n@@ -1783,21 +2201,25 @@ adm\n K 8\n svn:date\n V 27\n-2010-01-19T04:14:56.041526Z\n+2010-02-22T06:19:37.080211Z\n PROPS-END\n \n Node-path: trunk/subdir\n Node-kind: dir\n Node-action: change\n-Prop-content-length: 145\n-Content-length: 145\n+Prop-content-length: 246\n+Content-length: 246\n \n K 13\n svn:mergeinfo\n-V 109\n-/branches/left/subdir:2-25\n+V 210\n+/branches/b1/subdir:25-28\n+/branches/b2/subdir:26-31\n+/branches/f1/subdir:33-34\n+/branches/f2/subdir:34\n+/branches/left/subdir:2-36\n /branches/left-sub/subdir:4-19\n-/branches/partial:27-28\n+/branches/partial:38-39\n /branches/right/subdir:2-22\n PROPS-END\n \n@@ -1805,20 +2227,20 @@ PROPS-END\n Node-path: trunk/subdir/palindromes\n Node-kind: file\n Node-action: add\n-Node-copyfrom-rev: 28\n+Node-copyfrom-rev: 39\n Node-copyfrom-path: branches/partial/palindromes\n Text-copy-source-md5: 5d1c2024fb5efc4eef812856df1b080c\n Text-copy-source-sha1: 5f8509ddd14c91a52864dd1447344e706f9bbc69\n \n \n-Revision-number: 30\n+Revision-number: 41\n Prop-content-length: 116\n Content-length: 116\n \n K 7\n svn:log\n V 18\n-(r30) tagging v1.0\n+(r41) tagging v1.0\n K 10\n svn:author\n V 3\n@@ -1826,24 +2248,24 @@ adm\n K 8\n svn:date\n V 27\n-2010-01-19T04:15:00.039761Z\n+2010-02-22T06:19:40.083460Z\n PROPS-END\n \n Node-path: tags/v1.0\n Node-kind: dir\n Node-action: add\n-Node-copyfrom-rev: 29\n+Node-copyfrom-rev: 40\n Node-copyfrom-path: trunk\n \n \n-Revision-number: 31\n+Revision-number: 42\n Prop-content-length: 131\n Content-length: 131\n \n K 7\n svn:log\n V 33\n-(r31) make bugfix branch from tag\n+(r42) make bugfix branch from tag\n K 10\n svn:author\n V 3\n@@ -1851,24 +2273,24 @@ adm\n K 8\n svn:date\n V 27\n-2010-01-19T04:15:01.000000Z\n+2010-02-22T06:19:43.118075Z\n PROPS-END\n \n Node-path: branches/bugfix\n Node-kind: dir\n Node-action: add\n-Node-copyfrom-rev: 30\n+Node-copyfrom-rev: 41\n Node-copyfrom-path: tags/v1.0\n \n \n-Revision-number: 32\n+Revision-number: 43\n Prop-content-length: 120\n Content-length: 120\n \n K 7\n svn:log\n V 22\n-(r32) commit to bugfix\n+(r43) commit to bugfix\n K 10\n svn:author\n V 3\n@@ -1876,7 +2298,7 @@ adm\n K 8\n svn:date\n V 27\n-2010-01-19T04:15:02.000000Z\n+2010-02-22T06:19:45.079536Z\n PROPS-END\n \n Node-path: branches/bugfix/subdir/palindromes\n@@ -1891,14 +2313,14 @@ racecar\n kayak\n \n \n-Revision-number: 33\n+Revision-number: 44\n Prop-content-length: 125\n Content-length: 125\n \n K 7\n svn:log\n V 27\n-(r33) Merge BUGFIX to TRUNK\n+(r44) Merge BUGFIX to TRUNK\n K 10\n svn:author\n V 3\n@@ -1906,41 +2328,49 @@ adm\n K 8\n svn:date\n V 27\n-2010-01-19T04:15:06.043723Z\n+2010-02-22T06:19:48.078914Z\n PROPS-END\n \n Node-path: trunk\n Node-kind: dir\n Node-action: change\n-Prop-content-length: 137\n-Content-length: 137\n+Prop-content-length: 210\n+Content-length: 210\n \n K 13\n svn:mergeinfo\n-V 101\n-/branches/bugfix:31-32\n-/branches/left:2-25\n+V 174\n+/branches/b1:25-28\n+/branches/b2:26-31\n+/branches/bugfix:42-43\n+/branches/f1:33-34\n+/branches/f2:34\n+/branches/left:2-36\n /branches/left-sub:4-19\n /branches/right:2-22\n-/tags/v1.0:30\n+/tags/v1.0:41\n PROPS-END\n \n \n Node-path: trunk/subdir\n Node-kind: dir\n Node-action: change\n-Prop-content-length: 196\n-Content-length: 196\n+Prop-content-length: 297\n+Content-length: 297\n \n K 13\n svn:mergeinfo\n-V 160\n-/branches/bugfix/subdir:31-32\n-/branches/left/subdir:2-25\n+V 261\n+/branches/b1/subdir:25-28\n+/branches/b2/subdir:26-31\n+/branches/bugfix/subdir:42-43\n+/branches/f1/subdir:33-34\n+/branches/f2/subdir:34\n+/branches/left/subdir:2-36\n /branches/left-sub/subdir:4-19\n-/branches/partial:27-28\n+/branches/partial:38-39\n /branches/right/subdir:2-22\n-/tags/v1.0/subdir:30\n+/tags/v1.0/subdir:41\n PROPS-END\n \n \n-- \n1.7.0.86.g7501\n"},{"id":"135277","messageId":"1266825442-32107-4-git-send-email-tuomas.suutari@gmail.com","threadId":"22751","inReplyTo":"1266825442-32107-1-git-send-email-tuomas.suutari@gmail.com","subject":"[PATCH 3/3] git-svn: Fix discarding of extra parents from svn:mergeinfo","fromName":"Tuomas Suutari","fromEmail":"tuomas.suutari@gmail.com","sentAt":"2010-02-22T07:57:22Z","receivedAt":"2010-02-22T07:57:22Z","isPatch":true,"sender":{"key":"tuomas.suutari@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2368817?v=4"},"body":"Use merge-base rather than rev-list for detecting if a parent is an\nancestor of another, because rev-list gives incorrect results\nsometimes.\n\nSigned-off-by: Tuomas Suutari <tuomas.suutari@gmail.com>\n---\n git-svn.perl             |    8 ++++----\n t/t9151-svn-mergeinfo.sh |    2 +-\n 2 files changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/git-svn.perl b/git-svn.perl\nindex 265852f..1e2bbe5 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -3268,11 +3268,11 @@ sub find_extra_svn_parents {\n \t\t\t\tnext if $i == $j;\n \t\t\t\tnext unless $new_parents[$i];\n \t\t\t\tnext unless $new_parents[$j];\n-\t\t\t\tmy $revs = command_oneline(\n-\t\t\t\t\t\"rev-list\", \"-1\",\n-\t\t\t\t\t\"$new_parents[$i]..$new_parents[$j]\",\n+\t\t\t\tmy $mergebase = command_oneline(\n+\t\t\t\t\t\"merge-base\",\n+\t\t\t\t\t\"$new_parents[$i]\", \"$new_parents[$j]\",\n \t\t\t\t       );\n-\t\t\t\tif ( !$revs ) {\n+\t\t\t\tif ( $mergebase eq $new_parents[$i] ) {\n \t\t\t\t\tundef($new_parents[$i]);\n \t\t\t\t}\n \t\t\t}\ndiff --git a/t/t9151-svn-mergeinfo.sh b/t/t9151-svn-mergeinfo.sh\nindex 353f543..1640824 100755\n--- a/t/t9151-svn-mergeinfo.sh\n+++ b/t/t9151-svn-mergeinfo.sh\n@@ -33,7 +33,7 @@ test_expect_success 'svn non-merge merge commits did not become git merge commit\n \t[ -z \"$bad_non_merges\" ]\n \t'\n \n-test_expect_failure 'commit made to merged branch is reachable from the merge' '\n+test_expect_success 'commit made to merged branch is reachable from the merge' '\n \tbefore_commit=$(git rev-list --all --grep=\"trunk commit before merging trunk to b2\")\n \tmerge_commit=$(git rev-list --all --grep=\"Merge trunk to b2\")\n \tnot_reachable=$(git rev-list -1 $before_commit --not $merge_commit)\n-- \n1.7.0.86.g7501\n"},{"id":"135287","messageId":"201002221057.35088.trast@student.ethz.ch","threadId":"22751","inReplyTo":"1266825442-32107-4-git-send-email-tuomas.suutari@gmail.com","subject":"Re: [PATCH 3/3] git-svn: Fix discarding of extra parents from svn:mergeinfo","fromName":"Thomas Rast","fromEmail":"trast@student.ethz.ch","sentAt":"2010-02-22T09:57:34Z","receivedAt":"2010-02-22T09:57:34Z","isPatch":true,"sender":{"key":"tr@thomasrast.ch","avatar":"https://avatars.githubusercontent.com/u/153510?v=4"},"body":"On Monday 22 February 2010 08:57:22 Tuomas Suutari wrote:\n> Use merge-base rather than rev-list for detecting if a parent is an\n> ancestor of another, because rev-list gives incorrect results\n> sometimes.\n[...]\n> -\t\t\t\tmy $revs = command_oneline(\n> -\t\t\t\t\t\"rev-list\", \"-1\",\n> -\t\t\t\t\t\"$new_parents[$i]..$new_parents[$j]\",\n> +\t\t\t\tmy $mergebase = command_oneline(\n> +\t\t\t\t\t\"merge-base\",\n> +\t\t\t\t\t\"$new_parents[$i]\", \"$new_parents[$j]\",\n>  \t\t\t\t       );\n> -\t\t\t\tif ( !$revs ) {\n> +\t\t\t\tif ( $mergebase eq $new_parents[$i] ) {\n>  \t\t\t\t\tundef($new_parents[$i]);\n\nI think you swapped the test (or I got confused, which is entirely\npossible).  Let I = $new_parents[$i] and J = $new_parents[$j].  The\nold one was\n\n  test -z \"$(git rev-list -1 I..J)\"\n\nwhich reads \"unless there are any commits on J which are not on I\",\ni.e., it fails unless J is an ancestor of I.\n\nBut the new one is\n\n  \"$(git merge-base I J)\" == I.\n\nso suddenly I must be an ancestor of J.\n\nIs that what you were fixing?  Because I don't think the 'rev-list -1'\ntest is any worse than the merge-base test.  If it's not, please tell\nus what you are fixing.  Either way, please change the commit message\nappropriately.\n\n-- \nThomas Rast\ntrast@{inf,student}.ethz.ch\n"},{"id":"135329","messageId":"201002222004.55898.tuomas.suutari@gmail.com","threadId":"22751","inReplyTo":"201002221057.35088.trast@student.ethz.ch","subject":"Re: [PATCH 3/3] git-svn: Fix discarding of extra parents from svn:mergeinfo","fromName":"Tuomas Suutari","fromEmail":"tuomas.suutari@gmail.com","sentAt":"2010-02-22T18:04:55Z","receivedAt":"2010-02-22T18:04:55Z","isPatch":true,"sender":{"key":"tuomas.suutari@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2368817?v=4"},"body":"On Mon 2010-02-22 11:57:34 Thomas Rast wrote:\n> On Monday 22 February 2010 08:57:22 Tuomas Suutari wrote:\n> > Use merge-base rather than rev-list for detecting if a parent is an\n> > ancestor of another, because rev-list gives incorrect results\n> > sometimes.\n> \n[...]\n> \n> I think you swapped the test (or I got confused, which is entirely\n> possible).\n\nAh, seems so. I was already writing a long reply explaining why rev-list \ncan't be used but only merge-base just to realize that, indeed, rev-list can \nbe used after all. The code just used to discard the wrong parent.\n\n> Let I = $new_parents[$i] and J = $new_parents[$j].  The\n> old one was\n> \n>   test -z \"$(git rev-list -1 I..J)\"\n> \n> which reads \"unless there are any commits on J which are not on I\",\n> i.e., it fails unless J is an ancestor of I.\n>\n> But the new one is\n> \n>   \"$(git merge-base I J)\" == I.\n> \n> so suddenly I must be an ancestor of J.\n>\n> Is that what you were fixing?\n\nYes.\n\n> Because I don't think the 'rev-list -1'\n> test is any worse than the merge-base test.\n\nYou're right. I failed to see that I can get the same results by swapping $i \nwith $j in the undef($new_parents[$i]) statement.\n\nMy pitfall was that I considered only changing the \"if ( !$revs )\" part to \n\"if ( $revs )\" with the rev-list approach. That wouldn't have worked, \nbecause then the other test case, included in PATCH 2, would have failed.\n(When there are two distinct branches merged to one.)\n\n> If it's not, please tell\n> us what you are fixing.  Either way, please change the commit message\n> appropriately.\n\nYes, the commit message was horrible. I was hoping that, by writing a test \ncase as a \"description\" about the problem, I would avoid writing so much \nEnglish... ;)\n\nI will send another patch soon. Hopefully with better commit message.\n\n-- \nTuomas\n"},{"id":"135331","messageId":"1266862373-28365-1-git-send-email-tuomas.suutari@gmail.com","threadId":"22751","inReplyTo":"1266825442-32107-4-git-send-email-tuomas.suutari@gmail.com","subject":"[PATCH 3/3 v2] git-svn: Fix discarding of extra parents from svn:mergeinfo","fromName":"Tuomas Suutari","fromEmail":"tuomas.suutari@gmail.com","sentAt":"2010-02-22T18:12:53Z","receivedAt":"2010-02-22T18:12:53Z","isPatch":true,"sender":{"key":"tuomas.suutari@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2368817?v=4"},"body":"If parent J is an ancestor of parent I, then parent J should be\ndiscarded, not I.\n\nNote that J is an ancestor of I if and only if rev-list I..J is emtpy,\nwhich is what we are testing here.\n\nSigned-off-by: Tuomas Suutari <tuomas.suutari@gmail.com>\n---\nThanks to Thomas Rast for pointing out that this can be made with a\nsmaller change and there is no need swap rev-list to merge-base after\nall.\n\n git-svn.perl             |    2 +-\n t/t9151-svn-mergeinfo.sh |    2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/git-svn.perl b/git-svn.perl\nindex 265852f..ed96a03 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -3273,7 +3273,7 @@ sub find_extra_svn_parents {\n \t\t\t\t\t\"$new_parents[$i]..$new_parents[$j]\",\n \t\t\t\t       );\n \t\t\t\tif ( !$revs ) {\n-\t\t\t\t\tundef($new_parents[$i]);\n+\t\t\t\t\tundef($new_parents[$j]);\n \t\t\t\t}\n \t\t\t}\n \t\t}\ndiff --git a/t/t9151-svn-mergeinfo.sh b/t/t9151-svn-mergeinfo.sh\nindex 353f543..1640824 100755\n--- a/t/t9151-svn-mergeinfo.sh\n+++ b/t/t9151-svn-mergeinfo.sh\n@@ -33,7 +33,7 @@ test_expect_success 'svn non-merge merge commits did not become git merge commit\n \t[ -z \"$bad_non_merges\" ]\n \t'\n \n-test_expect_failure 'commit made to merged branch is reachable from the merge' '\n+test_expect_success 'commit made to merged branch is reachable from the merge' '\n \tbefore_commit=$(git rev-list --all --grep=\"trunk commit before merging trunk to b2\")\n \tmerge_commit=$(git rev-list --all --grep=\"Merge trunk to b2\")\n \tnot_reachable=$(git rev-list -1 $before_commit --not $merge_commit)\n-- \n1.7.0.87.g6166f6d.dirty\n"},{"id":"135437","messageId":"201002231758.05297.trast@student.ethz.ch","threadId":"22751","inReplyTo":"1266862373-28365-1-git-send-email-tuomas.suutari@gmail.com","subject":"Re: [PATCH 3/3 v2] git-svn: Fix discarding of extra parents from svn:mergeinfo","fromName":"Thomas Rast","fromEmail":"trast@student.ethz.ch","sentAt":"2010-02-23T16:58:04Z","receivedAt":"2010-02-23T16:58:04Z","isPatch":true,"sender":{"key":"tr@thomasrast.ch","avatar":"https://avatars.githubusercontent.com/u/153510?v=4"},"body":"On Monday 22 February 2010 19:12:53 Tuomas Suutari wrote:\n> If parent J is an ancestor of parent I, then parent J should be\n> discarded, not I.\n> \n> Note that J is an ancestor of I if and only if rev-list I..J is emtpy,\n> which is what we are testing here.\n> \n> Signed-off-by: Tuomas Suutari <tuomas.suutari@gmail.com>\n> ---\n> Thanks to Thomas Rast for pointing out that this can be made with a\n> smaller change and there is no need swap rev-list to merge-base after\n> all.\n[...]\n> -\t\t\t\t\tundef($new_parents[$i]);\n> +\t\t\t\t\tundef($new_parents[$j]);\n\nJust so this doesn't get lost...\n\nI'm hesitating to give my \"Ack\", since I haven't looked into what the\nsurrounding code does.  I can't even see at a glance how the parent\nreduction relates to the commit that introduced it, which was\n\n  commit 7a955a5365d9ebd5e12c12ed926b2b51b61c02ee\n  Author: Sam Vilain <sam@vilain.net>\n  Date:   Sun Dec 20 05:26:26 2009 +1300\n\n      git-svn: detect cherry-picks correctly.\n\n      The old function was incorrect; in some instances it marks a cherry picked\n      range as a merged branch (because of an incorrect assumption that\n      'rev-list COMMIT --not RANGE' would work).  This is replaced with a\n      function which should detect them correctly, memoized to limit the expense\n      of dealing with branches with many cherry picks to one 'merge-base' call\n      per merge, per branch which used cherry picking.\n\n      Signed-off-by: Sam Vilain <sam@vilain.net>\n      Acked-by: Eric Wong <normalperson@yhbt.net>\n\n\nThat being said, you have clearly addressed the points I raised in my\nearlier mail.  The loop, taken by itself, now throws out elements of\nthe $new_parents list that are ancestors of another element which is a\nsane thing to do if you're building a merge.\n\nSo with the catch that I only looked at the immediate neighbourhood in\nthe code:\n\n  Acked-by: Thomas Rast <trast@student.ethz.ch>\n\n\n-- \nThomas Rast\ntrast@{inf,student}.ethz.ch\n"},{"id":"135628","messageId":"4B85B2CC.3090509@vilain.net","threadId":"22751","inReplyTo":"1266825442-32107-2-git-send-email-tuomas.suutari@gmail.com","subject":"Re: [PATCH 1/3] t9151: Fix a few commits in the SVN dump","fromName":"Sam Vilain","fromEmail":"sam@vilain.net","sentAt":"2010-02-24T23:14:20Z","receivedAt":"2010-02-24T23:14:20Z","isPatch":true,"sender":{"key":"sam@vilain.net","avatar":"https://gravatar.com/avatar/8fc840ca854dbf6f7065b4335e3b934951c1dca3b11db688e95e471901f8f4a8?d=mp&s=160"},"body":"Tuomas Suutari wrote:\n> A few \"svn cp\" commands and commit commands were executed in incorrect\n> order. Therefore some of the desired commits were missing and some\n> were committed with wrong revision number in the commit message. This\n> made it hard to compare the produced git repository with the SVN\n> repository.\n>\n> The dump file is updated too, but only the relevant parts and with\n> hand-edited timestamps to make history linear.\n>   \n\n>  say \"Make PARTIAL branch\"\n>  svn update\n> -i=$(commit $i \"make partial branch\")\n>  svn cp trunk/subdir branches/partial\n> +i=$(commit $i \"make partial branch\")\n>  \n>  say \"Make a commit to PARTIAL\"\n>  svn update\n> @@ -194,13 +194,13 @@ cd ../../\n>  \n>  say \"Tagging trunk\"\n>  svn update\n> -i=$(commit $i \"tagging v1.0\")\n>  svn cp trunk tags/v1.0\n> +i=$(commit $i \"tagging v1.0\")\n>   \n\nWhoops.  Yes, that looks eminently sensible, probably my fault :-).\n\nAcked-by: Sam Vilain <sam@vilain.net>\n\nSam\n"},{"id":"135744","messageId":"20100226095014.GB22579@dcvr.yhbt.net","threadId":"22751","inReplyTo":"1266825442-32107-1-git-send-email-tuomas.suutari@gmail.com","subject":"Re: git-svn detects some merges incorrectly from svn:mergeinfo","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2010-02-26T09:50:14Z","receivedAt":"2010-02-26T09:50:14Z","isPatch":false,"sender":{"key":"e@80x24.org","avatar":null},"body":"Tuomas Suutari <tuomas.suutari@gmail.com> wrote:\n> Hi,\n> \n> Now that git-svn detects merges from svn:mergeinfo, I thought it's\n> time to re-import some of my SVN repos with git-svn. Detecting of the\n> merges worked mostly well, but when inspecting the imported history\n> with gitk, I found some incorrectly detected merges.\n> \n> This patch series adds a test case and a fix for the case.\n> \n> I was a bit uncertain if the fix should go to parents_exclude function\n> or to \"cater for merges which merge commits from multiple branches\"\n> section of find_extra_svn_parents function. I chose the latter and at\n> least it does the trick.\n\nThanks Tuomas and Sam+Thomas for the feedback.\n\nI've pushed this series out to git://git.bogomips.org/git-svn along with\nJosh's speedup.\n\nTuomas Suutari (3):\n      t9151: Fix a few commits in the SVN dump\n      t9151: Add two new svn:mergeinfo test cases\n      git-svn: Fix discarding of extra parents from svn:mergeinfo\n\njosh robb (1):\n      git svn: delay importing SVN::Base until it is needed\n\n-- \nEric Wong\n"}]}