felipec / git

Fork of Junio Hamano's git for users
Other
204 stars 34 forks source link

Cloning hg repo from Octave project crashes fast-import #61

Closed brarcher closed 10 years ago

brarcher commented 10 years ago

I've recently found your tool, git-remote-hg, and attempted to give it a try for a hg project: Octave. During a clone of its repository, the clone will fail. This is always reproducible. Here is the output from the clone:

$ git clone hg::http://www.octave.org/hg/octave
Cloning into 'octave'...
real URL is http://hg.savannah.gnu.org/hgweb/octave
requesting all changes
adding changesets
adding manifests
adding file changes
added 18588 changesets with 113227 changes to 12475 files
progress revision 0 'master' (0/18588)
progress revision 100 'master' (100/18588)
progress revision 200 'master' (200/18588)
progress revision 300 'master' (300/18588)
progress revision 400 'master' (400/18588)
progress revision 500 'master' (500/18588)
progress revision 600 'master' (600/18588)
progress revision 700 'master' (700/18588)
progress revision 800 'master' (800/18588)
progress revision 900 'master' (900/18588)
progress revision 1000 'master' (1000/18588)
progress revision 1100 'master' (1100/18588)
progress revision 1200 'master' (1200/18588)
progress revision 1300 'master' (1300/18588)
progress revision 1400 'master' (1400/18588)
progress revision 1500 'master' (1500/18588)
progress revision 1600 'master' (1600/18588)
progress revision 1700 'master' (1700/18588)
progress revision 1800 'master' (1800/18588)
progress revision 1900 'master' (1900/18588)
progress revision 2000 'master' (2000/18588)
progress revision 2100 'master' (2100/18588)
progress revision 2200 'master' (2200/18588)
progress revision 2300 'master' (2300/18588)
progress revision 2400 'master' (2400/18588)
progress revision 2500 'master' (2500/18588)
progress revision 2600 'master' (2600/18588)
progress revision 2700 'master' (2700/18588)
progress revision 2800 'master' (2800/18588)
progress revision 2900 'master' (2900/18588)
progress revision 3000 'master' (3000/18588)
progress revision 3100 'master' (3100/18588)
progress revision 3200 'master' (3200/18588)
progress revision 3300 'master' (3300/18588)
progress revision 3400 'master' (3400/18588)
progress revision 3500 'master' (3500/18588)
progress revision 3600 'master' (3600/18588)
progress revision 3700 'master' (3700/18588)
progress revision 3800 'master' (3800/18588)
progress revision 3900 'master' (3900/18588)
progress revision 4000 'master' (4000/18588)
progress revision 4100 'master' (4100/18588)
progress revision 4200 'master' (4200/18588)
progress revision 4300 'master' (4300/18588)
progress revision 4400 'master' (4400/18588)
progress revision 4500 'master' (4500/18588)
progress revision 4600 'master' (4600/18588)
progress revision 4700 'master' (4700/18588)
progress revision 4800 'master' (4800/18588)
progress revision 4900 'master' (4900/18588)
progress revision 5000 'master' (5000/18588)
progress revision 5100 'master' (5100/18588)
progress revision 5200 'master' (5200/18588)
progress revision 5300 'master' (5300/18588)
progress revision 5400 'master' (5400/18588)
progress revision 5500 'master' (5500/18588)
progress revision 5600 'master' (5600/18588)
progress revision 5700 'master' (5700/18588)
progress revision 5800 'master' (5800/18588)
progress revision 5900 'master' (5900/18588)
progress revision 6000 'master' (6000/18588)
progress revision 6100 'master' (6100/18588)
progress revision 6200 'master' (6200/18588)
progress revision 6300 'master' (6300/18588)
progress revision 6400 'master' (6400/18588)
progress revision 6500 'master' (6500/18588)
progress revision 6600 'master' (6600/18588)
progress revision 6700 'master' (6700/18588)
progress revision 6800 'master' (6800/18588)
progress revision 6900 'master' (6900/18588)
progress revision 7000 'master' (7000/18588)
progress revision 7100 'master' (7100/18588)
progress revision 7200 'master' (7200/18588)
progress revision 7300 'master' (7300/18588)
progress revision 7400 'master' (7400/18588)
progress revision 7500 'master' (7500/18588)
progress revision 7600 'master' (7600/18588)
progress revision 7700 'master' (7700/18588)
progress revision 7800 'master' (7800/18588)
progress revision 7900 'master' (7900/18588)
progress revision 8000 'master' (8000/18588)
progress revision 8100 'master' (8100/18588)
progress revision 8200 'master' (8200/18588)
progress revision 8300 'master' (8300/18588)
progress revision 8400 'master' (8400/18588)
progress revision 8500 'master' (8500/18588)
progress revision 8600 'master' (8600/18588)
progress revision 8700 'master' (8700/18588)
progress revision 8800 'master' (8800/18588)
progress revision 8900 'master' (8900/18588)
progress revision 9000 'master' (9000/18588)
progress revision 9100 'master' (9100/18588)
progress revision 9200 'master' (9200/18588)
progress revision 9300 'master' (9300/18588)
progress revision 9400 'master' (9400/18588)
progress revision 9500 'master' (9500/18588)
progress revision 9600 'master' (9600/18588)
progress revision 9700 'master' (9700/18588)
progress revision 9800 'master' (9800/18588)
progress revision 9900 'master' (9900/18588)
progress revision 10000 'master' (10000/18588)
progress revision 10100 'master' (10100/18588)
progress revision 10200 'master' (10200/18588)
progress revision 10300 'master' (10300/18588)
progress revision 10400 'master' (10400/18588)
progress revision 10500 'master' (10500/18588)
progress revision 10600 'master' (10600/18588)
progress revision 10700 'master' (10700/18588)
progress revision 10800 'master' (10800/18588)
progress revision 10900 'master' (10900/18588)
progress revision 11000 'master' (11000/18588)
progress revision 11100 'master' (11100/18588)
progress revision 11200 'master' (11200/18588)
progress revision 11300 'master' (11300/18588)
progress revision 11400 'master' (11400/18588)
progress revision 11500 'master' (11500/18588)
progress revision 11600 'master' (11600/18588)
progress revision 11700 'master' (11700/18588)
progress revision 11800 'master' (11800/18588)
progress revision 11900 'master' (11900/18588)
progress revision 12000 'master' (12000/18588)
progress revision 12100 'master' (12100/18588)
progress revision 12200 'master' (12200/18588)
progress revision 12300 'master' (12300/18588)
progress revision 12400 'master' (12400/18588)
progress revision 12500 'master' (12500/18588)
progress revision 12600 'master' (12600/18588)
progress revision 12700 'master' (12700/18588)
progress revision 12800 'master' (12800/18588)
progress revision 12900 'master' (12900/18588)
progress revision 13000 'master' (13000/18588)
progress revision 13100 'master' (13100/18588)
progress revision 13200 'master' (13200/18588)
progress revision 13300 'master' (13300/18588)
fatal: Empty path component found in input
fast-import: dumping crash report to /home/brarcher/workspace/octave/.git/fast_import_crash_27916
fatal: Error while running fast-import
Traceback (most recent call last):
  File "/usr/bin/git-remote-hg", line 1254, in <module>
    sys.exit(main(sys.argv))
  File "/usr/bin/git-remote-hg", line 1236, in main
    do_import(parser)
  File "/usr/bin/git-remote-hg", line 675, in do_import
    export_head(repo)
  File "/usr/bin/git-remote-hg", line 576, in export_head
    export_ref(repo, g_head[0], 'bookmarks', g_head[1])
  File "/usr/bin/git-remote-hg", line 507, in export_ref
    modified_final = export_files(c.filectx(f) for f in modified)
  File "/usr/bin/git-remote-hg", line 282, in export_files
    print d
IOError: [Errno 32] Broken pipe
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "/usr/bin/git-remote-hg", line 1249, in bye
    marks.store()
  File "/usr/bin/git-remote-hg", line 162, in store
    json.dump(self.dict(), open(self.path, 'w'))
IOError: [Errno 2] No such file or directory: '/home/brarcher/workspace/octave/.git/hg/origin/marks-hg'
Error in sys.exitfunc:
Traceback (most recent call last):
  File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "/usr/bin/git-remote-hg", line 1249, in bye
    marks.store()
  File "/usr/bin/git-remote-hg", line 162, in store
    json.dump(self.dict(), open(self.path, 'w'))
IOError: [Errno 2] No such file or directory: '/home/brarcher/workspace/octave/.git/hg/origin/marks-hg'
brarcher commented 10 years ago

One other piece of information, before reporting the issue I attempted to upgrade to the most recently version of git. The issue is reproducible there.

$ git --version
git version 1.9.1
brarcher commented 10 years ago

Ignore the previous comment. I did not realize that there were instructions beyond 'copy the script into place':

https://github.com/msysgit/msysgit/wiki/Guide-to-git-remote-hg

However, following those instructions and using the version of git with git-fast-import extensions still results in the crash.

Here is the contents from the fast_import_crash file, in case it is useful:

fast-import crash report:
    fast-import process: 11187
    parent process     : 11186
    at Tue Mar 25 01:23:10 2014

fatal: Empty path component found in input

Most Recent Commands Before Crash
---------------------------------
  data 92
  from :101985
  M 100644 :101986 scripts/plot/figure.m
  # commit exported
  blob
  mark :101988
  data 27915
  # exporting commit
  commit refs/hg/origin/default
  mark :101989
  author John W. Eaton <jwe@octave.org> 1318430301 -0400
  committer John W. Eaton <jwe@octave.org> 1318430301 -0400
  data 109
  from :101987
  M 100644 :101988 src/debug.cc
  # commit exported
  blob
  mark :101990
  data 1949
  blob
  mark :101991
  data 239587
  # exporting commit
  commit refs/hg/origin/default
  mark :101992
  author John W. Eaton <jwe@octave.org> 1318432692 -0400
  committer John W. Eaton <jwe@octave.org> 1318432692 -0400
  data 419
  from :101989
  M 100644 :101990 scripts/plot/axes.m
  M 100644 :101991 src/graphics.cc
  # commit exported
  blob
  mark :101993
  data 2101
  # exporting commit
  commit refs/hg/origin/default
  mark :101994
  author Rik <octave@nomad.inbox5.com> 1318435618 -0700
  committer Rik <octave@nomad.inbox5.com> 1318435618 -0700
  data 177
  from :101992
  M 100644 :101993 etc/gdbinit
  # commit exported
  blob
  mark :101995
  data 77732
  blob
  mark :101996
  data 6812
  # exporting commit
  commit refs/hg/origin/default
  mark :101997
  author John W. Eaton <jwe@octave.org> 1318436307 -0400
  committer John W. Eaton <jwe@octave.org> 1318436307 -0400
  data 116
  from :101994
  M 100644 :101995 src/DLD-FUNCTIONS/cellfun.cc
  M 100644 :101996 test/classes/test_classes.m
  # commit exported
  blob
  mark :101998
  data 415
  blob
  mark :101999
  data 0
  blob
  mark :102000
  data 630
  blob
  mark :102001
  data 559
  blob
  mark :102002
  data 362
  blob
  mark :102003
  data 405
  blob
  mark :102004
  data 178
  blob
  mark :102005
  data 973
  blob
  mark :102006
  data 354
  blob
  mark :102007
  data 2100
  blob
  mark :102008
  data 722
  # exporting commit
  commit refs/hg/origin/default
  mark :102009
  author Jacob Dawid <jacob.dawid@googlemail.com> 1301955138 +0200
  committer Jacob Dawid <jacob.dawid@googlemail.com> 1301955138 +0200
  data 92
* M 100644 :101998 gui//Quint.pro

Active Branch LRU
-----------------
    active_branches = 4 cur, 5 max

  pos  clock name

1) 13255 refs/hg/origin/stable 2) 12333 refs/hg/origin/axes-layout 3) 12584 refs/hg/origin/release-3-4-x 4) 13330 refs/hg/origin/default

Inactive Branches

refs/hg/origin/release-3-4-x: status : active loaded tip commit : 993165978faceab17d1ad5811198028247b779f5 old tree : 5f3c4dee12a77abdac8a0a55d446e3bd01b35715 cur tree : 5f3c4dee12a77abdac8a0a55d446e3bd01b35715 commit clock: 12584 last pack : 0

refs/hg/origin/release-3-2-x: status : tip commit : 74361ab4f9f8239698c2f395a6faa817ef0437ea old tree : 4996ad7905e972414e4022728fdaf599609cd51e cur tree : 4996ad7905e972414e4022728fdaf599609cd51e commit clock: 12122 last pack : 0

refs/hg/origin/axes-layout: status : active loaded tip commit : d436c6cea855541bf936d29f431534798ef7627d old tree : 23952ad4259c34eade38cc26bc26dd5ba097a084 cur tree : 23952ad4259c34eade38cc26bc26dd5ba097a084 commit clock: 12333 last pack : 0

refs/hg/origin/release-3-0-x: status : tip commit : 267efe4baded24d46704b3c3b3b8c5f77e1e0ab9 old tree : 0a33b684943c9a06fac1cfc2f08b5e48e8a6ef79 cur tree : 0a33b684943c9a06fac1cfc2f08b5e48e8a6ef79 commit clock: 11952 last pack : 0

refs/hg/origin/default: status : active loaded tip commit : 9ce98fbb28a88dc579c47248a3384b47c050d10a old tree : a75fcd420fbfd5d338a4f432c8aca5c71fdef9a8 cur tree : a75fcd420fbfd5d338a4f432c8aca5c71fdef9a8 commit clock: 13330 last pack : 0

refs/hg/origin/stable: status : active loaded tip commit : eec873ae2cfd1f4484d3b125b5859fe608dfc6c1 old tree : 9269ec15ffd8170ad269d70470b09fed89dd0cef cur tree : 9269ec15ffd8170ad269d70470b09fed89dd0cef commit clock: 13255 last pack : 0

Marks

exported to /home/brarcher/workspace/octave.git/.git/info/fast-import/857a8fa98e8dd8873f62d7bcc7d0abb73df6ac4f/git.marks


END OF CRASH REPORT

fingolfin commented 10 years ago

The problem seems to be the path "gui//Quint.pro", which should be the cause of the fatal error "Empty path component found in input". I guess this is another case of Mercurial not bothering much to put things like path names into a normal form ;-).

felipec commented 10 years ago

Ignore the previous comment. I did not realize that there were instructions beyond 'copy the script into place':

https://github.com/msysgit/msysgit/wiki/Guide-to-git-remote-hg

Those instructions are wrong, they are for a different project.

felipec commented 10 years ago

I just pushed a fix for this.

6ec74ea029345690b6bd07d19d31fc5dd5b38948