如何在不破坏svn元数据的情况下替换工作副本中的目录

时间:2011-11-17 16:04:16

标签: svn subversive

如果我有一份svn工作副本并且我想用这些文件的新版本更新工作副本,我只需将新文件复制到旧文件之上就没有问题了。 Svn识别文件之间的差异。 (我使用svn 1.6)

但是,当我复制的文件包含目录结构时,会出现问题。例如,如果工作副本中的原始目录包含顶级目录/第二级,并且我使用顶级目录/第二级复制新目录结构,则会出现&sa; sa问题。将顶级目录复制到现有目录会破坏工作副本中top-level-directory下包含的.svn文件夹。现在svn抱怨。

有没有办法让它工作,以便我可以轻松更新文件,使用Linux' cp'命令,否则将文件拖到Eclipse中的现有位置。否则,我必须编写一些自定义脚本来仅复制每个文件,根据需要创建父目录。这似乎是一种痛苦,所以我希望有一种更简单的方法。 (如果我是唯一需要这种用法的人,我会感到惊讶。)

2 个答案:

答案 0 :(得分:0)

您可以使用cp: - / p>的-u选项

  

-u, - 更新                 仅当SOURCE文件比目标文件更新或缺少目标文件时才复制

因此,在您的情况下,cp -ur /new/repository/* /old/repository/只会覆盖现有文件,而不会删除.svn目录。

如果需要,您还可以使用rsync

rsync的主要优点是只复制更新文件之间的最小差异以避免网络开销,但在本地副本中,您将无法获得太多性能(差异的成本将在复制期间平衡增益)

答案 1 :(得分:0)

使用rsync:

rsync -av --exclude=".*" origin_dir dest_dir_with_svn