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

From: Clemens Buchacher <[email-masked]>
Date: Sun, 15 Apr 2012 14:51:41 +0200

Hi Sverre,

The 'pushing to local repo' test of t5800 which pushes using
git-remote-testgit.py results in a deadlock for Stefano. Invoking
fast-export/fast-import manually seems to work, however. I don't know
what else to try at this point.

I am pasting some relevant results below.

> expecting success:
>         (cd localclone &&
>         echo content >>file &&
>         git commit -a -m three &&
>         GIT_TRACE=1 GIT_TRANSPORT_HELPER_DEBUG=1 GIT_DEBUG_TESTGIT=1 git push) &&
>         compare_refs localclone HEAD server HEAD
> 
> [...]
> Debug: Remote helper: -> export
> trace: run_command: 'fast-export' '--use-done-feature' '--export-marks=.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed
> 7c49f539a8c/testgit.marks' '--import-marks=.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/testgit.marks' '^refs/testgit/origin/master' 'refs/heads/master'
> trace: exec: 'git' 'fast-export' '--use-done-feature' '--export-marks=.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/testgit.marks' '--import-marks=.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/testgit.marks' '^refs/testgit/origin/master' 'refs/heads/master'
> trace: built-in: git 'fast-export' '--use-done-feature' '--export-marks=.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/testgit.marks' '--import-marks=.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/testgit.marks' '^refs/testgit/origin/master' 'refs/heads/master'
> Got command 'export' with args ''
> trace: built-in: git 'for-each-ref' 'refs/heads'
> Debug: Remote helper: Waiting...
> trace: exec: 'git-fast-import' '--quiet' '--export-marks=/devel/stefano/src/git/t/trash directory.t5800-remote-helpers/localclone/.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/git.marks' '--import-marks=/devel/stefano/src/git/t/trash directory.t5800-remote-helpers/localclone/.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/git.marks'
> trace: run_command: 'git-fast-import' '--quiet' '--export-marks=/devel/stefano/src/git/t/trash directory.t5800-remote-helpers/localclone/.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/git.marks' '--import-marks=/devel/stefano/src/git/t/trash directory.t5800-remote-helpers/localclone/.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/git.marks'

This is Stefano's output, at which point git fast-import hangs. On my
box, fast-export runs a little later (after Got command 'export' with
args ''), but I don't see how that would matter.

Below is the result from running fast-import/fast-export manually:

On Sun, Apr 15, 2012 at 01:58:41PM +0200, Stefano Lattarini wrote:
> On 04/15/2012 01:45 PM, Clemens Buchacher wrote:
> > Hi Stefano,
> > 
> > Almost there. :-)
> > 
> > On Sun, Apr 15, 2012 at 01:18:20PM +0200, Stefano Lattarini wrote:
> >>
> >> $ git 'fast-export' '--use-done-feature' \
> >>       '--export-marks=.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/testgit.marks' \
> >>       '--import-marks=.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/testgit.marks' \
> >>       '^refs/testgit/origin/master' 'refs/heads/master' \
> >>    | git 'fast-import' \
> >>          '--export-marks=/devel/stefano/src/git/t/trash directory.t5800-remote-helpers/localclone/.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/git.marks' \
> >>          '--import-marks=/devel/stefano/src/git/t/trash directory.t5800-remote-helpers/localclone/.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/git.marks'
> > 
> > To simulate a git push, you have to run fast-export from localclone and
> > fast-import from the server directory. I.e. starting out in
> > t/trash directory.t5800-remote-helpers:
> > 
> > $ (cd localclone; git fast-export --use-done-feature \
> >       --export-marks='.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/testgit.marks' \
> >       --import-marks='.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/testgit.marks' \
> >       ^refs/testgit/origin/master refs/heads/master) |
> >   (cd server; git fast-import \
> >          --export-marks='/devel/stefano/src/git/t/trash directory.t5800-remote-helpers/localclone/.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/git.marks' \
> >          --import-marks='/devel/stefano/src/git/t/trash directory.t5800-remote-helpers/localclone/.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/git.marks')
> >
> OK, I cut & pasted your command; it ran successfully, with this output:
> 
> git-fast-import statistics:
> ---------------------------------------------------------------------
> Alloc'd objects:       5000
> Total objects:            3 (         0 duplicates                  )
>       blobs  :            1 (         0 duplicates          0 deltas of          1 attempts)
>       trees  :            1 (         0 duplicates          0 deltas of          1 attempts)
>       commits:            1 (         0 duplicates          0 deltas of          0 attempts)
>       tags   :            0 (         0 duplicates          0 deltas of          0 attempts)
> Total branches:           1 (         1 loads     )
>       marks:           1024 (         6 unique    )
>       atoms:              1
> Memory total:          2294 KiB
>        pools:          2098 KiB
>      objects:           195 KiB
> ---------------------------------------------------------------------
> pack_report: getpagesize()            =       4096
> pack_report: core.packedGitWindowSize =   33554432
> pack_report: core.packedGitLimit      =  268435456
> pack_report: pack_used_ctr            =          2
> pack_report: pack_mmap_calls          =          1
> pack_report: pack_open_windows        =          1 /          1
> pack_report: pack_mapped              =        253 /        253
> ---------------------------------------------------------------------
> 
> Thanks,
>   Stefano
> 
> Other possibly relevant information:
> 
>   $ hg --version | head -1
>   Mercurial Distributed SCM (version 1.8.3) $ python --version
> 
>   $ python --version
>   Python 2.7.2+
> 
>   $ /bin/sh --version | head -1
>   GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)
> 
>   $ git describe
>   v1.7.10-167-gf245c01

Clemens