從@nosid處得到以前回答的建議,我爲Windows創建了一個批處理腳本,它使用一個臨時文件來寫入svn status和svn diff的結果。也許有更好的方式來做到這一點,而無需使用臨時文件,但這個工作得很好:
@echo off
set dir=%1
set tempDir=%TEMP%
set svnFileStatus=%tempDir%\svn-file-status
set svnFileChanges=%tempDir%\svn-file-changes
set fileType=*.java
for /f %%a IN ('dir /b /s %dir%\%fileType%') do (
svn status %%a > %svnFileStatus%
call :CheckStatus %svnFileStatus% %%a
)
goto :eof
:CheckStatus
if %~z1 == 0 (
rem skip
) else (
svn diff -x --ignore-all-space %2 > %svnFileChanges%
call :CheckDiff %svnFileChanges% %2
)
goto :eof
:CheckDiff
if %~z1 == 0 (
svn changelist ignore-on-commit %2
)
goto :eof
此腳本添加文件到忽略-ON-commit的更改。然後可以恢復這個更改列表。或者,如果您有信心,可以調整腳本以直接恢復文件,但我更傾向於採用兩步操作。
要使用該腳本,只需將其複製到一個批處理文件,並從Windows命令行通過參數傳遞的目錄搜索,像這樣稱呼它:
check-empty-changes.bat <svn-working-copy-directory>
的腳本配置爲搜索對於java文件,但您可以將其更改爲使用其他文件擴展名,設置變量%fileType% properties。
您是生成類(.class)還是代碼(.java)?你沒有說它是java,但是問題是......生成源碼或字節碼。 – thekbb
是java類,源代碼(.java文件)。但問題的目標是更通用,因爲它可以應用於任何事情。我把這個問題改寫得更加清楚。 – xsilmarx