首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多分支将darcs repos转换为git

使用多分支将darcs repos转换为git
EN

Stack Overflow用户
提问于 2016-05-21 04:28:07
回答 2查看 245关注 0票数 4

有没有办法将具有多个分支的darcs项目(即包含不同但相关的补丁集的两个以上的darcs存储库)转换为单个git存储库,以便将每个darcs存储库转移到git存储库中的不同分支?

考虑的解决方案:

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

a.一次性导出:

代码语言:javascript
复制
$ cd repo
$ git init ../mirror
$ darcs convert export | (cd ../mirror && git fast-import)

这只会转换一个存储库,一个分支。

b.使用marksfiles进行增量导出(以维护darcs存储库的git镜像):

代码语言:javascript
复制
$ 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 repo作为分支,我可能希望继续

代码语言:javascript
复制
$ cd ../mirror
$ git branch branch1
$ git checkout branch1

$ cd ../repo
$ darcs pull ../repo-branch1

然后重复darcs convert export步骤。

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

(2) Darcs-bridge 2.不完整,2013年后未维护,“仍然命名为darcs-fast-convert",建议只在两个方向上进行一次性转换(darcs->git或git->darcs)

darcs-bridge页面本身2建议使用darcs 2.10中内置的'darcs convert‘命令。

但是,它可以处理分支(需要做一些工作):

请参阅2中的用例2

代码语言:javascript
复制
$ 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) master (darcs) myproject- -> (git) myproject- -> (Git)myproject-brch1具有公共前缀,但未检测到合并。

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

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

(3) Darcs-fastconvert ( darcs-bridge基于此):根据2,不管理多个分支

(4) darcs-to-git: acc。设置为2,不支持分支

(5) darcs2git: acc。设置为2,不支持分支

(6)裁剪: acc。到2,不容易支持分支,已停止使用darcs-fastconvert

参考文献:

1 Darcs Convert:http://darcs.net/Using/Convert)

2 Darcs-桥:http://darcs.net/DarcsBridgeUsage)

EN

回答 2

Stack Overflow用户

发布于 2018-11-04 04:48:31

通过一个修改目标分支的简单脚本将darcs convert export的git-fast-import格式输出传输到管道中。在大多数情况下,您可以这样做:

darcs convert export | sed 's#^commit refs/heads/master$#commit refs/head/your-branch#' | (cd ../mirror && git fast-import)

如果您担心文件或其他存储库数据可能包含确切的字节字符串

\ncommit refs/heads/master\n

在某个地方,您的分支更改脚本将需要查找data命令并原封不动地传递它们。这也不是很难-有关data命令格式的详细信息,请参阅git fast-import man page -但是您需要用您最喜欢的编程语言编写一个简单的程序。

票数 0
EN

Stack Overflow用户

发布于 2019-04-11 15:55:43

提供另一种选择:将Darcs存储库导出到单独的Git存储库,然后选择一个Git存储库,并将其他Git存储库作为远程对象添加到其中。然后获取每个分支并使用远程主分支。这种方法会浪费磁盘空间,除非您共享创建的Git存储库的对象存储;如果您对此有疑问,请参阅How can one safely use a shared object database in git?获取提示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37355325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档