Version control 将旧项目历史记录移动到DVCS

Version control 将旧项目历史记录移动到DVCS,version-control,mercurial,bitbucket,Version Control,Mercurial,Bitbucket,在开发solo很长一段时间后,我在DVCS聚会上迟到了,因为我自己用文件夹副本进行版本控制。对于一个小项目,我的文件夹结构基本上如下所示: 计划 发展 版本1.0 release1.1(用于bug修复) release1.2(用于bug修复) 2.0版(用于新功能) 我现在开始使用Mercurial(SourceTree)和BitBucket学习DVCS,并通过一些新项目慢慢学习GUI和命令行的诀窍,在这些项目中我可以重新开始使用DVCS。我想将我的一些旧项目转移

在开发solo很长一段时间后,我在DVCS聚会上迟到了,因为我自己用文件夹副本进行版本控制。对于一个小项目,我的文件夹结构基本上如下所示:

  • 计划
    • 发展
    • 版本1.0
      • release1.1(用于bug修复)
      • release1.2(用于bug修复)
    • 2.0版(用于新功能)
我现在开始使用Mercurial(SourceTree)和BitBucket学习DVCS,并通过一些新项目慢慢学习GUI和命令行的诀窍,在这些项目中我可以重新开始使用DVCS。我想将我的一些旧项目转移到DVCS中,但我不想丢失我的项目历史记录。最好的路径是什么,或者说值得付出努力

我的想法大致如下(尝试使用HgFlow方法):

  • 使用1.0版中的代码创建存储库
  • 将文件提交到开发分支
  • 为release1.0添加标签
  • 合并到主机中
  • 从开发分支,为1.1版创建特性/修补程序分支
  • 将文件从1.1版复制到修补程序分支并提交
  • 将修补程序分支合并到develop和master中
  • 为1.1版添加标签
  • 从开发分支,为1.2版创建特性/修补程序分支
  • 将文件从1.2版复制到修补程序分支并提交
  • 将修补程序分支合并到develop和master中
  • 为1.2版添加标签
  • 等等

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

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

    然后,工作流将变为

  • 创建存储库

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

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

  • 提交并将其标记为
    1.0

  • 使用普通OS Delete命令从工作副本中删除所有文件。文件现在将被列为缺少(
    !…
    hg status中的行)

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

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

  • 提交并将其标记为
    1.1


  • 现在对其他版本重复此操作。重要的一点是在每次代码导入之间清理工作副本-以何种方式确保每次提交都能准确反映您以前使用的文件夹中的状态。

    我觉得您的方法不错!(我在旧项目上做过类似的“复制/粘贴/提交”过程,效果很好。)如果两个分支中都存在更改,您可能希望在合并时使用。Edward,谢谢。对于一些问题,我肯定需要这样做,因为我在早期版本中手动将错误修复中的更改合并到了开发副本中。Martin,谢谢。我没有想过删除的文件会发生什么。这是这是一个非常有用的提示。@kvibbertj:不客气!请随意投票并接受答案:-)我还是一个新手,所以看起来我无法投票:“投票需要15点声誉。“但我接受了你的回答。@kvibbertj:啊,对不起,我忘了那个限制。继续与站点交互,您将解锁所有功能。