簡體   English   中英

Svn 恢復所有屬性更改

[英]Svn revert all properties changes

我有一個 svn 工作副本,我試圖將最近的幾個修訂版反向合並到其中。 由於我改變了主意,我在它完成之前取消了合並。 現在我的工作副本有幾千個“更改”,從更新到大多數文件的祖先相關屬性。 我有大約 10 個混合了真實代碼更改的文件,我不想手動將它們分開。

有沒有辦法在不影響內容更改的情況下恢復所有屬性更改?

svn revert `svn status | grep '^ M' | sed 's/^ M \+//g'`

如果您使用恢復選項--depth empty ,您將只恢復對命令行上明確指定的路徑的更改,而不是遞歸的。 因此,如果這些更改是屬性更改,那將是您還原的唯一內容。

示例:如果您的目錄foo具有不需要的屬性更改,但其內容有修改,則以下將還原屬性更改,但保留其內容的修改:

$ svn revert --depth empty foo

如此處所示:

$ svn status foo
 M      foo
M       foo/bar
$ svn revert --depth empty foo
$ svn status foo
M       foo/bar

事實證明,Tortoise SVN 可以很好地做到這一點。 在提交對話框中,您可以按“文本狀態”或“屬性狀態”對“已修改”文件進行排序。 我只是按文本狀態排序,然后恢復所有具有“正常”“文本狀態”的“修改”文件。

您可以提交更改,然后從該修訂版恢復屬性更改:

svn merge -c -REV -depth 為空

其中 REV 是您要還原屬性更改的修訂版

使用 PowerShell 還原所有屬性更改。

> @(svn status) -match '^ M' | `
>>> % { ($_ -split 'M\s+')[1] } | `
>>> % { svn revert --depth empty $_ }

歸功於 Jerome JaglaleTheJuice的一般方法。

請注意,反引號`符號表示換行。

我只會復制/備份 10 個文件,並在其他地方更改真實代碼,然后svn revert -R整個項目,然后復制回 10 個文件。

暫無
暫無

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

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