Tortoise SVN树与我自己发生冲突

时间:2010-06-01 15:33:37

标签: svn tortoisesvn tree-conflict

有没有人有过在乌龟中移动文件并成功提交的经验,只是为了稍后提交不同的更改并被告知树冲突:

  1. 原始位置的文件已被删除,但是龟被标记为缺失
  2. 新位置的文件在那里,但标记为已添加。
  3. (我使用陆龟SVN,我们有客户端和服务器> 1.60)

    没有人改变目录或文件(根据svn日志)。

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

3 个答案:

答案 0 :(得分:3)

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

  2. 始终使用TortoiseSVN“移动”命令,或者如果您想要移动没有历史记录的文件,请使用Windows资源管理器复制文件,使用Tortoise添加新版本,然后使用Tortoise删除旧版本

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

答案 1 :(得分:1)

听起来像你提交了文件,但没有提交到/来自的目录。您也需要提交目录。

答案 2 :(得分:0)

通过单击文件夹,选择“重命名”,并使用“newpath \ to \ folder”作为参数,我遇到了树冲突。经过多轮失败的清理命令和其他一些事情后,我终于恢复了理智:

  1. 将新的清洁结帐打开到另一个文件夹
  2. svn从清理结帐中删除并将损坏的'newpath \提交到\'文件夹
  3. 选择'oldpath \ folder'r-click drag并svn move to new location
  4. 立即提交更改而中间没有其他操作
  5. 打破'checkpath'oldpath \ folder'并手动复制已删除或留下的文件到'newpath \ to \ folder'
  6. 添加手动复制的文件,就像它们是新的一样。
  7. 手动更新文件的无缝历史链已中断,但至少我现在可以继续工作了。