Subject: Re: master: t5800-remote-helpers.sh hangs on test "pulling from remote remote"

From: Clemens Buchacher <[email-masked]>
Date: Sun, 15 Apr 2012 03:11:20 +0200

On Sun, Apr 15, 2012 at 02:00:22AM +0200, Stefano Lattarini wrote:
>
> Debug: Remote helper: -> export
> Got command 'export' with args ''
> Debug: Remote helper: Waiting...

Hmm. Looks like fast-import and fast-export are in a deadlock. It's
probably time to let the experts take over. But if you want to indulge
me further, you could try again with GIT_TRACE=1.  That should give you
the arguments to use for the fast-export and fast-import commands right
before it hangs. Then run ./t5800-remote-helpers.sh -i with the
following change to make it abort right before git push:

diff --git a/t/t5800-remote-helpers.sh b/t/t5800-remote-helpers.sh
index 1c62001..c4855e9 100755
--- a/t/t5800-remote-helpers.sh
+++ b/t/t5800-remote-helpers.sh
@@ -68,7 +68,8 @@ test_expect_success 'pushing to local repo' '
        (cd localclone &&
        echo content >>file &&
        git commit -a -m three &&
-       git push) &&
+       false &&
+       GIT_TRACE=1 GIT_TRANSPORT_HELPER_DEBUG=1 GIT_DEBUG_TESTGIT=1 git push) &&
        compare_refs localclone HEAD server HEAD
 '

You can manually now run fast-export using the arguments from the first
run, for example in my case:

 cd trash\ directory.t5800-remote-helpers
 (cd localclone; git 'fast-export' '--use-done-feature' '--export-marks=.git/info/fast-import/cbf054fee258a261ee43ebdc835f0da71b3d1562/testgit.marks' '--import-marks=.git/info/fast-import/cbf054fee258a261ee43ebdc835f0da71b3d1562/testgit.marks' '^refs/testgit/origin/master' 'refs/heads/master') |

That should output:

feature done
blob
mark :5
data 24
content
content
content

commit refs/heads/master
mark :6
author A U Thor <[email-masked]> 1334451823 +0000
committer C O Mitter <[email-masked]> 1334451823 +0000
data 6
three
from :4
M 100644 :5 file

done

Finally, you can manually pipe fast-export to fast-import, again using
the arguments from the first run:

 cd trash\ directory.t5800-remote-helpers
 (cd localclone; git 'fast-export' '--use-done-feature' '--export-marks=.git/info/fast-import/cbf054fee258a261ee43ebdc835f0da71b3d1562/testgit.marks' '--import-marks=.git/info/fast-import/cbf054fee258a261ee43ebdc835f0da71b3d1562/testgit.marks' '^refs/testgit/origin/master' 'refs/heads/master') |
 (cd server; git fast-import '--quiet' '--export-marks=/home/drizzd/src/git/t/trash directory.t5800-remote-helpers/localclone/.git/info/fast-import/cbf054fee258a261ee43ebdc835f0da71b3d1562/git.marks' '--import-marks=/home/drizzd/src/git/t/trash directory.t5800-remote-helpers/localclone/.git/info/fast-import/cbf054fee258a261ee43ebdc835f0da71b3d1562/git.marks')

If the fast-export output is the same, and if the last command also
hangs for you, then we can start debugging fast-import.

Clemens