Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control 正在开始对已中等大小的项目进行版本设置_Version Control_Mercurial - Fatal编程技术网

Version control 正在开始对已中等大小的项目进行版本设置

Version control 正在开始对已中等大小的项目进行版本设置,version-control,mercurial,Version Control,Mercurial,我即将开始参与一个中型项目(约5万行)的开发,该项目到目前为止由一个人编写,没有版本控制;因此,文件夹被同一文件的不同版本(名为file1、file2、file3等)弄得乱七八糟 我建议开始使用VCS(priori Mercurial,这是我在个人项目中唯一使用过的,但我愿意接受建议),所以我会考虑如何“启动”存储库。例如,我是否应该对所有现有文件进行初始提交,并立即对删除的未使用文件进行新提交?还是别的什么 (对于mercurial vs bazaar vs git vs whatever,也

我即将开始参与一个中型项目(约5万行)的开发,该项目到目前为止由一个人编写,没有版本控制;因此,文件夹被同一文件的不同版本(名为file1、file2、file3等)弄得乱七八糟

我建议开始使用VCS(priori Mercurial,这是我在个人项目中唯一使用过的,但我愿意接受建议),所以我会考虑如何“启动”存储库。例如,我是否应该对所有现有文件进行初始提交,并立即对删除的未使用文件进行新提交?还是别的什么

(对于mercurial vs bazaar vs git vs whatever,也欢迎发表建设性评论。)


谢谢你的建议。

我想说的是,使用你最舒服的东西,满足你的需要。至于从哪里开始,我个人会用当前的来源作为种子进行回购,这样你就可以验证一切都按照预期进行了构建和运行。您可以将此初始种子设置为分支。这样,您就可以在重构之前回到起点

例如,我是否应该对所有现有文件进行初始提交,并立即对删除的未使用文件进行新提交

如果存储库的大小不是一个问题,那么是的,这是一个很好的起点。否则,您可以提交实际使用的内容,然后从那里开始


对于哪个系统,所有DVCSE都遵循相同的核心原则。你选择哪一个完全是主观的——要真正知道你喜欢哪一个,唯一的办法就是尝试每一个。

我的方法是:

  • 在现有项目文件夹(“现有”)中创建Mercurial存储库
  • 将所有项目文件提交到“现有”
  • 在不同的位置创建一个空存储库(“新建”)
  • 随着文件的测试和QA(这是必要的,因为“现有”中有太多的糟粕)将它们从“一切”拉到“新”
  • 一旦文件被拉入“新”;从“现有”中删除相应的文件。如果在迁移过程中需要访问这些文件,请将它们从“新”推回到“现有”

  • 这给了我一个优势,就是出于恢复目的,我可以控制一切,控制将项目引入DVCS。最终,现有的项目文件夹经过了全面测试,并获得了项目进展的批准。此时,“everything”目录可以被删除或更改为工作文件夹;“new”变成了实际的项目文件夹。

    我认为Mercurial是一个不错的选择。轻量级、快速、使用非常简单,并且与Windows(如果您正在使用的是Windows平台)集成良好

    在第一次提交之前,我可能会清除所有的混乱。删除您不关心的所有内容,运行所有必要的测试,然后执行提交

    是的,我坚决反对0天的杂乱无章的回购协议

    诚然,一个5万SLOC项目并不是很大,但如果你提交了你已经知道不需要的文件,它们会使你的回购协议稍微大一点


    此外,请记住检查树是否不包含大型二进制文件。如果是这样的话,如果可能的话就把它们除掉。

    为什么要把它变成一个分支?你可以回到任何有修订的状态。你可以,只是取决于你想做什么。可以在主干上完成(对不起,SVN是我的主要CM),然后就地重构,或者如果您正在删除和/或移动大量代码,您可能只想将分支作为参考。个人喜好…@Oben我不知道你是不是在开我玩笑(我的幽默探测器不是很敏感)。如果你是,我只能说,我似乎总是想出正确的解决方案,但最初太复杂了——然后简化,简化,简化。如果不是的话,我会加上我的理由,我必须投入版本控制的项目有如此多的重复文件;错误的开始;在现有的项目中,确保其稳固前进的唯一方法是测试和QA“允许”继续开发的每个文件。。任何一个它看起来相当复杂,我在第一次阅读时没有理解它,因此更详细/结构化的描述可能会有所帮助。另一方面,我想知道为什么所有这些步骤都是必要的(与@Cat的答案相比)。无论如何,请不要太认真。@Oben-我同意@Cat的答案更清楚更好。我正在编辑我的答案,让它更清楚一点。至于认真对待这件事——我正在考虑在我的额头上纹上“吻”作为镜像文字,所以当我照镜子时……可惜你去掉了“向项目介绍DVC”,我喜欢这个笑话:p