从@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