2011-05-19 77 views
3

我使用簽出裏面DIR一些文件:SVN狀態犯規讓我修改過的文件的列表

svn co <dir> 

之後,我用下面的命令來替換一些文本中的所有Java文件這個目錄裏面:

find . -type f -print0 | xargs -0 sed -i "s/old/new/g" 
現在

,我會觸發此命令:

svn status 

它不顯示被修改的文件列表。 我可以在所有java文件中看到替換,但在svn status命令中看不到這些文件的列表。

請幫忙。即使svn提交不起作用。

+0

你爲什麼不這樣做通過你的IDE的東西? – khmarbaise 2011-05-19 13:24:59

回答

6

猜測,你的命令也會經歷隱藏在.svn目錄中的文件。可能會腐蝕很多東西。特別是如果您的存儲庫名稱中包含「舊」文本。 SVN不會喜歡這個!

它肯定會做的是改變.svn/text-base內的「基本」文件。因此,就SVN而言,沒有任何變化(它將當前目錄與.svn中的文件副本進行比較,以查看發生了什麼變化)。

或者,可能完全是別的。

+0

我想這正是可能發生的事情。使用sed替換確實導致替換.svn目錄中基本文件中的表達式。 感謝您的洞察力。 – user761097 2011-05-19 17:01:45

2

給定的find命令肯定是錯誤的,因爲你沒有防止發現進入.svn文件夾這是錯誤的。

This results in creating a new checkout from scratch. 

以下是正在添加接近你所需要的:

find . -type f -not -path "*\.svn*" -and -not -path "*/target*" -and -not -path "*/\.settings*" -name "*.java" 

我會建議做這種通過IDE的東西(的Eclipse等)