您对SVN分支和标签使用哪些命名约定?

时间:2009-03-25 12:15:22

标签: svn naming-conventions

我们公司正在为SVN分支和标签创建一个命名约定,我对在分支/标记名称上仅使用日期或内部版本号的想法感到不舒服。

我认为我们需要的名称能够更好地定义这条路径代表什么,正在做什么努力等等。

您的想法/用途是什么?

7 个答案:

答案 0 :(得分:12)

我总是在标签(通常是分支)前面加上YYYYMMDD格式的日期,然后是标签或分支的用途说明。

例如,20090326_Release_v6.5或20090326_Post_Production_Update

当然,这是在标准的trunk / tags / branches层次结构下。

日期前缀确保它们的所有标记或分支都按创建顺序显示,如果您通过标记的大文件夹进行扫描,那么只需按描述排序就更有用了。您会看到创建时间和原因的时间表(如迷你日志消息)。

答案 1 :(得分:8)

嗯,分支是非常开放的,因为有几种不同类型的分支,它们的命名可能非常不同。

值得记住源代码控制给你的东西。标签名称不只是“v1.4”,而是“/CashCowProject/tags/v1.4”。命名标记“/CashCowProject/tags/CashCowProject-v1.4”有点多余,还有什么呢?

修订控制还使您可以完全访问标记的创建日期和时间。 修订控制还为您提供了应该使用的提交消息,尤其是第一行。

鉴于所有这些信息,将一个简单的视图汇总到一起并不难,为您提供所需的所有信息,来自一致且适当的来源,例如:

CashCowProject
    v1.4 - 26 March 2009     :  With Added whizzbang (more)
    v1.3 - 13 February 2009  :  Best graphics!       (more)
    v1.2 - 01 January 2009   :  Upgraded security    (more)

标签名称在这里唯一有用的是版本号。如果你试图将所有信息都放到标签名称中,那就有点罗嗦了,我敢打赌它看起来不会那么好。

答案 2 :(得分:4)

对于功能分支,请在完成操作后对其进行命名。例如,我将ORM从LINQ迁移到SQL到NHibernate,并创建了一个名为“NHibernate”的分支。完成分支并将其合并回主干后,您可以删除分支以保存将来的命名冲突。如果你真的需要检索分支,你只需要深入研究历史并恢复它。

如果您有与分支相关的故事/报价/工作号,我会将其附加到分支的名称,例如。 “NHibernate_429”,因此您可以轻松地将其与您的跟踪系统相对应。但是,我总是首先使用英语,因为人们在开发过程中会更真实地引用它。

对于像标签之类的东西,很难说你想做什么,因为它取决于你在标记什么。如果你正在标记版本,那么我会使用“Release X.X.X.X”或类似的东西。当您回顾特定版本时,您真的不在乎日期或内部版本号是什么。

答案 3 :(得分:2)

我们所有的开发人员任务都进入了错误跟踪系统。此错误跟踪系统具有与每个任务相关联的ID。

因此,对于任何任务的分支名称,我们使用:

  

ticketId_TicketSubject

当分支包含多个ticketIds时,我们只将它们组合到分支名称中:

  

ticketId1_ticketId2_Description

这样一来,如果你在一张票中并想知道要建立哪个分支,你就可以轻松查找它。同样,如果您想要使用分支构建查找故障单,也可以轻松找到它。

对于标签,我们用版本号本身标记它。

至于每个分支的位置。我们有这样的顶级层次结构:

  

/branches

     

/tags

     

/trunk

然后我们所有的产品/项目都在他们自己的子文件夹中的每一个下面。

  

/trunk/project1/

     

/branches/project1/TicketId_Description

答案 4 :(得分:1)

我们使用的内容(主要遵循公认的惯例):

projectName
 |
 --trunk
 |
 --tags
 |
 --branches

在行李箱下我们有主干。

在标签下我们标记每个版本(内部版本,测试版本和客户版本)。我们只使用版本号作为标签名称。

在分支下,我们为我们发布的每个主要版本都有一个分支(在我们的例子中是一次XP迭代的结果)。这些被命名为主要版本(“v5.03”,“v6.04”)。此外,我们还有主要变更或特殊版本的内部分支机构。命名是自由格式的,名称应该告诉人们分支代表什么。 示例将是“workaround_customerA”,“module_x_reorg”等。

答案 5 :(得分:0)

我们为分支机构提供“.X”版本,其中标签有一个数字。

例如,分支将是Foo-1.2.3.X,标签将是Foo-1.2.3.1,Foo-1.2.3.2等。

我们还有一个特殊标签Foo-1.2.3.0,它是在任何更改之前从trunk创建分支时立即生成的。这样我们就可以随时将分支和标签区分到初始状态(因为在几天内,主干可能会有所不同)。这种做法使合并变得更容易一些,它使得更容易理解分支中更改的代码。

答案 6 :(得分:0)

更好:

<projectname>_<Year>_<minor>_00

像:

XYZ_14_01_00