2010-07-20 68 views
17

我試圖改變:通過此命令「SVN的外部」遠程倉庫的財產:是否可以遠程更改Subversion版本庫的「svn:externals」屬性?

svn ps svn:externals "vendor1 http://vendor_repo_here.com" http://main-repo-here.com 

我上面的命令來改變預期「的svn:externals的」從不管它是「供應商1 http://vendor_repo_here.com財產」但它拋出一個錯誤:

Setting property on non-local target 'http://main-repo-here.com' needs a base revision. 

所以我試試這個:

svn ps -r HEAD svn:externals "vendor1 http://vendor_repo_here.com" http://main-repo-here.com 

現在它說:

Cannot specify revision for versioned property 'svn:externals' 

我做錯了什麼?無論如何通過命令行遠程更改它?

回答

28

我有類似的問題。 Turtoise似乎結帳,然後再次提交,所以我寫了一個腳本,做同樣的事情。

svn checkout <URL> repocopy --depth 'empty' 
svn propget svn:externals repocopy > tmp2 
//whatever you want to do > tmp_new 
svn propset svn:externals repocopy -F tmp_new 
svn commit -m "commit comment" tmp 
rm -f -r repocopy 
rm tmp2 
rm tmp_new 
+2

好吧,所以添加'深度'將確保結賬立即執行,無論您的回購規模是多少......對吧?聽起來很完美。還沒有嘗試過 - 但我認爲你的答案是最可以接受的。 – 2010-11-30 04:34:48

+2

是的,「 - 深空」這樣做。 「--depth immediate」也存在,並且會檢出該頂級目錄中的文件和文件夾。 – panschk 2010-12-03 12:56:22

+3

謝謝,但在第5行中,我寧願'svn commit -m「commit comment」repocopy';除此之外,太棒了。 – 2015-01-06 00:19:40

4

從SVN propset命令的幫助:

propset命令(PSET,PS):設置屬性上的目錄,文件或修訂值。 用法:1. propset命令PROPNAME PROPVAL PATH ... 2. propset命令PROPNAME --revprop -r REV PROPVAL【服務目標】

  1. 更改工作副本中的一個版本的文件或目錄的屬性。
  2. 更改存儲庫修訂版本上未版本控制的屬性。 (TARGET只決定要訪問哪個存儲庫。)

svn:外部屬性是一個版本控制屬性,它不能以這種方式進行更改。

+0

我不確定TortoiseSVN如何直接從「Repo瀏覽器」直接執行,如Si所示。 – 2010-07-20 04:17:04

1

這是可能的遠程使用TortoiseSVN改變svn:externals

TortoiseSVN的>Repo-Browser>(選擇的svn:externals的目錄)>顯示屬性>編輯

這對我的作品。

知道爲什麼TortoiseSVN能夠但svn不能。

+0

這是很好的信息..我知道這件事。但是不能從命令行完成嗎? – 2010-07-20 04:15:01

+0

Adrian提供的文檔表明這是不可能的,因此最好的辦法可能是通過電子郵件發送subversion或TortoiseSVN郵件列表,以瞭解爲什麼一個客戶端(推測使用相同的API /庫)可以做到這一點,而另一個客戶端卻不行。你可能會很幸運,並找到有更深層次知識的人,我知道Stefan(TortoiseSVN主要開發人員)剛剛在SO上,但是真的很幸運! – si618 2010-07-20 04:35:08

0

Propedit將工作在修訂​​屬性,不知道有關propset,但應該工作。

但是:回購將不得不被修改以允許修改屬性編輯(在revprop-change掛鉤前),否則他們將被拒絕。一旦完成,你可以設置其他版本屬性,如作者,日期,日誌評論等(當然,你的鉤子可以變得聰明,拒絕除了外部變化之外的所有變化,但是你需要知道你必須在該能力中編碼)

您將不得不設置一個編輯器 - 我不認爲您可以直接覆蓋現有值(除非propset執行此操作),因爲它預計會顯示您現有的編輯值。

+0

'svn:externals'不是修改的屬性,它是一個正常的(儘管是特殊的)屬性。 – eichin 2011-10-01 16:37:29

0

當你安裝subversion的時候,在'svn'命令旁邊有另一個叫'svnmucc'的命令。 'svnmucc'能夠從命令行設置屬性url。這包括版本化的屬性。

d:>svnmucc 
enter code Subversion multiple URL command client 
usage: svnmucc ACTION... 

    Perform one or more Subversion repository URL-based ACTIONs, committing 
    the result as a (single) new revision. 

Actions: 
    cp REV SRC-URL DST-URL : copy [email protected] to DST-URL 
    mkdir URL    : create new directory URL 
    mv SRC-URL DST-URL  : move SRC-URL to DST-URL 
    rm URL     : delete URL 
    put SRC-FILE URL  : add or modify file URL with contents copied from 
         SRC-FILE (use "-" to read from standard input) 
    propset NAME VALUE URL : set property NAME on URL to VALUE 
    propsetf NAME FILE URL : set property NAME on URL to value read from FILE 
    propdel NAME URL  : delete property NAME from URLhere 
+0

*帶顛覆功能的「___」* ..? – Xlander 2014-10-29 10:04:33

+0

好的,我承認,作爲荷蘭人,我擅長荷蘭主義。我調整了我的文本,使其更具可讀性(我希望)。 – 2014-10-30 10:00:36

+0

哈哈,確定。這不是問題。更好的方式來說這將是*當你安裝顛覆時,在'svn'命令旁邊有另一個安裝命令'svnmucc'。* – Xlander 2014-10-30 10:15:15

相關問題