我刚创建了一个Google Code SVN存储库,用于存储我的学校项目和家庭作业,并允许在学校和家庭之间轻松转移。
它创建的默认目录是:
https://simucal-projects.googlecode.com/svn/trunk/
https://simucal-projects.googlecode.com/svn/tags/
https://simucal-projects.googlecode.com/svn/branches/
我从未在多个项目中使用过存储库,但在阅读之后:One svn repository or many?我决定为我的所有随机学校项目提供一个存储库。
我应该只复制上面的文件夹结构,但对于每个项目?
https://simucal-projects.googlecode.com/svn/projectA/trunk/
https://simucal-projects.googlecode.com/svn/projectA/tags/
https://simucal-projects.googlecode.com/svn/projectA/branches/https://simucal-projects.googlecode.com/svn/projectB/trunk/
https://simucal-projects.googlecode.com/svn/projectB/tags/
https://simucal-projects.googlecode.com/svn/projectB/branches/
这是多人一对一回购的人吗?
答案 0 :(得分:44)
你有两种选择。你已经提到的那个,那就是每个项目有一个主干(选项1):
https://simucal-projects.googlecode.com/svn/projectA/trunk/
https://simucal-projects.googlecode.com/svn/projectA/tags/
https://simucal-projects.googlecode.com/svn/projectA/branches/
https://simucal-projects.googlecode.com/svn/projectB/trunk/
https://simucal-projects.googlecode.com/svn/projectB/tags/
https://simucal-projects.googlecode.com/svn/projectB/branches/
选项2将是一个主干,每个项目都是主干下的子文件夹:
https://simucal-projects.googlecode.com/svn/trunk/projectA/
https://simucal-projects.googlecode.com/svn/tags/projectA/
https://simucal-projects.googlecode.com/svn/branches/projectA/
https://simucal-projects.googlecode.com/svn/trunk/projectB/
https://simucal-projects.googlecode.com/svn/tags/projectB/
https://simucal-projects.googlecode.com/svn/branches/projectB/
选项1的优点是您可以独立地分支和标记每个项目。如果您需要单独部署每个项目,这是可取的。
如果所有项目一起部署,则需要选项2。这是因为您只需在部署时标记存储库一次。
由于您正在为学校项目使用Subversion,您需要问自己是否需要标记您的工作。你也可以问问自己是否需要创建分支(如果你想进行一些实验,你可能会想要)。您还需要问问自己,您是否乐意将所有工作合并为一个,是否更愿意灵活地独立分支每个项目。
我一直遵循的经验法则:将我们一起部署的任何内容捆绑在一起。
(顺便说一下 - 你可以在同一个存储库中有许多中继 - 这几乎相当于在多个存储库中有一个中继,除了每个存储库都维护自己的修订计数器,你不能在存储库之间进行合并。)
答案 1 :(得分:9)
这就是我用于家庭源代码控制的内容。
我只有一个主存储库。
存储库/ PROJECT1 /中继线
存储库/ PROJECT1 /标签
存储库/ PROJECT1 /分行存储库/ Project2的/中继线
存储库/ Project2中/标签
存储库/ Project2的/分行
我喜欢这种结构,很容易引用项目并保持完整性。
答案 2 :(得分:6)
一个真实的例子:Apache Projects repository。
答案 3 :(得分:2)
这个问题没有明确答案,因为它取决于最适合您项目的内容。
从可维护性的角度来看,我几乎总是喜欢第二种方式;但是如果你的项目变得更大并且可能会延长,那么每个项目使用单独的存储库会更好。
除此之外:请检查您的家庭作业是否真的需要Google Code服务,因为它的目的是支持OSS。您可以随时在本地使用SVN,甚至可以通过SSH使用SVN,这样您也可以将存储库放在USB记忆棒或可远程访问的计算机上;你真的不需要托管。也可能存在隐私问题。
答案 4 :(得分:2)
如果你坚持只有一个存储库(我不在自己的营地)并做分支,那么我认为你的建议是好的。但同样,我认为SVN存储库等于项目。
答案 5 :(得分:2)
跟踪文件夹布局(版本控制)的主要目标之一是访问控制管理。
如果需要将开发团队(在Trunk上工作)和维护团队(与Branches打交道)分开,这个结构很好:
/trunk
/Project1
/Project2
/branches
/Project1
/Project2
/tags
/Project1
/Project2
如果我们想允许每个项目访问特定用户组,那么这种结构很好:
/Project1
/trunk
/branches
/tags
/Project2
/trunk
/branches
/tags