2010-08-11 145 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將把包含'標籤'的路徑視爲應該被鎖定,並警告您是否要提交給它們,但這純粹是客戶端和客戶端特定的。