【问题标题】:Turning a flash drive copy of an SVN working directory into a proper working directory?将 SVN 工作目录的闪存驱动器副本转换为正确的工作目录?
【发布时间】:2013-01-11 07:19:07
【问题描述】:

我有一个相当大的项目 (13 GB) 并且互联网连接很差。我在闪存上带了一份工作目录的副本 驱动器 - 但没有 .svn 目录,这会使 大小。

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

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

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

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

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

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

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

【问题讨论】:

  • 重建丢失的 .svn 目录将非常困难。反过来会容易得多:如果您复制 .svn 目录,那么您应该能够通过执行“svn revert -R”来恢复所有内容而无需网络流量。
  • 这是一个非常有趣的转折。这周我会试试的。你想把它当作答案吗?

标签: svn


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    一些可能的补救措施:

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

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

    【讨论】:

    • 去皮(和压缩)工作副本是一个非常好的主意 - 它应该为您解决“双倍大小问题”,因为 .svn 目录的 99% 与包含在“工作”文件。
    • 我不知道有任何压缩算法可以通过在层次结构中的其他位置查找相同的文件副本来节省空间。
    • 至少当 gzip 压缩一个 tar 档案时,目录层次是无关紧要的,因为 gzip 对此一无所知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2010-10-26
    相关资源
    最近更新 更多