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

您对SVN分支和标记使用哪些命名约定?,svn,naming-conventions,Svn,Naming Conventions,我们公司正在为SVN分支和标记创建命名约定,我不赞成在分支/标记名称上只使用日期或构建编号 我认为我们需要一个名字来更清晰地定义这条路径代表什么,正在做什么,等等 您认为/使用什么?我们所有的开发人员任务都会进入bug跟踪系统。此错误跟踪系统具有与每个任务关联的ID 因此,对于任何任务的分支名称,我们使用: ticketId\u TicketSubject 当分支包含多个ticketID时,我们只需将它们合并到分支名称中: ticketId1\u ticketId2\u说明 这样,如果您有一张票

我们公司正在为SVN分支和标记创建命名约定,我不赞成在分支/标记名称上只使用日期或构建编号

我认为我们需要一个名字来更清晰地定义这条路径代表什么,正在做什么,等等


您认为/使用什么?

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

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

ticketId\u TicketSubject

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

ticketId1\u ticketId2\u说明

这样,如果您有一张票据,并且您想知道要建立哪个分支,您可以很容易地查找它。同样,如果您想在分支构建中找到票证,也可以很容易地找到它

对于标记,我们通过版本号本身来标记它

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

/branchs

/tags

/trunk

然后,我们所有的产品/项目都放在各自子文件夹中的每个产品/项目下

/trunk/project1/

/branchs/project1/TicketId\u说明


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

如果您有与分支机构相关的故事/报价/工作编号,我会将其附加到分支机构的名称中,例如“NHibernate_429”,以便您可以根据跟踪系统方便地引用它。然而,我总是先用英语,因为人们更现实地说,当英语处于发展阶段时,会用到英语

对于标签之类的东西,很难说你想做什么,因为这取决于你正在标记什么。如果您正在标记发行版,那么我会使用“Release X.X.X.X”或类似的简单方式。例如,当您回顾某个特定版本时,您真的不会在意日期或版本号是什么。

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

在主干下我们有主干

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

在分支下,我们发布的每个主要版本都有一个分支(在我们的例子中是一次XP迭代的结果)。它们的命名与主要版本(“v5.03”、“v6.04”)类似。此外,我们有内部分支机构,用于重大更改或特殊版本。命名是自由形式的,名字应该告诉人们分支代表什么。 Expamples将是“解决方案”\u customerA、“模块”\u x\u reorg”等。

我们为分支机构提供了一个“.x”版本,其中标记有一个数字

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

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

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

e、 例如,20090326发布版v6.5或20090326发布后更新

这当然是在标准的主干/标记/分支层次结构下


日期前缀确保所有标记或分支都按创建顺序显示,如果扫描一个大的标记文件夹,这比按描述排序更有用。您可以看到创建它们的时间和原因(如迷你日志消息)。

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

值得记住的是源代码管理为您提供了什么。标记名不仅仅是“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)
标签名在这里唯一真正有用的是版本号。如果您试图将所有信息放入一个标记名中,那么它会有点冗长,我敢打赌它看起来不会那么好。

更好:

<projectname>_<Year>_<minor>_00
\uu00
比如:


XYZ_14_01_00

也就是说,我仍然将我的标记命名为“Project-4.8”。我认为这种思想对标记很有效,但不一定适用于分支。我可以打开一个实验分支,而一个数字不会告诉我这个分支是关于什么的。事实上,我完全不在这个答案中使用分支命名,一个数字不是一个好的分支名称。我想扩展这个问题,问一下什么命名约定可以用来区分实验分支(大的突破性更改,稍后合并)来自为维护旧版本而创建的分支。可能还有更多的“种类”分支。使用标记作为一种机制来跟踪bu需要的信息
<projectname>_<Year>_<minor>_00