代码之家  ›  专栏  ›  技术社区  ›  Nate CSS Guy

在Subversion中管理多个应用程序的最佳方法

svn
  •  3
  • Nate CSS Guy  · 技术社区  · 15 年前

    如何在SVN中维护项目的两个(或更多)版本?不同的箱子,在主箱子里面?树枝?完全分开的文件夹?

    我现在已经有了,假设我要制作projeca的v2,但我仍然需要修复v1中的bug:

    \ProjectA\trunk\[myfiles]
    \ProjectA\tags\
    \ProjectA\branches\
    

    哪种方法最好?

    \ProjectA\trunk\[myfiles]
    \ProjectA\tags\
    \ProjectA\branches\v1\[myfiles]
    \ProjectA\branches\v2\[myfiles]
    

    或者这样更好?

    \ProjectAv1\trunk\[myfiles]
    \ProjectAv1\tags\
    \ProjectAv1\branches\
    
    \ProjectAv2\trunk\[myfiles]
    \ProjectAv2\tags\
    \ProjectAv2\branches\
    

    你会用哪个,更具体地说,为什么?我倾向于第一种选择,但有些事情感觉不对。同时,第二种选择看起来很干净,但是很难看。

    任何想法都值得欣赏。

    4 回复  |  直到 15 年前
        1
  •  7
  •   rmeador    15 年前

    通常的方法几乎就是你的中间例子。在 the subversion documentation .

        2
  •  1
  •   Community CDub    8 年前

    我认为这里的情况非常好: manage-merging-updates-from-several-developers

    简短的版本,

    /Project/trunk
    /project/tags/version1
    /project/branches/version1-sp1 <- when sp1 ships, create 
    /project/tags/version1-sp1  <- and a branch off this called 
    /project/branches/version1-sp2 
    

    /project/trunk将始终包含您的head/master代码,任何特定于版本的修改都将进入一个单独的分支。

    在版本3上启动时,您将创建另一个标记/分支组合。

    /Project/tags/version2 <- for the shipped version 
    /Project/branches/version2-sp1 <- for fixes/features. 
    
        3
  •  1
  •   G-Wiz RameshVel    15 年前

    我想最好的办法是

    \ProjectA\trunk\[myfiles] <= this becomes v2
    \ProjectA\tags\
    \ProjectA\branches\v1\[myfiles]
    

    我相信这最好保留了后备箱的含义。

        4
  •  0
  •   Ether    15 年前

    记住,“trunk”只是另一个分支——给这些目录名的唯一含义就是给它什么。所以如果你的应用程序有单独的版本v1,v2,v3..有着完全不同的开发方向,您可以在每个版本中放置一个主干,如下所示:

    \ProjectA\v1\trunk\[myfiles]
    \ProjectA\v1\tags\
    \ProjectA\v1\branches\[myfiles]
    \ProjectA\v2\trunk\[myfiles]
    \ProjectA\v2\tags\
    \ProjectA\v2\branches\[myfiles]
    

    或者(我想我更喜欢这个),一个你的选项2的变体,在这里你保持正常的主干/标签/分支结构在高层次,但是放弃全局主干的想法(因为每个版本都有一个主干):

    \ProjectA\trunk\v1\[myfiles]
    \ProjectA\trunk\v2\[myfiles]
    \ProjectA\tags\
    \ProjectA\branches\v1\[myfiles]
    \ProjectA\branches\v2\[myfiles]