The data needed to reproduce this is private, so I can't post it here,
but the traceback looks like this:
Traceback (most recent call last):
File ".../cvs2svn.py", line 2154, \
in ?
main()
File ".../cvs2svn.py", line 2150, \
in main
convert(ctx, start_pass=start_pass)
File ".../cvs2svn.py", line 2039, \
in convert
_passes[i](ctx)
File ".../cvs2svn.py", line 2003, \
in pass4
sym_tracker.finish(dumper, ctx)
File ".../cvs2svn.py", line 1625, \
in finish
self.fill_tag(dumper, ctx, name, [1])
File ".../cvs2svn.py", line 1580, \
in fill_tag
self.fill_name(dumper, ctx, tag, 1, jit_new_rev)
File ".../cvs2svn.py", line 1558, \
in fill_name
is_tag, jit_new_rev)
File ".../cvs2svn.py", line 1451, \
in copy_descend
dumper.start_revision(make_revision_props(name, is_tag))
File ".../cvs2svn.py", line 867, \
in start_revision
self.repos_mirror.new_revision()
File ".../cvs2svn.py", line 420, \
in new_revision
self.stabilize_youngest()
File ".../cvs2svn.py", line 438, \
in stabilize_youngest
self._stabilize_directory(root_key)
File ".../cvs2svn.py", line 432, \
in _stabilize_directory
self._stabilize_directory(dir[entry_key])
File ".../cvs2svn.py", line 432, \
in _stabilize_directory
self._stabilize_directory(dir[entry_key])
File ".../cvs2svn.py", line 431, \
in _stabilize_directory
if not entry_key[0] == '/':
IndexError: string index out of range
This means that some directory node in the repository mirror tree had
empty string for an entry. How did that happen? Don't know yet;
first need to narrow down to the problem data, because the
reproduction recipe takes about half an hour to run :-).
I think there may be a second problem in the conversion, possibly
unrelated: it looks like some files are getting deleted from tags when
they shouldn't be. An example is on line 1006018 of cvs2svn-dump,
where this path is deleted
tags/blah_1_0_41_25/e/c/d/s/c/t/d/c/e/CSH.extension
...even though that tag is affixed to a non-deleted revision in the
corresponding CVS file. (Note that "blah" is a secret word, and only
the first letter of each path component is given, etc, to protect
Daniel's company's privacy).