[英]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 Jaglale和TheJuice的一般方法。
請注意,反引號`
符號表示換行。
我只會復制/備份 10 個文件,並在其他地方更改真實代碼,然后svn revert -R
整個項目,然后復制回 10 個文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.