将旧项目历史转移到DVCS



我独自开发了很长一段时间,用文件夹副本进行了自己的版本控制,现在参加DVCS派对迟到了。对于一个小项目,我基本上会有一个看起来像这样的文件夹结构:

  • 项目
    • 发展
    • 版本1.0
      • 版本1.1(用于修复错误)
      • 1.2版(用于修复错误)
    • 2.0版(用于新功能)

我现在开始使用Mercurial(SourceTree)和BitBucket学习DVCS,并通过一些新项目慢慢学习GUI和命令行的技巧,在这些项目中,我可以使用DVCS重新开始。我想把我的一些旧项目转移到DVCS,但我不想失去我的项目历史。走哪条路是最好的,或者值得付出努力吗?

我正在思考以下内容(尝试使用HgFlow方法):

  1. 使用1.0版中的代码创建存储库
  2. 将文件提交到开发分支
  3. 为版本1.0添加标签
  4. 合并到主控形状
  5. 从开发分支创建1.1版本的功能/修补程序分支
  6. 将1.1版中的文件复制到修补程序分支并提交
  7. 将修补程序分支合并到开发和主
  8. 为1.1版添加标签
  9. 从开发分支创建1.2版本的功能/修补程序分支
  10. 将1.2版中的文件复制到修补程序分支并提交
  11. 将修补程序分支合并到开发和主
  12. 为1.2版添加标签
  13. 等等

这似乎是一个可行的方法吗?你有什么建议?

是的,您的方法很好。在提交下一个版本的代码之前,添加它以使用hg addremove的唯一方法。此命令可以为您找到重命名的文件,从而帮助您重新创建更准确的历史记录。

然后工作流变成

  1. 创建存储库

  2. 将文件从release1.0复制到工作副本中。它们都将被视为未知(hg status中的? ...行)。

  3. 使用hg addremove将它们全部安排为添加。在运行hg addremove之前,调整.hgignore文件以排除生成输出。

  4. 提交并将其标记为1.0

  5. 使用正常的操作系统删除命令从工作副本中删除所有文件。这些文件现在将被列为缺失(hg status中的! ...行)。

  6. 将文件从release1.1复制到工作副本中。与release1.0相比更改的文件现在显示为已修改,(重要的是)新添加的文件显示为未知,而删除的文件仍然显示为丢失。

  7. 运行hg addremove以安排要添加的新文件和要删除的丢失文件。如果1.0中的文件foo.c在1.1中重命名为bar.c,则foo.c将显示为丢失,bar.c将显示为未知。当您运行hg addremove时,Mercurial会将其识别为重命名。使用--similarity选项可以调整文件的相似程度,以便将其视为重命名。

  8. 提交并将其标记为1.1

现在对其他版本重复此操作。重要的部分是在每次代码导入之间清理工作副本——如何确保每次提交都准确地反映出您以前使用的文件夹中的状态。

最新更新