【问题标题】:Folder structure for many projects in one SVN repository?一个SVN存储库中多个项目的文件夹结构?
【发布时间】:2010-10-09 02:10:52
【问题描述】:

我刚刚创建了一个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/

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

【问题讨论】:

    标签: svn repository


    【解决方案1】:

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

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

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

    【讨论】:

    • @Simucal 我认为这应该是公认的答案 - 谢谢 Trumpi!
    【解决方案2】:

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

    我只有一个主存储库。

    存储库/Project1/Trunk
    存储库/Project1/标签
    存储库/Project1/分支

    存储库/Project2/Trunk
    存储库/Project2/标签
    存储库/Project2/分支

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

    【讨论】:

    • 我强烈支持这种布局。我听到 Pawel 说的话,如果在 svn 中创建和管理存储库就像使用 git 一样容易,我会同意。但是,如果您可以将每个项目视为它是它自己的存储库,那么一切都会很好地工作。
    • 是的,在所描述的场景中,无论如何,拥有多个存储库布局似乎是不切实际的。您可以对主存储库进行简单的获取以选择所有代码或单独获取每个项目。
    • 还有 VS2008 和 AnkhSVN 2.0,它非常易于管理和使用 多项目解决方案等。
    【解决方案3】:

    一个真实的例子:Apache 项目repository

    【讨论】:

      【解决方案4】:

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

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

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

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 我的项目很轻。存储库的全部意义在于让我能够为学校处理我所有的各种小型项目,而不必随身携带代码。为每个微型项目建立一个存储库会很麻烦。
        【解决方案6】:

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

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

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

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

        【讨论】:

        • 好吧,我的代码~将~是开源的,仅仅因为它是用于学校的并不意味着它没有任何潜在价值。尤其是我在遗传算法方面的工作,人们可能会觉得阅读起来很有价值。 Google 代码正是为此而设计的。
        • 我不是 Thumbdrive 类型的人,而且本地的 SVN 违背了我为什么首先尝试设置它的目的。便携性。
        • 也许你想试试 unfuddle (unfuddle.com)。他们会给你一个免费的 svn 存储库,你的代码可以是私有的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-25
        • 2012-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-29
        相关资源
        最近更新 更多