清理svn checkout(删除非svn文件)

ide*_*n42 11 svn svn-checkout

我想删除工作副本中svn存储库中未知的所有文件.

实际上好像我只是做了一个干净的结账,但我不想重新下载所有文件.

最接近我认为是......

rm -rf `svn st | grep "^?" | cut -d" " -f8`
Run Code Online (Sandbox Code Playgroud)

但这看起来很笨重,我并不完全信任它,因为输出的不一致可以消除svn之外的dirs.

"svn export"不是我想要的,因为我没有清理源代码来打包它,我只想删除cruft(*.pyc,*.orig,*.rej,svn-commit.tmp,*.SWP).

除了打扫干净外,还有更好的方法吗?

小智 20

此处发布的大多数解决方案都无法处理带有空格的文件夹.这就是我们使用这个的原因:

svn status --no-ignore | grep '^[?I]' |  sed "s/^[?I] //" | xargs -I{} rm -rf "{}"
Run Code Online (Sandbox Code Playgroud)


Ber*_*t F 5

http://www.cuberick.com/2008/11/clean-up-your-subversion-working-copy.html

当我希望我的工作副本与回购相同时,我就会这样做:

 svn st | awk '{print $2}' | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)

这将删除与存储库不同步的所有文件.然后只需更新即可恢复您删除的内容并获取最新信息.

svn up
Run Code Online (Sandbox Code Playgroud)

...确保您没有编辑或添加!更安全的命令可能是:

svn st | grep '?' | awk '{print $2}' |xargs rm -f
Run Code Online (Sandbox Code Playgroud)

......被忽略的文件怎么样?例如

svn st --no-ignore
svn st --no-ignore | awk '{print $2}' | xargs rm -rf
svn st --no-ignore | grep '?' | awk '{print $2}' |xargs rm -f
Run Code Online (Sandbox Code Playgroud)