2010-11-03 92 views
5

每当我使用ToroiseSVN重命名文件夹,然后对父文件夹执行提交时,它变得很难看。我通常会遇到一些奇怪的树冲突,以及有关SVN .tmp文件/文件夹不存在的错误以及其他我从未见过的晦涩难懂的消息。考虑到该文件夹​​正在被删除并假设被重新创建,它会非常紧张,如果它被删除或者以某种可怕的方式被破坏会怎样?TortoiseSVN文件夹重命名总是失败

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

+1

我完全同意。在过去的几天里,我一直在处理这些废话。 – Jeff 2011-08-04 13:26:52

回答

0

如果您的存储库设置良好,则不应该有这些类型的问题。但是,如您所说的那样,有大量临时文件和文件夹可能会导致此类问题。

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

如果可以,请尝试将任何临时文件和文件夹放入可添加到svn:ignore的父文件夹中,并且您将摆脱很多这些问题。

+0

这是SVN隐藏的文件,它抱怨我想,而不是我自己的临时文件。 – 2010-11-03 16:35:30

+0

你可以发布你所得到的错误和你的文件夹结构吗? – 2010-11-03 16:36:10

+0

描述的错误表明客户端的工作副本损坏。储存库如何建立是无关紧要的。 – 2010-11-03 17:10:09

2

这些问题是否正常?

不会。只要你去通过TortoiseSVN菜单移动/重命名的事,一切都应该正常工作。坏事

例子,你应该永远不会做:

  • 移动/复制/重命名/删除文件夹版本在你的工作副本探险
  • 改变.svn目录的内容
  • 删除。 svn文件夹(使用导出功能代替)

我参与了从VSS迁移到SVN + TortoiseSVN的用户的培训。经验表明,即使使用TortoiseSVN多年后,用户仍然会通过执行上述任何一种操作,经常损坏工作副本。一旦损坏,修复工作拷贝通常是不可行的。

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

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

你可能会使用XCOPY操作工作拷贝。 当您使用xcopy复制文件夹时,它将省略空文件夹(除非您使用/E开关)。

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

+0

不,我通过右键单击子目录并使用TortoiseSVN shell扩展“重命名”选项。所有的作品,直到我尝试提交父目录,根据龟指令 – 2010-11-03 16:53:56

+0

@John:你的工作副本可能已经在重命名之前被损坏。 – 2010-11-03 17:06:02

+0

当_IS_ SVN 1.7出来时? – 2010-11-03 17:09:53

1

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

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

+1

*如果你不太关心更改历史* :) – Groo 2014-02-13 09:11:01

0

如果您有多个活动分支,请不要重命名文件夹/文件。 SVN不保留必要的元数据来处理它 - 所以你会得到合并冲突。 GIT也没有。 Bazaar强调重命名是切换到系统的理由之一。

+0

问题就像7岁。 2017年重命名文件夹大多按预期工作。唯一的警告是你提到的一个(移植分支之间的移动不会将重命名文件夹识别为同一个对象),尽管有解决方法。我特别使用TortoiseSVN中的“修复移动”功能,然后在提交重命名的情况下提交合并。 – 2017-03-08 16:21:23

+0

我使用SVN 1.8.5。如果一个分支中的文件在另一个分支中被重命名,修复移动仍然会导致合并冲突。 SVN和GIT的处女储存库的简单实验将会显示这一点。再一次,这是Bazaar明确提到的。 – AbleArcher 2017-03-08 18:18:22