在版本控制系统之间移动的最佳实践是啥?

Posted

技术标签:

【中文标题】在版本控制系统之间移动的最佳实践是啥?【英文标题】:What are the best practices for moving between version control systems?在版本控制系统之间移动的最佳实践是什么? 【发布时间】:2010-09-09 21:20:21 【问题描述】:

cvs 中大约有 200 个项目,vss 中至少有 100 个项目。有些是维护模式下的非活动代码。有些是旧版应用程序。有些是不再使用的旧应用程序。大约 10% 正在积极开发中。计划是移动一切以执行我的 2009 年底。

有人做过这样的大规模迁移吗?

有没有人遇到过从 cvs 迁移到 perforce 的最佳实践?或类似的迁移。有什么需要注意的地方吗?

【问题讨论】:

【参考方案1】:

在 VSS 方面,有一些转换工具可用于帮助迁移。他们主要可以维护版本历史(自述文件和文档中解释了一些警告)。我已经使用 VSS to perforce 工具将 50 多个 VSS 项目迁移到 perforce 中。从 VSS 中获取数据可能有点挑剔,而且速度不是特别快,但它确实有效。如果您可以直接访问 VSS 存储库的磁盘(即不通过网络共享),则转换速度会快得多。您可以找到有关脚本的信息here。

CVS 有一个类似的页面来执行转换here,尽管我没有直接的经验。这些链接是开始的好地方。您还可以在位于 here 的 Perforce 知识库中搜索 Perforce 邮件列表。我很确定您可能会在邮件列表档案中找到一些转换信息。

首先迁移您的旧项目。您可以确保您的流程有效。当我们将活动代码迁移到 Perforce 时,我花了一个周末基本上取消了对服务器的访问,然后将代码移到了 Perforce。老实说,这是一次非常容易的迁移,当人们周一回来时,他们已经准备好出发了。开始迁移后,您可能会考虑为您的员工准备 Perforce 备忘单。

最大的问题实际上可能是让您的员工准备好使用 Perforce。如果我再做一次,我会先迁移我们较小的活动项目,并让少数人同时使用 Perforce。事实上,我必须在迁移后的第一天培训 120 多人,这有点多。此外,请确保您在第一天也没有 100 多人访问您的服务器以进行新的同步。在最初的几天里,我们多次关闭我们的服务器。我们使用了我不推荐的 Windows 32 位服务器。我们现在有一个 Windows 64 位服务器,它更加强大。如果可以的话,我实际上会使用 Linux 作为你的 perforce 服务器的操作系统。同样,Perforce 网站上应该有关于性能的良好信息。

【讨论】:

【参考方案2】:

我不必做这种规模的事情,但我有一些想法。首先,从一个小的、不重要的项目开始,然后迁移它。这将使您了解迁移其余项目将花费多少麻烦。之后,您应该立即选择一个中等规模的项目,因为迁移较大的项目(比如带有分支)可能会出现问题,而这在小型项目中可能并不明显。

确保您花一点时间了解将 cvs 项目转换为 vss 或其他方式是多么容易。如果从 vss 转换为 perforce 真的很痛苦,您可以将 vss 转换为 cvs,然后再转换为 perforce。不要沉迷其中,但它可以让你摆脱困境。我认为这里的关键是渐进式。

备份很好。期间。

考虑一个截止日期,任何处于非活动状态且比该日期更早的项目都应该被封存。查看最终版本并将其存储在 Perforce 中。你真的需要 15 岁的 Visual Basic 代码吗?

【讨论】:

【参考方案3】:

无论您做什么,都要在某个地方将旧存储库保持在只读模式。

【讨论】:

【参考方案4】:

请原谅我用问题回答问题,但Perforce 不为此提供工具吗?或者,至少,文档?我会殴打我的 Perforce 销售人员...

【讨论】:

p4 工具将完成迁移的技术部分。但是有几十个团队在多个地点使用了 100 多个项目。冷火鸡开关太冒险了。我们需要测试 IDE、命令行和自动化工具访问。我们还需要确保没有代码丢失。【参考方案5】:

考虑不要迁移死的和不活动的项目。只需将他们的存储库置于只读模式即可。如果需要,数据仍然可用,您可以节省迁移它们的时间。只需迁移正在使用的 10%。彻底记录这个过程。

如果某个未迁移的项目在未来某个时间复活,您可以使用您的文档作为参考轻松迁移它。

【讨论】:

【参考方案6】:

我们使用我们编写的工具迁移了我们的 svn 存储库,并且刚刚对我们的 starteam 项目进行了头部修订。

注意单文件签入 (CVS) 和多文件变更集 (Perforce) 之间的差异。

注意分支是单独的空间 (CVS) 与文件路径空间中的分支 (Perforce)。

【讨论】:

你有链接吗? 恐怕其他人很久以前就进行了迁移,可能没有保存工具,或者将它们提交到 perforce 谢谢。由于我有 2TB 数据,因此我正在使用 cvs 与 perforce 的优势和劣势。你有任何链接或信息

以上是关于在版本控制系统之间移动的最佳实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 TeamCity 合并语义版本控制的最佳实践是啥

AWS Lambda - 在 CI/CD 管道中版本控制和提升 lambda 的最佳实践是啥

在 SwiftUI 中以编程方式移动 NavigationView 的最佳实践是啥

Swift iOS 应用程序到 REST PHP API - 身份验证的最佳实践是啥?

具有两个角色的帐户之间的关系的最佳实践是啥?

在 React 组件和服务之间进行通信的最佳实践是啥?