TortoiseSVN文件夹重命名总是失败

时间:2010-11-03 16:21:22

标签: svn tortoisesvn

每当我使用ToroiseSVN重命名文件夹,然后对父文件夹进行提交时,它就会变得很丑陋。我通常会遇到一些奇怪的树冲突,以及关于SVN .tmp文件/文件夹不存在的错误,以及我以前从未见过的其他模糊信息。考虑到文件夹被删除并且据说被重新创建,如果它以某种可怕的方式被删除或损坏,该怎么办呢?

直接在repo上重命名,而不是在工作副本上更好吗? 这些问题是否正常?

4 个答案:

答案 0 :(得分:2)

  

这些问题是否正常?

没有。只要你通过 TortoiseSVN菜单来移动/重命名事物,一切都应该可以正常工作。

你不应该做的坏事的例子:

  • 使用资源管理器移动/复制/重命名/删除工作副本中的版本化文件夹
  • 更改.svn文件夹的内容
  • 删除.svn文件夹(改为使用导出功能)

我参与了从VSS迁移到SVN + TortoiseSVN的用户的培训。经验表明,即使经过多年使用TortoiseSVN,用户仍然会通过上述其中一种方式定期破坏工作副本。一旦损坏,修复工作副本通常是不可行的。

幸运的是,SVN 1.7(尚未发布)将通过将元数据集中在工作副本的根目录中的一个大.svn文件夹中来消除这种垃圾,例如git和mercurial。

  

和SVN .tmp文件/文件夹不存在的错误

您可能正在使用xcopy来操作工作副本。 当您使用xcopy复制文件夹时,它将省略空文件夹(除非您使用/E开关)。

这将导致工作副本中的.svn/tmp文件夹被省略,从而有效地损坏您的工作副本。

答案 1 :(得分:1)

一般来说,我认为在使用SVN时重命名并不是一个好主意,因为它很容易弄乱它。如果你有一组开发人员使用相同的代码库并且你使用分支,那么它会变得特别难看。

如果您不太关心更改历史记录,我建议手动制作文件夹的副本(即通过资源管理器而不是SVN),重命名(再次通过资源管理器),删除其中的所有.svn文件夹(所以你有一个干净的无版本文件夹),然后SVN将它(和里面的文件)添加到repo。然后只需SVN删除旧文件夹。当然,如果其他人正在编辑相同的源文件或正在使用分支,这并不能解决问题,但至少它会强迫您考虑重命名的含义。

答案 2 :(得分:0)

如果您的存储库设置良好,则不应该出现这些问题。但是,如你所说,拥有大量临时文件和文件夹会导致这类问题。

直接在存储库中重命名可能会解决您的大多数问题,但如果在重命名之前修改了临时文件,仍可能导致一些困难的合并冲突。

如果可以的话,尝试将任何临时文件和文件夹放入可添加到svn:ignore的父文件夹中,您将解决许多这些问题。

答案 3 :(得分:0)

如果您有多个活动分支,请不要重命名文件夹/文件。 SVN没有保留必要的元数据来处理它 - 因此您将遇到合并冲突。 GIT也不是。 Bazaar强调重命名是切换到他们系统的一个原因。

相关问题