有没有办法用多个
分支(即,两个以上包含不同
相关的补丁集),以便每个
darcs回购被转移到git回购的一个不同分支?
考虑的解决方案:
(1)darcs convert命令提供两个
将DARC导出到Git的方法:
a.一次性出口:
$ cd repo
$ git init ../mirror
$ darcs convert export | (cd ../mirror && git fast-import)
这只转换一个回购,一个分支。
b.使用marksfiles进行增量导出(以维护
DARCS存储库):
$ cd repo
$ git init ../mirror
$ touch ../mirror/git.marks
$ darcs convert export --read-marks darcs.marks --write-marks darcs.marks |
(cd ../mirror &&
git fast-import --import-marks=git.marks --export-marks=git.marks)
使用(b),如果我只有一个其他的darcs回购作为分支,我可能希望
继续
$ cd ../mirror
$ git branch branch1
$ git checkout branch1
$ cd ../repo
$ darcs pull ../repo-branch1
然后重复
darcs convert export
步骤。但对于另外两个分支,这似乎不太可能奏效,
因为拉../repo-branch2会把补丁合并在一起
第1和第2分支。
(2)DARCS桥[2]。
不完整,自2013年起未维护,且“仍命名为DARCS快速转换”,仅建议一次性使用
任意方向的转换(darcs->git或git->darcs)
DARCS桥页本身[2]
建议使用DARCS 2.10中内置的“darcs convert”命令。
但是,它可以处理分支(通过一些工作):
参见[2]中的用例2:
$ git init my_project_git
$ darcs-fastconvert export myproject myproject-branch1 |
(cd my_project_git && git fast-import && git checkout master)
这将创建带有两个分支的git repo:
(darcs)myproject->(git)硕士
(DARCS)myproject-branch1->(git)myproject-branch1
使用公共前缀,但未检测到合并。
[2]中的用例5描述了一种更改分支列表的方法
DARCS桥正在管理。
“有什么限制?”“什么需要工作?”好像在说
(我很难理解)DARC合并没有正确转换
除非使用特殊标记——标记必须在
合并,所以现在不可能了。
(3)DARCS FastConvert(DARCS桥的基础):
根据[2],没有管理多个分支
(4)DARC到Git:根据[2],不支持分支
(5)DARCS2GIT:根据[2],不支持分支机构
(6)裁剪:根据[2],不容易支撑分支,
已停止使用,取而代之的是DARCS FastConvert
参考文献:
[1]DARCS转换:http://darcs.net/Using/Convert)
[2]DARCS桥:http://darcs.net/DarcsBridgeUsage)
最佳答案
通过一个修改目标分支的简单脚本将git fast import格式输出从darcs convert export
。在大多数情况下,您可以这样做:darcs convert export | sed 's#^commit refs/heads/master$#commit refs/head/your-branch#' | (cd ../mirror && git fast-import)
如果您担心您的文件或其他repo数据可能包含确切的字节字符串\ncommit refs/heads/master\n
在某个地方,您的分支更改脚本将需要查找data
命令,并在未更改的情况下传递它们。这也不是太难-查看git fast-import man page以了解data
命令格式的详细信息-但是您需要用您喜欢的编程语言编写一个简单的程序。