Subversion 是不是支持分支的别名

Posted

技术标签:

【中文标题】Subversion 是不是支持分支的别名【英文标题】:Does Subversion support aliases for branchesSubversion 是否支持分支的别名 【发布时间】:2010-08-11 18:12:49 【问题描述】:

有没有办法在 subversion 中指定特定路径是不同路径的别名,并且能够随着条件的变化更新该别名?我可以锁定路径以防止更改吗?

我正在研究存储库结构,我想做的是有以下路径:

/versions/1.0 - 以前的版本(锁定) /versions/1.1 - 以前的版本(锁定) /versions/1.1.1 - 当前版本(解锁用于补丁开发) /versions/1.1.2 - 下一个次要版本(解锁用于开发) /versions/1.2 - 下一个主要版本(解锁用于开发) /patch - /versions/1.1.1 的别名,签入出现在两个地方 /subrelease - /versions/1.1.2 的别名,签入出现在两个地方 /trunk - /versions/1.2 的别名,签入出现在两个地方

目标是保持主干移动以跟上大多数开发人员的工作。在我们发布了几次并且 1.2 上线后,结构将是:

/versions/1.0 - 以前的版本(锁定) /versions/1.1 - 以前的版本(锁定) /versions/1.1.1 - 以前的版本(锁定) /versions/1.1.2 - 以前的版本(锁定) /versions/1.2 - 当前版本(解锁用于补丁开发) /versions/1.2.1 - 下一个次要版本(解锁用于开发) /versions/1.3 - 下一个主要版本(解锁用于开发) /patch - /versions/1.2 的别名,签入出现在两个地方 /subrelease - /versions/1.2.1 的别名,签入出现在两个地方 /trunk - /versions/1.3 的别名,签入出现在两个地方

我知道我可以在自己的机器上执行此操作,但在源代码管理中强制执行此操作会给每个人提供一套通用的语言来使用。

【问题讨论】:

【参考方案1】:

据我所知,您可以使用svn:externals property 使一个文件夹充当另一个文件夹的别名来实现类似的效果。如果您不必一次提交两个版本/分支,它应该可以工作。

【讨论】:

其实是的,我忘记了。我对此有不同的经验,但这是在另一个结帐中使用外部而不是从整个结帐中获取外部。我也曾在 svn 列表中看到过多次讨论内部链接,但据我所知,它们还不存在。【参考方案2】:

不支持别名,抱歉。然而,复制整棵树既快速又容易。您可以不创建版本/1.2 等,然后在时机成熟时将主干复制到版本/1.2,或者只在版本/1.2 中工作。或者,您可以同时管理两者,但使用一个过程在两者之间复制提交,例如一旦他们通过了您的持续集成服务器上的所有测试,它会将提交从主干复制到 1.2。

锁定:您可以编写一个服务器端提交挂钩来防止提交到特定路径并在那里添加您的路径以锁定它们。但是,服务器或默认客户端都没有内置支持。一些客户,例如TortoiseSVN 会将包含“标签”的路径视为应该锁定的,并在您要提交它们时警告您,但这纯粹是客户端和客户端特定的。

【讨论】:

以上是关于Subversion 是不是支持分支的别名的主要内容,如果未能解决你的问题,请参考以下文章

Subversion:如何获取所有活动的,未合并的分支的列表

Centos 编译安装Apache subversion-1.9.7 + httpd 2.4.32

使用IDEA subversion插件从SVN服务器上check out 代码

Subversion 中的主干、分支和标签是啥? [复制]

在 Subversion 中合并分支时的冲突预防

在 Subversion 1.5 中将分支重新集成到主干时缺少范围错误消息