有没有人有过在乌龟中移动文件并成功提交的经验,只是为了稍后提交不同的更改并被告知树冲突:
已删除原始位置的文件,但在龟中标记为丢失
新位置的文件在那里,但标记为已添加 .
(我使用陆龟SVN,我们有客户端和服务器> 1.60)
没有其他人改变目录或文件(根据svn日志) .
为什么会这样?
有没有办法避免它发生?
如果它确实发生了,是否有一种更优雅的方法来修复问题,而不是删除整个文件夹并再次更新?
听起来好像您使用Windows资源管理器“移动”命令而不是Tortoise“移动”命令移动了文件 . 前者只是在文件系统中移动文件而不更新subversion树(从版本控制中删除旧文件并将旧文件的历史记录链接到新文件) .
始终使用TortoiseSVN“移动”命令,或者如果您想要移动没有历史记录的文件,则使用Windows资源管理器复制文件,使用Tortoise添加新版本,然后使用Tortoise删除旧版本 .
您可以右键单击旧文件的父文件夹,选择“检查修改”,然后从版本控制中删除标记为缺失的文件 .
听起来像你提交了文件,但没有提交到/来自的目录 . 您还需要提交目录 .
通过单击文件夹,选择“重命名”,并使用“newpath \ to \ folder”作为参数,我遇到了树冲突 . 经过多轮失败的清理命令和其他一些事情后,我终于通过以下方式恢复了理智:
将新的干净结帐打开到另一个文件夹中
svn从清理结账中删除并提交损坏的'newpath\to\folder'
选择'oldpath\folder' r单击拖动并将svn移动到新位置
立即提交更改,中间没有其他操作
去破解签到'oldpath\folder'并手动复制已删除或留下的文件'newpath\to\folder'
添加手动复制的文件,就像它们是新的一样 .
手动更新的文件中断了无缝历史链,但至少我现在可以继续工作了 .
3 回答
听起来好像您使用Windows资源管理器“移动”命令而不是Tortoise“移动”命令移动了文件 . 前者只是在文件系统中移动文件而不更新subversion树(从版本控制中删除旧文件并将旧文件的历史记录链接到新文件) .
始终使用TortoiseSVN“移动”命令,或者如果您想要移动没有历史记录的文件,则使用Windows资源管理器复制文件,使用Tortoise添加新版本,然后使用Tortoise删除旧版本 .
您可以右键单击旧文件的父文件夹,选择“检查修改”,然后从版本控制中删除标记为缺失的文件 .
听起来像你提交了文件,但没有提交到/来自的目录 . 您还需要提交目录 .
通过单击文件夹,选择“重命名”,并使用“newpath \ to \ folder”作为参数,我遇到了树冲突 . 经过多轮失败的清理命令和其他一些事情后,我终于通过以下方式恢复了理智:
将新的干净结帐打开到另一个文件夹中
svn从清理结账中删除并提交损坏的'newpath\to\folder'
选择'oldpath\folder' r单击拖动并将svn移动到新位置
立即提交更改,中间没有其他操作
去破解签到'oldpath\folder'并手动复制已删除或留下的文件'newpath\to\folder'
添加手动复制的文件,就像它们是新的一样 .
手动更新的文件中断了无缝历史链,但至少我现在可以继续工作了 .