我想将源代码从Subversion存储库导入Mercurial。我使用Hg Subversion导入了它。问题是,SVN repo的布局是默认的,有trunk
目录、branches
目录的分支等,但以前不是这样。前段时间,该项目的所有目录都是根存储库,因此Hg Subversion无法将branches
目录转换为Mercurial分支,而新的Mercurial存储库只包含目录branches
和trunk
。
我以"艰难的方式"将分支目录转换为Mercurial分支:
- 对于每个分支
b
hg mv branches/$b .
hg rm branches trunk
hg branch $b
hg commint -m "Creating branch $b"
然而,我想知道:有更好的方法吗?你将如何解决这个问题?
hgsubversion应该已经自动检测到trunk/tags/branches目录的存在,并完成了智能操作。你有没有强迫hgsubversion进入非自动模式,让它不这样做?
答案是否定的,没有更好的方法了。这种情况非常具体,而且有一个变通办法,所以我认为;"修复";这可能不值得。我按照问题中的步骤解决了问题,并将其推荐给大多数处于这种情况的人。
$ hg help convert
The filemap is a file that allows filtering and remapping of files and
directories. Each line can contain one of the following directives:
include path/to/file-or-dir
exclude path/to/file-or-dir
rename path/to/source path/to/destination <== YOUR CASE
--filemap FILE remap file names using contents of file