gpt4 book ai didi

git - 如何在不丢失历史记录的情况下将大型 Perforce 存储库导出到不同的版本控制系统?

转载 作者:太空狗 更新时间:2023-10-29 12:59:24 26 4
gpt4 key购买 nike

在工作中,我们有一个大型 Perforce 存储库(大约 4 万个更改列表,总存储大小约为 145GB)。我们总体上对 Perforce 感到满意,只有一些轻微的提示,但我们计划转向更加分布式的开发模型,因此,我们也想转向更加分布式的版本控制系统。

到目前为止,我已经查看了常见的可疑对象(git、mercurial 和潜在的 bazaar,因为我对它有很好的经验)但我们目前的主要障碍是从 Perforce 中获取版本历史记录并导入到各种 DVCS 中,所以我们不会失去历史。如果我们不是绝对必须保留它,我们也不希望让 Perforce 服务器挂起 - 我对这种迁移的经验是,一段时间后没有人查看旧的 repo,所以你会丢失历史记录那样。

由于存储库中有多个项目,我们的想法是在导出历史时将其拆分为多个 DVCS 项目,因为并非每个人都需要能够看到历史的每一部分。然而,我们最大的项目仍然包含大约 2/3 的已提交修订,并且还占用了大约 2/3 的存储空间。它还拥有最多的分支机构 - 可能在 30 家左右。

到目前为止,我已经尝试了以下方法 - 一切都在 Windows 上,因为我们是一家仅限 Windows 的商店:

  • 使用 hg convert 扩展导入 Mercurial。这对于我正在转换的项目的主分支来说似乎工作得很好,但是尝试使用分支映射将 Perforce 分支转换为命名的 Mercurial 分支似乎仍然会在默认分支上的每次 checkin 时产生平面导入。也许那是因为我错误地设置了分支映射,但是 hg help convert 建议您只能使用此导入器将 Perforce 存储库转换为没有分支的“扁平”结构,这不是很好足够我们使用。
  • 使用 git-p4.py 导入 Git。 Perforce 文档使用 git 作为 Perforce 的分布式前端,并基于 repo 的最新修订版关闭,确实产生了一个可用的 git repo。尝试导入带有分支的整个子项目会破坏导入程序,因为它会耗尽内存,所以我什至无法判断它是否设法正确导入我们的 repo。
  • 然后我有了这个聪明的脑放屁,将 Perforce 存储库导入 SVN,所有分支都映射到适当的 SVN 分支,因为 sun 下的每个版本控制系统都可以从 SVN 导入。这将仅使用 SVN 作为转换的中间步骤,而不是作为目标 V​​CS——否则我们不会真正从这种转换中获得任何东西。使用 p42svn.pl,这在过程的早期就中断了,因为我们的 Perforce 服务器似乎不喜欢被似乎为每个文件/修订建立新连接的脚本重击。
  • 我还没有考虑将历史导出到 Bazaar,因为它有点失败。

所以,我的问题是:

  • 除了 p42svn.pl 之外,还有其他好的工具可以将 Perforce 存储库导出到 SVN 中吗?我不介意使用 SVN 作为中间存储库,因为它似乎可以很容易地导出到我们正在考虑的所有 DVCS。
  • 有人成功地将分支从 Perforce 导出到 Mercurial 命名分支中吗?如果是,您是怎么做到的? convert 扩展的文档似乎有点稀疏,我似乎无法找到一种好的/有效的方法来执行此操作。

最佳答案

如您所知,切换源代码控制系统是一项巨大的任务,不能掉以轻心。存在相当大的风险和停机时间,因为1)您进行了实际的转换,2)然后随着每个人重新调整工具并跟上新系统的步伐再次进行。

由于您仍在研究您的选择,我会认真地深呼吸并研究 P4 Sandbox,看看它是否能满足您的要求。

有关 P4 沙盒的更多信息如下。

概览
- P4Sandbox Feature Demo (Video)

博客文章
- P4Sandbox Private local branching, distributed development, and more
- P4Sandbox’s First Submit
- Distributed Development and P4Sandbox
- Private Branching with P4Sandbox
- Task-focused Work in P4Sandbox

论坛讨论
- New Features Discussion on the official forums

关于git - 如何在不丢失历史记录的情况下将大型 Perforce 存储库导出到不同的版本控制系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9486292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com