将SVN工作目录的闪存驱动器副本转换为正确的工作目录?

时间:2013-01-28 00:10:18

标签: svn

我有一个相当大的项目(13 GB)和糟糕的互联网连接。我把我的工作目录的副本带回家    驱动器 - 但没有.svn目录,它会加倍    大小

我希望复制闪存驱动器的内容,然后将其转换为正确的工作目录。基本上是一个结帐,但是我的闪存驱动器提供了13 GB的文件。

  • 这个想法https://stackoverflow.com/a/861020/826062是将闪存驱动器文件导入到一个新的本地仓库中,检查该仓库,然后将该签出交换到在线仓库。请注意,这需要设置本地存储库的UUID,否则设置SVN无效。

这个聪明的想法因各种原因不起作用(E155017:校验和不匹配或“发现阻碍工作副本”)。

  • 我的下一个想法是创建一个结帐的空树(通过我的连接便宜),然后将我的文件rsync到它。 SVN对这样做并不十分感兴趣(将深度恢复到无穷大的各种问题)。

对于这些想法/实验中的许多,SVN会尝试再次通过我的连接下载整个内容(可能是因为它无法通过校验和将本地与远程进行比较?)

对于长篇解释感到抱歉,但我认为这对整个情况来说是必要的。

是否还有其他人尝试将复制的本地文件与现有的SVN存储库同步?

2 个答案:

答案 0 :(得分:4)

.svn目录包含每个版本化源文件的“干净”副本,这使得它如此之大。它也包含元数据,这将很难重建。

相比之下,可以从.svn中的干净副本轻松重建工作文件。因此,另一种方法是仅复制 .svn目录,然后运行svn revert -R .以恢复工作文件而不再有网络流量。

答案 1 :(得分:2)

遗憾的是,没有.svn目录的工作副本根本不是工作副本。您可以避免复制文本库(或者在Subversion 1.7中调用它们时的pristines),但是您不能完全忽略.svn目录。

一些可能的补救措施:

您可能希望尝试使用某些DVCS作为断开工作副本的机制,因为它们在复制方面更具弹性。想到git-svn

您也可以将工作副本放到闪存驱动器上的文件中,然后将其解压缩到家中的磁盘上。