版本控制的选择和设置

版本控制的选择和设置

任何人? 这个问题在 SO 上可能也更好。因此,任何有能力的人,请随意提出来。

我即将安装一台新笔记本电脑,并在此过程中过渡到新的版本控制系统,作为一般清理工作的一部分。目前我使用集中版本控制系统(是的,它VSS,是的,我知道这个系统的所有优点和缺点,但作为单用户系统,它对我来说很好用)。我对新系统的要求很少,我可以自由选择任何当前的主流播放器,但成本限制将迫使我选择 oss。我的一些要求是:

  • 在 Windows 下的单台机器(即有问题的笔记本电脑)上运行
  • 我不会与其他开发人员或工作人员分享东西——这更多是为了我自己的历史利益。
  • 我想要版本化源代码、文档和二进制文件
  • 我有大量不相关的项目层级结构(见下文)
  • 我在层次结构中有一些不需要控制的文件(但可以控制)
  • 一些项目使用 Visual Studio,因此一些集成可能会很好。
  • 工作之间可能会有一些文件共享。
  • 我通常只需要在代码文件中进行少量的分支

我目前的目录层次结构有点像:

Root
 |
 |--Customer #1
 |    |
 |    |--Job #1
 |    |    |
 |    |    |--Data files received from Customer for Job (not controlled)
 |    |    |--Documentation files (controlled)
 |    |    |--Project information files (not controlled - but could be) 
 |    |    |--Software Project Files (controlled)
 |    |    |--Scratch dir for job (not controlled)
 |    |    
 |    |--Job #2
 |         | (same structure as above)
 |
 |--Customer #2
 |    |..
 |
 |--Cusmtomer #n
      |..

目前我有大约 22 个客户,他们手下有不同数量的项目。

目前,我有一个基于目录结构根目录的 VSS 存储库。如果我继续使用集中式系统(即 SVN),我相信我应该保持相同的方法并继续使用基于根目录的单个存储库。这是一种有效的方法吗?

但是,如果我转向分布式工具,那么我不确定该如何处理这种情况。我最初的猜测是,我不应该有一个基于整个目录结构的根目录的存储库 - 但这只是猜测,所以我真的不知道它有多有效。

我是否应该在根目录、客户目录、作业目录或子作业目录级别采用分布式方法?

另外,我不清楚分布式工具(也许还有 SVN)是否可以分支存储库的某些部分。例如,我认为分支软件项目中的源代码很有用,但分支我的文档则没用。那么,如果我在作业级别发布存储库,我可以只分支软件项目文件吗?还是该作业中的所有文件都会被分支?

每次我查看分布式工具时,我都会有一种挥之不去的感觉,觉得它们不适合我的设置风格。我不喜欢在目录层次结构中手动设置 50 到 80 个单独的存储库(如果我在工作级别进行推广,或者在客户级别进行推广,则需要 20 多个)。这种感觉也延伸到将所有这些存储库分散在各处 - 然而我有一个我信任的备份策略,所以后一种感觉完全是没有根据的。

那么你们能给我什么建议呢?提前谢谢了!

答案1

我在用着TortoiseSVN我自己就成功了。使用空白的新目录和“在此创建存储库”选项设置(基于文件的)存储库非常简单。TortoiseSVN 似乎可以处理使用存储库所需的所有工作,因此无需额外安装。

答案2

我主要使用 Subversion,目前对分布式系统只了解一点点,所以我将从 SVN 的角度来谈。

如果您只是在一台机器上使用源代码控制,那么分布式源代码控制的优势就会降低。

如果手动设置 Subversion,会有些麻烦。不过,有一个名为 VisualSVN 的(免费)软件包可以帮您完成这项工作,因此您只需使用 SVN,而不必担心设置或配置。

如果您对 SVN 的 Visual Studio 集成感兴趣,我知道有几个插件:AnkhSVN(免费)和 VisualSVN(付费)。后者来自生产上述免费 VisualSVN 安装包的同一家公司。

就处理多个客户(每个客户都有项目)而言,您可以使用一个包含所有内容的全局存储库。另一个想法可能是为每个客户创建一个单独的存储库,每个存储库都包含该客户的项目。这样,您可以更好地控制每个存储库,但您的开销会更大一些。

您提到了分支项目。SVN 在存储库级别进行分支,您不能只分支特定的子集。这将有利于上面提到的每个客户存储库的想法。但是,在 SVN 中,分支和标签很便宜,因为它们存储变更集(增量),而不是完整副本。Git 和 Mercurial 等分布式工具针对分支和合并进行了优化,因此使用这些工具的体验可能会更好 - 我对它们了解不够,所以不能肯定地说。

希望有所帮助。

答案3

我很幸运Mercurial, 使用玳瑁适用于 Windows。它是一个分布式 vcs,但分布式功能不会妨碍以单用户身份使用它。我用它来记录个人历史和一些编程项目,效果很好。设置非常简单,如果我没记错的话,比 SVN 简单,而且制作和同步我的整个存储库的备份也相当容易。

相关内容