使SVN工作目录包含与干净结帐完全相同的内容

时间:2010-03-11 12:00:58

标签: svn

对于构建,打包文件等,需要有一个完全干净的SVN版本。不能有任何漂浮的非版本文件,例如,如果抓取所有PNG文件,test.png可能会被打包。

但是,获得全新的结账时间和带宽消耗。那么有没有办法获取一个工作目录并使其完全与干净的结账相同,删除非版本文件以及进行svn更新?

3 个答案:

答案 0 :(得分:2)

如果你想:

  • 获取SVN上的内容
  • ,别无其他
  • ,理想情况下,没有.svn目录

然后,最好的解决方案是使用svn export


是的,它会从SVN导出所有文件,这意味着它需要一些时间,它会消耗一些带宽;但这可能是避免任何麻烦的最佳解决方案。

并且,作为旁注:它允许您从开发机器创建存档,而无需恢复当前的工作。


否则,你必须:

  • 执行svn revert,取消您对工作副本所做的修改但未提交。
  • 然后,确保从您的存档中排除所有.svn目录。

答案 1 :(得分:2)

Here是一个列出subversion目录中所有未版本控制文件的命令:

svn status --no-ignore | grep '^\?' | sed 's/^\?      //'

执行更新并删除文件如下所示:

svn update && svn status --no-ignore | grep '^\?' | sed 's/^\?      //'  | xargs rm -rf

如果您想要完全相同的版本,则可能需要执行还原而不是更新。最好的方法可能是使用svn export。

答案 2 :(得分:0)

您可以编写一个脚本来删除不在.svn目录中的所有文件,以及每个没有.svn子目录的目录。然后运行'up',它所做的就是从.svn目录中的副本中重新复制文件。

然而,所有这些.svn目录仍然有可能给你气体,所以请阅读Pascal的答案,即使它需要很长时间。