如果我有一份svn工作副本并且我想用这些文件的新版本更新工作副本,我只需将新文件复制到旧文件之上就没有问题了。 Svn识别文件之间的差异。 (我使用svn 1.6)
但是,当我复制的文件包含目录结构时,会出现问题。例如,如果工作副本中的原始目录包含顶级目录/第二级,并且我使用顶级目录/第二级复制新目录结构,则会出现&sa; sa问题。将顶级目录复制到现有目录会破坏工作副本中top-level-directory下包含的.svn文件夹。现在svn抱怨。
有没有办法让它工作,以便我可以轻松更新文件,使用Linux' cp'命令,否则将文件拖到Eclipse中的现有位置。否则,我必须编写一些自定义脚本来仅复制每个文件,根据需要创建父目录。这似乎是一种痛苦,所以我希望有一种更简单的方法。 (如果我是唯一需要这种用法的人,我会感到惊讶。)
答案 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