{"thread":{"id":"8635","subject":"[PATCH 3/3] Fix large-scale exports by 'git-svndump'","startedAt":"2007-06-18T07:54:03Z","lastAt":"2007-06-18T07:54:03Z","messageCount":1,"participants":["Sergey Yanovich"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"45258","messageId":"11821532431437-git-send-email-ynvich@gmail.com","threadId":"8635","inReplyTo":null,"subject":"[PATCH 3/3] Fix large-scale exports by 'git-svndump'","fromName":"Sergey Yanovich","fromEmail":"ynvich@gmail.com","sentAt":"2007-06-18T07:54:03Z","receivedAt":"2007-06-18T07:54:03Z","isPatch":true,"sender":{"key":"ynvich@gmail.com","avatar":null},"body":"* Split revision list using 'tail' shell command.\n\n* Wrap multiple list generation in an endless cycle with 'while true'.\n  Exit from cycle when the current list is empty.\n\n* Improve handling of merges by adding '--no-merges --topo-order'i\n  arguments to the list generating command.\n\nSigned-off-by: Sergey Yanovich <ynvich@gmail.com>\n---\n git-svndump-sync.sh |   16 +++++++++++++++-\n 1 files changed, 15 insertions(+), 1 deletions(-)\n\ndiff --git a/git-svndump-sync.sh b/git-svndump-sync.sh\nindex e1c04e1..516edaf 100755\n--- a/git-svndump-sync.sh\n+++ b/git-svndump-sync.sh\n@@ -70,7 +70,14 @@ if test -f $GIT_DIR/svndump/last ; then\n \tfi\n fi\n \n-list=`GIT_DIR=$GIT_DIR git-rev-list $commit $start`\n+while true ; do\n+\n+list=`GIT_DIR=$GIT_DIR git-rev-list --no-merges --topo-order $commit $start |\n+tail -n 8`\n+\n+if test -z \"$list\" ; then\n+\texit 0\n+fi\n \n diffs=\"\"\n for c in $list ; do\n@@ -79,7 +86,14 @@ done\n \n for c in $diffs ; do\n \tGIT_DIR=$GIT_DIR git-svn commit-diff -r$rev $last $c $url\n+\tif test $? -ne 0 ; then\n+\t\texit $?\n+\tfi\n \techo \"$c\" > $GIT_DIR/svndump/last\n \tlast=$c\n \tlet rev++\n done\n+\n+start=^$last\n+\n+done\n-- \n1.5.2.1\n"}]}