首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图正确地连接git-p4分支。

试图正确地连接git-p4分支。
EN

Stack Overflow用户
提问于 2021-12-03 12:14:24
回答 2查看 97关注 0票数 1

我使用git-p4将多个分支从Perforce导入到git中,具有完整的历史记录,并且运行良好,只不过各个分支最终都是“无尾的”。我确切地知道在哪个版本(作为Perforce变更列表号和现在作为新创建的git版本),每个版本都是从主主干分支出来的,我非常希望在我的新的git存储库中显式地反映这一点,但我似乎不知道如何实现它。

具体来说,在导入之后,如果我在我的任何分支上做了一个git log,它总是得到一个没有父级的“最后”(最早)版本。我想把它组装起来,这样修订版就有了一个父版本,这是master上的一个特定版本。

想必我不能直接将一个分支连接到master上(也就是说,只需设置它的parent链接),因为git散列反映了整个历史,所以我的分支上的所有散列都可能需要调整,我对此没有意见。我可能需要某种类型的重基操作,但我似乎想不出怎么做。到目前为止,我尝试过的所有东西都试图“重放”更改,就像创建所有东西的不同版本一样,它们导致了很多合并冲突,我没有时间去解决,也不想解决。每个修订版的内容都是非常好的(如git-p4创建的);我所要做的就是重新构造它们链接在一起的方式。

具体来说,我想改变这一点:

这方面:

我看过git-p4--detect-branches选项,但它看起来也不像我想做的那样。如果有办法让git p4 sync为分支中的“最后”版本设置一个家长,而不是让它成为孤儿,那就太完美了,但我没有办法。

撇开git-p4的所有细节不说,我想我想要的是(实际上)一种强制执行某个特定版本的方法--特别是在我的一个分支的“尾”处的这些孤儿(无父)版本中的一个--有一个parent链接,这是我选择的SHA哈希,然后重新计算该修订版的散列(以及它的所有子版本)以反映它。我想我可以戴上水管工的帽子,写我自己的剧本来做这件事,但我希望有一种支持的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-03 16:11:46

您可以使用过滤器分支来完成此操作。

  1. 克隆分支
  2. 使用多个遥控器组合repos
  3. 使用筛选器分支将父级添加到新分支。

来自:https://labs.consol.de/development/git/2017/09/08/reunite-separate-git-repositories.html

现在使用https://github.com/newren/git-filter-repo可能会更好--但我还没有尝试过。

https://github.com/newren/git-filter-repo/blob/main/Documentation/converting-from-filter-branch.md#re-grafting-history似乎更清楚地报道了这一情况。

票数 1
EN

Stack Overflow用户

发布于 2021-12-05 10:14:49

根据您的描述,在我看来,您缺少了branchList配置选项。有关更多信息,请阅读git-p4文档的分支检测部分。

顺便说一句,分支算法依赖于P4中的初始复制操作,在没有文件更改的情况下完成,以便在新分支启动的源分支中找到确切的提交。否则,将在源分支的顶部创建新分支,您可能会得到不一致的代码。

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

https://stackoverflow.com/questions/70214146

复制
相关文章

相似问题

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