2

我有一个相当大的项目(13 GB)和糟糕的互联网连接。我将我的工作目录的副本放在闪存驱动器上——但没有 .svn 目录,它会使大小翻倍。

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

  • 这个想法https://stackoverflow.com/a/861020/826062是将闪存驱动器文件导入新的本地存储库,签出该存储库,然后将 sw --relocate 签出到在线存储库。请注意,这需要设置本地 repo 的 UUID,否则 SVN 会拒绝。

由于各种原因,这个聪明的想法行不通(E155017:校验和不匹配或“找到了阻碍工作的副本”)。

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

有了许多这些想法/实验,SVN 尝试再次通过我的连接下载整个东西(可能是因为它无法校验和来比较本地和远程?)

抱歉,解释太长了,但我认为这对整个画面来说是必要的。

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

4

2 回答 2

5

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

相比之下,工作文件可以很容易地从.svn. 因此,另一种方法是仅复制目录.svn然后运行svn revert -R .以恢复工作文件,而无需进一步的网络流量。

于 2013-02-01T09:27:01.513 回答
2

不幸的是,没有.svn目录的工作副本根本不是工作副本。您可能可以避免复制文本库(或从 Subversion 1.7 开始称为原始文本),但您不能完全忽略.svn目录。

一些可能的补救措施:

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

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

于 2013-01-28T00:30:39.920 回答