33

我刚刚创建了一个Google Code SVN 存储库,用于存储我的学校项目和家庭作业,并允许在学校和家庭之间轻松转移。

它创建的默认目录是:

https://simucal-projects.googlecode.com/svn/trunk/
https://simucal-projects.googlecode.com/svn/tags/
https://simucal-projects.googlecode.com/svn/branches/

我从来没有为多个项目使用存储库,但在阅读后:一个 svn 存储库还是多个?我决定为我所有的随机学校项目建立一个存储库。

我应该只复制上面的文件夹结构,但是对于每个项目?

https://simucal-projects.googlecode.com/svn/projectA/trunk/
https://simucal-projects.googlecode.com/svn/projectA/tags/
https://simucal-projects.googlecode.com/svn/项目A/分支机构/

https://simucal-projects.googlecode.com/svn/projectB/trunk/
https://simucal-projects.googlecode.com/svn/projectB/tags/
https://simucal-projects.googlecode.com/svn/项目B/分支机构/

这是你们多项目合一回购的人所做的吗?

4

6 回答 6

48

您有两种选择。您已经提到的那个,即每个项目都有一个主干(选项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 用于学校项目,因此您需要问自己是否需要标记您的工作。您还可以问自己是否需要创建分支(如果您想尝试一下,您可能会想要)。您还需要问自己是否乐于将所有工作分支为一个整体,是否更喜欢独立分支每个项目的灵活性。

我始终遵循的经验法则:将我们部署在一起的任何东西都放在一起。

(顺便说一句 - 您可以在同一个存储库中拥有多个主干 - 这几乎相当于在多个存储库中拥有一个主干,除了每个存储库维护自己的修订计数器并且您不能在存储库之间合并。)

于 2009-02-21T20:47:32.327 回答
9

这就是我用于家庭源代码控制的方法。

我只有一个主存储库。

Repository/Project1/Trunk
Repository/Project1/Tags
Repository/Project1/Branches

Repository/Project2/Trunk
Repository/Project2/Tags
Repository/Project2/Branches

我喜欢这种结构,它很容易引用项目并保持完整性。

于 2009-02-21T20:41:35.557 回答
6

一个真实的例子:Apache Projects存储库

于 2009-02-21T21:25:26.043 回答
3

跟踪文件夹布局(在版本控制中)的主要目标之一是访问控制管理。

如果需要分离开发团队(在主干上工作)和维护团队(处理分支),这种结构很好:

/trunk
      /Project1
      /Project2
/branches
         /Project1
         /Project2
/tags
     /Project1
     /Project2

如果我们想允许每个项目访问特定的用户组,这个结构很好:

/Project1
         /trunk
         /branches
         /tags
/Project2
         /trunk
         /branches
         /tags
于 2013-08-03T09:34:40.690 回答
2

这个问题没有明确的答案,因为它取决于什么最适合您的项目。

  1. 如果每个项目正在进行大量开发并且所有内容都需要分离,我会使用 /projectA/trunk 布局,因为它之间没有太多联系(独立的组件/项目)。但是,您也可以为每个项目使用一个 SVN 存储库。请记住,您将无法使用 svn co http://..../svn/ 查看所有项目,因为这也会从所有项目中获取所有标签和分支,而不仅仅是主干。
  2. /trunk/projectA 如果您的项目/组件紧密结合在一起,并且您需要从同一修订版标记和分支它们(例如非常接近主项目的库),那么 /trunk/projectA 肯定会更好。如果您愿意,您还可以使用 svn co http://.../svn/trunk/ 来获取所有项目的最新主干修订版。

从可维护性的角度来看,我几乎总是更喜欢第二种方式;但是如果您的项目变得更大并且可能会延长,最好为每个项目使用单独的存储库。

除此之外:请检查你是否真的需要谷歌代码服务来完成你的作业,因为它的目的是支持 OSS。您始终可以在本地甚至通过 SSH 使用 SVN,因此您也可以将存储库放在 U 盘或可以远程访问的某些计算机上;你真的不需要托管。也可能存在隐私问题。

于 2009-02-21T20:43:41.430 回答
2

如果您坚持只拥有一个存储库(我自己也在 DON'T camp 中)并进行分支,那么我认为您的建议是好的。但同样,我认为 SVN 存储库等于一个项目。

于 2009-02-21T20:49:16.270 回答