簡體   English   中英

烏龜 svn 批量重命名文件合並

[英]tortoise svn mass rename files merge

我有一個文件夾,其中一位同事必須重命名其中的所有文件。 該文件夾有大約 12000 個文件,這些文件使用重命名工具進行了重命名。 現在我遇到了 Tortoise SVN 無法識別文件的問題,因為現在名稱不同了。 這引出了我的問題:我可以告訴 subversion 文件已重命名,以便它在文件夾中查找並查找匹配的文件嗎? 內容沒有變化,只是名字變了。

我知道如果您同時選擇丟失的條目和新文件並選擇“修復移動”,有一種方法可以告訴烏龜文件已重命名。 但這僅適用於兩個文件。 我有 12000 個文件,沒有人會手動重命名它們。 文件名僅部分更改。 例如:data.00001.house.txt -> data.house.txt

任何幫助,將不勝感激。 問候,弗洛里安

我認為您必須重新訪問您同事的重命名工具。 希望它是一個 .bat 文件或可以修改的東西。
更改它以使其正確使用 SVN MOVE 命令。

i.e. instead of:
mv <oldname> <newname>
use:
SVN MOVE <oldname> <newname>

你會注意到這並不是一個真正的 Tortoise 解決方案,而是一個通用的 Subversion 解決方案,使用 Subversion 命令行“SVN MOVE”命令。 見: http ://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.move.html

進行小規模測試以確保其有效。 然后刪除他所有的壞文件,恢復他的更改,重新運行新的實用程序,簽入,你就完成了。

文件是如何重命名的? 這是邪惡方式的一種命令行描述:

copy %FILE% %DIR%
svn delete %FILE%
svn add %DIR%\%FILE%
svn commit -m"Moved %FILE% to %DIR."

在這種方法中,文件被復制到一個新的位置,舊文件被刪除,新文件被添加。 這樣做的問題是,對於 Subversion,舊刪除的文件與新刪除的文件沒有關系。 它與此類似:

svn delete --keep-local foo
svn add foo
svn commit -m"Deleted and added foo"

我刪除了一個名為foo的文件(並保留了本地副本),然后將其重新添加。對於 Subversion,即使兩個foo文件在同一個目錄中,甚至具有相同的內容,它們也是兩個不同的文件t 有共同的歷史。

您要確保重命名工具正在執行的操作是:

svn move %FILE% %DIR%
svn commit -m"Moved %FILE% to %DIR"

你的重命名工具是如何工作的? 這是 64,000 美元的問題。 最好的辦法是記錄其中一個重命名的文件(使用詳細模式,並確保未設置復制時停止)並查看歷史記錄是否追溯到舊位置和名稱。

如果沒有,您可能需要重新命名。 這意味着撤消最初的重命名,提交更改,然后以正確的方式重命名。

使用命令行工具,不要依賴第三方工具。

假設重命名發生在修訂版 12345 中:

C> svn merge -c -12345 .

這將撤消更改 12345

現在,您必須重命名每個文件。 我不是批處理專家,但對於每個文件,使用svn move進行重命名。

這篇文章現在已經很老了,但可能仍然有人像我一樣在這里尋找答案;)

因此,如果您使用 TortoiseSvn,可以通過在設置菜單中將此選項更改為“假”(如圖所示)來解決。

截屏

然后,再次重命名您的文件,客戶端不會將它們改回來(希望如此!)

暫無
暫無

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

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