簡體   English   中英

SVN外部文件未提交是否正常?

[英]Is it normal that SVN external files are not committed?

我是Subversion的新手,最近學會了如何使用svn:externals自動導入屬於其他存儲庫的文件。 現在,當我提交trunk文件夾並創建標記以拍攝項目的快照時,定義為外部的文件/文件夾將不會添加到標記文件夾中。

例如,我有這個文件夾結構

Z:\\回購\\ repoA

Z:\\回購\\ repoB

Z:\\項目\\ workB

我在Z:\\Projects\\workB svn:externals設置為file:///Z:/repos/repoA/trunk/lib trunk/lib以便repoA的lib文件夾自動添加到當前工作目錄中, Z:\\Projects\\workB\\trunk 實際上,當我執行SVN Update ,會在trunk文件夾下創建lib文件夾。

Z:\\Projects\\workB\\trunk上編輯了一些文件並執行SVN Commit... ,我從上下文菜單中選擇了TortoiseSVN -> Branch/Tag To Path字段中,鍵入tags/1.0.1並按下OK。 1.0.1標記已成功創建。

Z:\\Projects\\workB\\tags上執行SVN Update后,出現了一個名為1.0.1的文件夾,但沒有外部文件。

這是正常的嗎? 我預計導入的文件也會存在,因為它們位於工作目錄的trunk文件夾中。


我在Assembla創建了兩個公共存儲庫,供任何人測試。

第二個存儲庫具有外部定義,該定義從第一個存儲庫中下拉lib文件夾。 當我從第二個存儲庫創建當前主干文件的標記時,它不會將外部文件添加到標記文件夾。 另外,當我簽出標簽文件夾時,它不會將外部文件添加到本地工作副本。

設置externals屬性時,它不會將文件從外部存儲庫復制到工作存儲庫。 相反,它只是創建一個“注釋”,指出將來從哪里獲取這些文件。

因此,當您創建標記時,svn無需復制外部鏈接的實際文件。 相反,它只是復制“注釋”。 如果您執行了您的tags/1.0.1目錄的簽出(或者如果已經在本地簽出了更新),那么您會注意到它會正確地拉下相關的外部,即使這些文件在工作存儲庫中不存在。

編輯:

啊,我終於看到了這個問題。 您可以在根目錄中而不是在trunk目錄中設置外部。

查看svn的最好方法是它只是一個文件系統,trunk,tags和branches的整個想法只是概念性的想法,每個目錄與下一個目錄沒有什么不同。

因此,當您將trunk復制到tags目錄時,外部屬性不會被傳輸,因為它們不是trunk目錄的一部分(它們只表示將外部項目放在trunk中)。 要解決此問題,應從根目錄中刪除外部屬性並將其添加到trunk。 下次創建標記時,應傳輸外部屬性。

以下命令:

svn propget svn:externals file:///Z:/Projects/workB/trunk

應該輸出:

file:///Z:/repos/repoA/trunk/lib lib 

你的期望是正確的。 svn copy必須創建源對象的100%副本,即 - 外部定義(和內容)必須出現在標記中

  1. 檢查svn ls -v -R file:///Z:/repos/repoB/tags/1.0.1
  2. 為了更容易檢查和麻煩我建議轉移到公開的repo-set - 用於測試你可以,fe,在Assembla免費空間創建兩個或更多SVN-repos

與問題說明無關:按照慣例,標記用作代碼凍結點 (稍后可以從任何一點獲得完全相同的代碼),但這意味着,您還必須將所有外部鎖定到創建標記的狀態。 repos / repoA / trunk / lib是HEAD修訂版,隨着時間的推移發生變化,標記1.0.1的相應修訂版(鏈接標記rev-lib rev)將丟失。 閱讀PEG修訂版

編輯

經測試的Assembla repo擴展在trunk中。 測試失敗:

>svn co https://subversion.assembla.com/svn/subversion-troubleshoot-b/trunk .
A    core_mod.txt
Checked out revision 4

只有,我還要檢查/ lib文件夾

EDIT2

對於subversion-troubleshoot-b repo:修復應用於定義,創建正確編寫的標記( 1.0.1 ),外部綁定到PEG修訂

查看主干和標簽結帳之間的差異

z:\>svn co https://subversion.assembla.com/svn/subversion-troubleshoot-b/
...

Fetching external item into 'subversion-troubleshoot-b\trunk\lib':
A    subversion-troubleshoot-b\trunk\lib\lib01.txt
Checked out external at revision 4.

Fetching external item into 'subversion-troubleshoot-b\tags\1.0.1\lib':
A    subversion-troubleshoot-b\tags\1.0.1\lib\lib01.txt
Checked out external at revision 2.

Checked out revision 7.

如果您稍后將更改鏈接倉庫中的lib - trunk將獲取文件夾的最新內容,1.0.1 - 將始終與subversion中的lib的修訂版本2進行故障排除

暫無
暫無

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

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