通过多个分支将DARC回购转换为git

通过多个分支将DARC回购转换为git,git,version-control,merge,version-control-migration,darcs,Git,Version Control,Merge,Version Control Migration,Darcs,是否有一种方法可以将darcs项目转换为多个项目 分支(即,两个以上的DARC存储库包含不同但 相关的补丁集)到单个git存储库,以便 darcs回购转让给git回购中的一个独立分支机构 考虑的解决办法: (1) darcs convert命令提供两个 将DARC导出到git的方法: a。一次性出口: $ cd repo $ git init ../mirror $ darcs convert export | (cd ../mirror && git fast-import)

是否有一种方法可以将darcs项目转换为多个项目 分支(即,两个以上的DARC存储库包含不同但 相关的补丁集)到单个git存储库,以便 darcs回购转让给git回购中的一个独立分支机构

考虑的解决办法:

(1) darcs convert命令提供两个 将DARC导出到git的方法:

a。一次性出口:

$ cd repo
$ git init ../mirror
$ darcs convert export | (cd ../mirror && git fast-import)
这仅转换一个回购协议、一个分支

b。使用marksfiles进行增量导出(以维护 darcs存储库):

使用(b),如果我只有一个darcs回购协议作为分支,我可能希望 继续

$ cd ../mirror
$ git branch branch1
$ git checkout branch1

$ cd ../repo
$ darcs pull ../repo-branch1
然后重复
darcs convert export
步骤

但对于另外两个分支,这似乎不太可能起作用, 因为拉../repo-branch2会将补丁合并在一起 branch1和branch2的

(2) Darcs桥[2]。 不完整,自2013年以来未维护,且“仍命名为DARC快速转换”,仅建议一次性使用 任意方向的转换(DARC->git或git->DARC)

DARC桥接页本身[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回购: (darcs)myproject->(git)硕士 (darcs)myproject-branch1->(git)myproject-branch1 具有公共前缀,但未检测到合并

[2]中的用例5描述了一种更改分支列表的方法 darcs桥正在管理

[2]中的“限制是什么?”和“什么需要工作?”似乎在说 (我很难理解)DARC合并未正确转换 除非使用特殊标记,否则必须在 合并,所以现在我不可能这样做

(3) Darcs fastconvert(Darcs桥接器的基础): 根据[2],未管理多个分支机构

(4) DARC到git:根据[2],不支持分支

(5) darcs2git:根据[2],不支持分支

(6) 裁缝:根据[2],不容易支持分支, 已停止使用DARC fastconvert

参考资料:

[1] DARC转换:)


[2] Darcs桥接:)

通过修改目标分支的简单脚本,从
Darcs convert export
导入git fast导入格式输出。在大多数情况下,您可以这样做:

darcs转换导出| sed的| ^commit refs/heads/master$| commit refs/head/your branch | |(cd../mirror&&git快速导入)

如果您担心您的文件或其他回购数据可能包含精确的字节字符串

\n提交参考文件/heads/master\n


在某个地方,您的分支更改脚本将需要查找
数据
命令,并在未更改的情况下传递它们。这也不太难-有关
数据
命令格式的详细信息,请参阅,但是您需要用您最喜欢的编程语言编写一个简单的程序。

提供另一个选项:将DARC存储库导出到单独的Git存储库中,然后选择一个Git存储库,并将其他的作为远程存储库添加到其中。然后获取每个分支并使用远程主分支。除非共享所创建Git存储库的对象存储,否则此方法会浪费磁盘空间;如果这与您有关,请参阅以获取提示。

您是否看过Repositor?
$ git init my_project_git
$ darcs-fastconvert export myproject myproject-branch1 | 
  (cd my_project_git && git fast-import && git checkout master)