sed && svn問題

sed && svn問題

我有一個 svn 工作副本,我在其中執行了以下命令

尋找 ./source * -type f -exec sed "s/@version 0.5.3/@version 0.5.4/" -i {} \;

文件全部更新,但 svn 在執行其中之一時無法識別任何更改

svn狀態./來源

svn 差異 ./源

svn提交./來源

我還嘗試編寫一個腳本來檢查 $?從 sed 可以「觸摸」檔案來更新它的 mdate 但 sed 似乎總是返回 0 -.-

我現在能做什麼? -.-

答案1

問題在於您的使用find

find dir1 -type f

將匹配目錄結構中的所有文件,包括.svn目錄內的文件。中的檔案.svn是用來執行svn diff攻擊的檔案。因此,本質上,您修改了樹中文件的所有副本,而不僅僅是工作副本。

試試這個語法:

find ./source * -type f ! -path '*/.svn/*' -exec sed "s/@version 0.5.3/@version 0.5.4/" -I {} \;

答案2

就我而言,事實證明我正在更新真實文件的符號連結。我使用 sed 就地更新。有趣的是,這會將符號連結轉換為常規檔案。然後 svn 就不高興了,因為「物件」類型當然改變了。

以下是將符號連結更改為常規文件的方法:

user@host>ls -l txt*
-rw-rw-r-- 1 user user 90 Feb 28  2020 txtfile
lrwxrwxrwx 1 user user 7 Aug  5 11:07 txtln -> txtfile
user@host>sed -i "s/hello/mello/" txtln
user@host>ls -l txt*
-rw-rw-r-- 1 user user 90 Feb 28  2020 txtfile
-rw-rw-r-- 1 user user 90 Aug  5 11:08 txtln
user@host>

相關內容