簡體   English   中英

SVN外部遷移

[英]SVN Externals migration

我有一個SVN回購與幾十個外部。 所有外部都是參考“old_svr”定義的。 將repo移動到新服務器“new_svr”,並且必須更改所有外部引用以引用“new_svr”而不是“old_svr”。

這樣做:1)我檢查了新服務器的repo,這意味着所有的外部仍然指向“old_svr”2)我在頂部目錄中為我的工作副本cd並運行

svn propget -R svn:externals。 > old_externals.tmp 3)我在文件old_externals.tmp中將“old_svr”更改為“new_svr”sed的/ old_svr / new_svr / g'old_externals.tmp> new_externals.tmp 4)我將新的外部定義應用於我的工作副本propset svn:externals -F new_externals.tmp 5)提交更改svn commit 6)更新工作副本svn update

此時我遇到了很多錯誤:A)svn:warning:修訂版123中的URL'svn:// new_svr / path / tag /目錄'不存在B)仍舊引用舊服務器svn:warning:未知主機名'old_svr'

問題: - 如何有效地刪除所有引用到old_svr,以便它不再出現。 - 我不知道為什么對於某些外部目錄(大多數都經過精細處理)svn找不到合適的版本來更新。

YorgZ

你應該檢查你的環境。 使用最新的Subversion服務器和客戶端。

從幾年前(2008年)發布的Subversion 1.5開始,建議在svn:externals使用與存儲庫相關的URL。 在這種情況下使用它們會有所幫助,因為可以更改存儲庫的URL並且不需要修改svn:externals 檢查SVNBook | 有關回購相對URL的更多信息的外部定義

你至少(乍一看)有兩個錯誤一個方法缺陷

  • svn ps語法對於externals是錯誤的(因此你不能在一個命令中使用propset)
  • (可能是小錯誤) svn pg > file每個定義后帶空行的svn pg > file寫入文件, -F for ps需要“每行定義”並且只接受#作為注釋行
  • BIG FLAW - 您沒有仔細閱讀命令說明並忽略錯誤輸出

簡而言之:

你的svn ps什么都不做(或者你有另一個ps

>svn ps svn:externals -F z:\externals.new
svn: E205001: Try 'svn help propset' for more information
svn: E205001: Explicit target argument required

更長:

必須為每個定義使用一個(正確的)propset(當前形式,當外部散布在repo上時)

可以為所有定義使用一個(正確的)propset,如果您之前重構它們的定義(無論如何都是好的時間)並在一個存儲庫節點中收集所有定義(在此過程中必須更改LOCALPATH):對於本地文件夾/它的定義可以是數據/集合(鏈接到外部)

Data - file:///Z:/Repo1/trunk/Collection Collection

(在分散的模型中)

. - file:///Z:/Repo1/trunk/Collection Data/Collection

(在集中/在干線根/模型中)

具有相同的最終結果(在repo-tree的同一節點上具有相同的外部結構)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM