首页 文章

一个SVN存储库中许多项目的文件夹结构?

提问于
浏览
31

我刚创建了一个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 /项目B /支链/

这是多项目一体回购人员的做法吗?

6 回答

  • 9

    你有两种选择 . 你已经提到的那个,那就是每个项目有一个主干(选项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,因此您需要问自己是否需要标记您的工作 . 你也可以问问自己是否需要创建分支(如果你想进行一些实验,你可能会想要) . 您还需要问问自己,您是否乐意将您的所有工作整合为一个,您是否愿意独立分支每个项目的灵活性 .

    我一直遵循的经验法则:将我们一起部署的任何内容捆绑在一起 .

    (顺便说一下 - 你可以在同一个存储库中有许多中继 - 这几乎相当于在多个存储库中有一个中继,除了每个存储库都维护自己的修订计数器而你不能在存储库之间进行合并 . )

  • 6

    这就是我用于家庭源代码控制的东西 .

    我只有一个主存储库的地方 .

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

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

  • 44

    一个真实的例子:Apache Projects repository .

  • 2

    如果你坚持只有一个存储库(我不在自己的营地)并做分支,那么我认为你的建议是好的 . 但同样,我认为SVN存储库等于项目 .

  • 2

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

    • 我会使用/ projectA / trunk布局,如果每个项目都进行了大量的开发,并且所有东西都需要分开,因为它之间没有那么多的连接(组件/项目独立) . 但是,您也可以在每个项目中使用一个SVN存储库 . 请记住,您将无法使用svn co http://..../svn/查看所有项目,因为这也将从所有项目中获取所有标记和分支,而不仅仅是中继 .

    • / trunk / projectA如果您的项目/组件紧密地结合在一起并且您需要从同一版本(例如非常接近主项目的库)标记和分支它们肯定会更好 . 如果您愿意,也可以使用svn co http://.../svn/trunk/来获取最新的主干版本的所有项目 .

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

    除此之外:请检查您的家庭作业是否真的需要Google Code服务,因为它的目的是支持OSS . 您可以随时在本地使用SVN,甚至可以通过SSH使用SVN,这样您也可以将存储库放在USB记忆棒或可远程访问的计算机上;你真的不需要托管 . 也可能存在隐私问题 .

  • 2

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

    如果需要分离开发团队(谁在Trunk上工作)和维护团队(谁与Branches打交道)这个结构是好的:

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

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

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

相关问题