hg-fast-export: add support for --flatten option
commit46b85437b55e836fe7740d9dc801092bf2998972
authorKyle J. McKay <mackyle@gmail.com>
Fri, 4 Apr 2014 12:52:36 +0000 (4 05:52 -0700)
committerKyle J. McKay <mackyle@gmail.com>
Wed, 16 Apr 2014 03:03:13 +0000 (15 20:03 -0700)
treea9abf21b494eb6905dd0f165b3d9ad2f9e22d5b8
parent04a7ec1351e7e7ae7a8e666e064a1e3c41c65946
hg-fast-export: add support for --flatten option

When Git initially creates a ref, it stores a file in the file
system with the same name as the ref.  If the ref contains '/'
characters, then the created file will have a path involving more
than one directory.

Unfortunately this means that Git cannot simultaneously create,
for example, a ref named 'refs/heads/master' and one named
'refs/heads/master/default'.  This would require 'master' to be
both a file and a directory.

On the other hand, hg tags do not have this restriction.

Add a new --flatten option that converts '/' characters to '_'
characters in ref names so that directory/file ref name conflicts
can be avoided.  For example, given a 'master' and 'master/default'
tag, they would generate 'refs/heads/master' and
'refs/heads/master_default' ref names when --flatten is used
thereby avoiding the conflict.

The --flatten option may be required in order to successfully
convert hg source repositories containing these conflicts.
hg-fast-export.py
hg-fast-export.sh