2010-11-03 88 views
5

每當我使用ToroiseSVN重命名文件夾,然後對父文件夾執行提交時,它變得很難看。我通常會遇到一些奇怪的樹衝突,以及有關SVN .tmp文件/文件夾不存在的錯誤以及其他我從未見過的晦澀難懂的消息。考慮到該文件夾​​正在被刪除並假設被重新創建,它會非常緊張,如果它被刪除或者以某種可怕的方式被破壞會怎樣?TortoiseSVN文件夾重命名總是失敗

直接在repo上進行重命名,而不是在工作副本上執行重命名更好嗎? 這些問題是否正常?

+1

我完全同意。在過去的幾天裏,我一直在處理這些廢話。 – Jeff 2011-08-04 13:26:52

回答

0

如果您的存儲庫設置良好,則不應該有這些類型的問題。但是,如您所說的那樣,有大量臨時文件和文件夾可能會導致此類問題。

直接在存儲庫中重命名可能會解決大部分問題,但如果臨時文件在重命名之前已被修改,仍可能導致一些難以合併的衝突。

如果可以,請嘗試將任何臨時文件和文件夾放入可添加到svn:ignore的父文件夾中,並且您將擺脫很多這些問題。

+0

這是SVN隱藏的文件,它抱怨我想,而不是我自己的臨時文件。 – 2010-11-03 16:35:30

+0

你可以發佈你所得到的錯誤和你的文件夾結構嗎? – 2010-11-03 16:36:10

+0

描述的錯誤表明客戶端的工作副本損壞。儲存庫如何建立是無關緊要的。 – 2010-11-03 17:10:09

2

這些問題是否正常?

不會。只要你去通過TortoiseSVN菜單移動/重命名的事,一切都應該正常工作。壞事

例子,你應該永遠不會做:

  • 移動/複製/重命名/刪除文件夾版本在你的工作副本探險
  • 改變.svn目錄的內容
  • 刪除。 svn文件夾(使用導出功能代替)

我參與了從VSS遷移到SVN + TortoiseSVN的用戶的培訓。經驗表明,即使使用TortoiseSVN多年後,用戶仍然會通過執行上述任何一種操作,經常損壞工作副本。一旦損壞,修復工作拷貝通常是不可行的。

幸運的是,SVN 1.7(尚未發佈)通過將元數據集中在工作副本根目錄下的一個大的.svn文件夾中,如git和mercurial,可以消除大量垃圾。

約SVN .tmp文件錯誤/文件夾不存在

你可能會使用XCOPY操作工作拷貝。 當您使用xcopy複製文件夾時,它將省略空文件夾(除非您使用/E開關)。

這將導致工作副本中的.svn/tmp文件夾被忽略,從而有效地破壞您的工作副本。

+0

不,我通過右鍵單擊子目錄並使用TortoiseSVN shell擴展「重命名」選項。所有的作品,直到我嘗試提交父目錄,根據龜指令 – 2010-11-03 16:53:56

+0

@John:你的工作副本可能已經在重命名之前被損壞。 – 2010-11-03 17:06:02

+0

當_IS_ SVN 1.7出來時? – 2010-11-03 17:09:53

1

一般來說,我認爲在使用SVN時重命名並不是一個好主意,僅僅因爲它很容易搞砸它。如果您有一組開發人員使用相同的代碼庫並且您使用了分支,它可能會變得特別難看。

如果您不太關心更改歷史記錄,我建議您手動製作文件夾副本(即通過資源管理器不是SVN),重命名它(再次通過資源管理器),刪除其中的所有.svn文件夾(讓您有一個乾淨的未版本控制的文件夾),然後SVN將它(和裏面的文件)添加到回購站。然後只是SVN-刪除舊的文件夾。當然,如果別人編輯了相同的源文件或正在使用分支,這並不能解決問題,但至少它會迫使您考慮重命名的含義。

+1

*如果你不太關心更改歷史* :) – Groo 2014-02-13 09:11:01

0

如果您有多個活動分支,請不要重命名文件夾/文件。 SVN不保留必要的元數據來處理它 - 所以你會得到合併衝突。 GIT也沒有。 Bazaar強調重命名是切換到系統的理由之一。

+0

問題就像7歲。 2017年重命名文件夾大多按預期工作。唯一的警告是你提到的一個(移植分支之間的移動不會將重命名文件夾識別爲同一個對象),儘管有解決方法。我特別使用TortoiseSVN中的「修復移動」功能,然後在提交重命名的情況下提交合並。 – 2017-03-08 16:21:23

+0

我使用SVN 1.8.5。如果一個分支中的文件在另一個分支中被重命名,修復移動仍然會導致合併衝突。 SVN和GIT的處女儲存庫的簡單實驗將會顯示這一點。再一次,這是Bazaar明確提到的。 – AbleArcher 2017-03-08 18:18:22