我目前正在使用TortoiseSVN来管理我目前正在进行的几个项目.当我第一次将所有内容都移动到源代码控制中时,我并不确定应该如何布置所有内容,因此我最终将每个项目放入其自己的存储库中.
我想知道,将它们全部移动到一个大型存储库并将它们拆分为项目文件夹对我来说是个好主意吗?其他人都做了什么?
目前,他们都没有共享共同的代码,但他们可能在将来.如果它们在一起的话,它会更容易管理吗?
谢谢.
取决于"项目"的意思.
我有一个通用的本地存储库,其中包含我写的随机内容(包括我的网站,因为它很小).单个用户本地SVN存储库在您花费很多年打字之前不会遇到明显的性能问题.到那时SVN会更快.所以我还没有后悔把所有东西扔进一个存储库,尽管其中的一些东西完全不相关,除了我写的全部.
如果"项目"意味着"来自班级的任务",或"我用来驱动我的TiVo的脚本",或"我学习新语言的进步",那么每个项目创建一个回购对我来说似乎没有必要.然后,它也没有任何成本.所以我想我会说不要改变你正在做的事情.除非你真的想要重新组织存储库的经验,在这种情况下确实要改变你正在做的事情:-)
但是,如果通过"项目"你的意思是一个"真正的"软件项目,公共访问存储库,那么我认为每个项目的单独回购是有意义的:部分是因为它干净地划分事物,每个项目独立扩展,但也因为这是人们期望看到的.
在单独的存储库之间共享代码不像您想象的那样是一个问题,因为svn具有相当可爱的"svn:externals"功能.这使您可以将存储库的目录指向另一个存储库中的目录,并自动检查这些内容以及您的内容.有关详细信息,请一如既往地查看SVN书籍.
我会将它们存储在同一个存储库中.它有点整洁.另外,为什么持续集成会很重要 - 您可以随时从存储库中提取特定文件夹.
它也更容易管理 - 帐户到一个存储库,访问一个存储库的日志等.
我的经验法则是巩固一起交付的东西.换句话说,如果您可以单独交付项目X和项目Y,则将它们放在单独的回购中.
是的,有时这意味着你有一个包含大量组件的项目的庞大回购,但人们可以在回购的子树上运行,这迫使他们在提交更改时考虑"整个项目".回购.
我绝对会将每个项目保存在自己的存储库中,与其他项目分开.这将为每个项目提供自己的提交历史.一个项目的回滚不会影响其他项目.