Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使SVN工作目录包含与干净签出完全相同的内容_Svn - Fatal编程技术网

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

使SVN工作目录包含与干净签出完全相同的内容,svn,Svn,对于构建、打包文件等,需要有一个来自SVN的完全干净的版本。不可能有任何浮动的非版本文件,例如,如果抓取所有png文件,test.png可能会打包 但是,得到一个全新的结帐是耗时和带宽消耗。那么,有没有一种方法可以获取一个工作目录,并使其与干净签出、删除无版本文件以及执行svn更新完全相同?您可以编写一个脚本,删除不在.svn目录中的所有文件以及没有.svn子目录的所有目录。然后运行'up',它所要做的就是从.svn目录的副本中重新复制文件 但是,所有这些.svn目录仍然有可能为您提供gas,因

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


但是,得到一个全新的结帐是耗时和带宽消耗。那么,有没有一种方法可以获取一个工作目录,并使其与干净签出、删除无版本文件以及执行svn更新完全相同?

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


但是,所有这些.svn目录仍然有可能为您提供gas,因此请阅读Pascal的答案,即使这需要很长时间。

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

但是,所有这些.svn目录仍然有可能为您提供gas,因此请阅读Pascal的答案,即使这需要很长时间。

如果您想:

  • 获取SVN上的内容
  • 没有别的了
  • 理想情况下,没有
    .svn
    目录
然后,最好的解决方案是使用
svn export


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

另外,作为旁注:它允许您从开发机器创建归档文件,而无需恢复当前的工作


否则,您必须:

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

  • 获取SVN上的内容
  • 没有别的了
  • 理想情况下,没有
    .svn
    目录
然后,最好的解决方案是使用
svn export


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

另外,作为旁注:它允许您从开发机器创建归档文件,而无需恢复当前的工作


否则,您必须:

  • 执行
    svn还原
    ,以取消对工作副本所做的修改,但未提交
  • 然后,确保从存档中排除所有
    .svn
    目录
是一个命令,列出subversion目录中的所有未版本文件:

svn status --no-ignore | grep '^\?' | sed 's/^\?      //'
执行更新并删除文件的操作如下所示:

svn update && svn status --no-ignore | grep '^\?' | sed 's/^\?      //'  | xargs rm -rf
如果您想要完全相同的版本,可能需要执行还原而不是更新。最好的方法可能还是使用svn导出。

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

svn status --no-ignore | grep '^\?' | sed 's/^\?      //'
执行更新并删除文件的操作如下所示:

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


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

请注意,svn revert不会删除未版本化的文件,它只会从svn元数据中删除“add”指令。.svn目录不是问题,它们是隐藏的IIRC,易于过滤。但无论如何,我似乎别无选择,只能以这种或那种方式下载干净的副本?请注意,svn revert不会删除未版本化的文件,它只会从svn元数据中删除“add”指令。svn目录不是问题,它们是隐藏的IIRC,很容易过滤掉。但无论如何,我似乎别无选择,只能以这种或那种方式下载一份干净的副本?我是不是说我在运行*nix?但我相信有人会发现它很有用,所以无论如何,谢谢。不,你没有说任何关于你的操作系统的事情。顺便说一句,如果一个SVN签出占用了大量带宽,那么您应该检查所有文件是否都属于版本控制(比如Java JAR,当您使用Maven之类的构建工具时不需要签入)@John如果您有cygwin,那么这些SVN命令在Windows上可以正常工作。讽刺是不必要的。我是不是说我在竞选*尼克斯?但我相信有人会发现它很有用,所以无论如何,谢谢。不,你没有说任何关于你的操作系统的事情。顺便说一句,如果一个SVN签出占用了大量带宽,那么您应该检查所有文件是否都属于版本控制(比如Java JAR,当您使用Maven之类的构建工具时不需要签入)@John如果您有cygwin,那么这些SVN命令在Windows上可以正常工作。不需要讽刺。这个脚本如何工作?我在这台电脑上没有任何svn元数据,他们只是列出其中的文件吗?你怎么可能没有svn元数据,除非你首先运行svn导出。svn公司总是在.svn目录中使用元数据制作额外的副本。@John您最初的问题是您经营一家svn公司。我支持我的意见。无论何时运行svn公司,都会得到元数据。如果你“没有svn元数据”,你没有运行co,因此你的整个问题都是误导性的,无法回答。再次让我引用我的评论“我在这台电脑上没有任何svn元数据”。@John,我唯一能想到的是我们用两种不同的方式使用元数据这个术语。我指的是由co无条件交付的.svn目录。也许您指的是svn服务器上的所有其他内容?此脚本如何工作?我在这台电脑上没有任何svn元数据,他们只是列出其中的文件吗?你怎么可能没有svn元数据,除非你首先运行svn导出。svn公司总是用m制作额外的副本