2010-06-01 132 views
3

有没有人曾在乌龟移动文件,并成功提交的经验,后来才犯了不同的变化,被告知树冲突的地方:乌龟SVN树冲突与自己

  1. 在文件的原始位置已被删除,但乌龟被标记为丢失
  2. 该文件在其新位置存在,但标记为已添加。

(我用龟SVN,我们有客户端和服务器> 1.60)

没有其他人,或者更改目录或文件(根据SVN日志)。

  1. 这是怎么发生的?
  2. 有没有办法避免它发生?
  3. 如果确实发生,是否有更好的方法来解决问题,而不是删除整个文件夹并再次更新?

回答

3
  1. 听起来也许你使用Windows资源管理器“移动”命令,而不是龟“移动”命令移动的文件。前者只是在文件系统中移动文件而不更新Subversion树(从版本控制中删除旧文件并将旧文件的历史记录链接到新文件)。

  2. 始终使用TortoiseSVN的“移动”命令,或者如果你想有一个移动没有历史文件,然后复制使用Windows资源管理器中,用龟添加新的版本,然后删除旧版本的龟。

  3. 您可以右键单击旧文件的父文件夹,选择“检查修改”,然后从版本控制中删除标记为缺失的文件。

+1

不对。我用右键单击拖动“用svn移动”。 3.只解决了一半的问题,因为我仍然无法提交,因为该文件正在等待检查回购认为已经签入。我可以解决这个明显的错误的唯一方法是删除文件夹并更新。 – 2010-06-03 12:22:47

+0

@Jesse,当你在移动后成功提交时,你从什么级别提交?工作副本的顶层,子目录还是什么? – 2010-06-03 14:49:46

+0

我从我的源代码树的根提交。 – 2010-06-10 15:17:54

1

听起来像你提交了文件,但没有它被移动到/从它的目录。你也需要提交目录。

+0

不,我从我的源代码树的根目录提交。按照惯例。 – 2010-06-10 15:17:38

+2

感谢您的-1。我很欣赏这种努力。 – zvolkov 2010-06-10 16:43:28

+0

+1 cos可以帮助其他人:-) – Brian 2010-08-20 16:29:51

0

我通过r-点击文件夹,选择'rename',并使用“newpath \ to \ folder”作为参数进入树冲突。经过多次失败的清理命令和一些其他的东西后,我终于恢复了用理智:

  1. 开放新的干净的检出到其他文件夹
  2. SVN删除和犯坏了“的新路径\为\文件夹”从干净的检出
  3. 选择“oldpath \文件夹” R单击拖动和svn移动到新位置
  4. 立即没有其他业务承诺改变中间
  5. 去打破签“oldpath \文件夹”,然后手动复制文件whic h被删除或留在'newpath \ to \ folder'
  6. 添加手动复制的文件,就好像它们是新的一样。

手动更新文件的无缝历史链被打破,但至少我现在可以继续工作。