伪装SVN结帐的深度

出于某种原因,我的本地SVN仓库副本停止将父目录识别为工作副本。 我通常会通过再次检出到另一个文件夹并用我更改的文件覆盖新的工作副本来解决此问题。 然后我会从新文件夹执行提交。

我想避免在这种情况下这样做,因为回购包含数以千计的大图像,并且检出需要很长时间。 所以我想要做的是非完全递归地检出一个新目录,将我现有的文件复制到新目录中,然后检查整个内容。

问题在于SVN知道我只检出了几个文件。 有没有一种方法可以伪造它,并让SVN认为我只是做了一个完整的结帐? (例如,我可以只保留.svn文件夹以进行完整的结帐,而无需实际检查所有内容)


在新位置对资源库进行稀疏检出应该做你想做的事(http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html)。 如果我正确理解了你的话,你会想做一个空的最高层目录结账,然后在你想要的工件上做一个'svn',设置深度。

例如,假设我有一个名为'foo'的顶级文件夹,它包含两个文件夹'bar'和'zoog'。

/foo
  /bar
    -the files I want
  /zoog
    -the universe

文件夹'zoog'有很多我目前不关心的文件,但我想能够使用'bar'。 我会做以下事情:

svn co --depth empty file:///var/svn/repos/FooRepo foo
cd foo
svn up --set-depth infinity bar

现在'svn up'显示所有内容都是最新的,我可以在'foo'和'bar'中进行更改并提交它们,就好像我也在没有任何开销的情况下检出'zoog'一样。

(svn update中的--set-depth的参数是exclude,empty,files,immediates和infinity)


您很可能会损坏或删除每个结帐中隐藏的.svn文件夹。

使用命令行在其他地方执行svn co svn://your/svn/repository --depth immediates并从此处恢复.svn文件夹。 然后你将需要经历很多svn update .svn cleanup序列重新关联子文件夹与父文件夹。


首先备份完整的工作副本。 然后更新到上次修订您的工作副本。 您的上一次修订包含根文件夹。 SVN会尝试再次写入该文件夹。 然后会显示树状冲突。 然后运行清理并重新提交。

链接地址: http://www.djcxy.com/p/55241.html

上一篇: Faking the depth of an SVN checkout

下一篇: Why does Windows LookAndFeel make fonts too small?