Subversion是否支持分支的别名

时间:2010-08-11 18:12:49

标签: svn version-control

在subversion中是否有一种方法可以指定特定路径是不同路径的别名,并且能够在条件发生变化时更新该别名?我可以锁定路径以防止更改吗?

我正在开发一个存储库结构,我想要做的是有以下路径:

  • /versions/1.0 - 上一版本(已锁定)
  • /versions/1.1 - 上一版本(已锁定)
  • /versions/1.1.1 - 当前版本(解锁开发已解锁)
  • /versions/1.1.2 - 下次小型发布(解锁开发)
  • /versions/1.2 - 下一个主要版本(未开发用于开发)
  • / patch - /versions/1.1.1 的别名,Checkins出现在两个地方
  • / subrelease - /versions/1.1.2 的别名,Checkins出现在两个地方
  • / trunk - /versions/1.2 的别名,Checkins出现在两个地方

目标是保持主干移动以跟上大多数开发人员的工作地点。在我们发布几次并且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 的别名,Checkins出现在两个地方
  • / subrelease - /versions/1.2.1 的别名,Checkins出现在两个地方
  • / trunk - /versions/1.3 的别名,Checkins出现在两个地方

我知道我可以在自己的机器上执行此操作,但是在源代码控制中强制执行此操作会为每个人提供一组共同的措辞。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

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