2010-08-11 165 views
7

Subversion是否有一种方法来指定特定路径是不同路径的别名,并且能够在条件更改时更新该别名?我可以锁定路径以防止更改吗?Subversion是否支持分支的别名

我工作的一个仓库结构和想什么,我做的是有以下路径:

  • /versions/1.0 - 先前版本(锁定)
  • /版本/1.1 - 先前版本(锁定)
  • /versions/1.1.1 - 当前版本(解锁补丁开发)
  • /versions/1.1.2 - 下一个次要版本(解锁发展)
  • /versions/1.2 - 下一个主要版本(解锁发展)
  • /补丁 - 别名/versions/1.1 0.1,签到出现在两个地方
  • /subrelease - 别名/versions/1.1.2,签到出现在两个地方
  • /后备箱 - 别名/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 - 下一个主要版本(解锁发展)
  • /补丁 - 别名/versions/1.2,签到出现在两个地方
  • /subrelease - 别名/versions/1.2。1,签到出现在两个地方
  • /后备箱 - 别名/versions/1.3,签到出现在两个地方

我知道我能做到这一点我自己的机器上,但这种强制在源代码控制中,每个人都可以使用一组共同的语言。

回答

6

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

+0

其实是的,我忘了那个。我曾经有过这方面的经验,但是这与外部的另一个结账工作,而不是从整个结帐采取外部。我已经在svn列表上看到了几次内部链接,但是AFAIK它们还不存在。 – Rup 2010-08-11 18:27:52

2

不支持别名,对不起。然而,复制整棵树很快且容易。您可以不创建版本/ 1.2等,然后只需在时间到时将trunk复制到版本/ 1.2,或者只是在版本/ 1.2中工作。或者,你可以管理两者,但是使用一个进程在两者之间复制提交,例如,一旦他们通过持续集成服务器上的所有测试,它就会将提交的数据从trunk复制到1.2。

锁定:您可以编写一个服务器端提交挂钩以防止提交到特定路径并添加您的路径以锁定它们。然而,服务器或默认客户端没有内置支持。某些客户例如TortoiseSVN将把包含'标签'的路径视为应该被锁定,并警告您是否要提交给它们,但这纯粹是客户端和客户端特定的。