首页 文章

Tortoise的非递归提交如何工作?

提问于
浏览
104

我已经检查了本地SVN分支(我的分支)的副本,我从另一个分支(具有完全不同的文件夹结构)合并到该分支 . 所以基本上有很多删除(旧文件)和添加(新文件) .

当我尝试将合并提交到存储库(到我的分支)时,Tortoise说

此提交不是递归的,并且已选择移动/重命名的文件夹进行提交 . 此类移动/重命名始终在存储库中递归执行 . 你想要提交吗?

继续这个提交是没关系的吗?如果没有,我应该怎么做才能没有问题?

另外,对于我添加的一些文件,我在添加后进行了更改(如果这会影响性质) .

10 回答

  • 0

    由Google发现如何修复它:在提交窗口中按F5(不在“警告弹出窗口”中)

    有关详细信息,请参阅http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2831045 .

    在2011年8月26日22:39,Ryan J Ollos写道:几个月以来,我一直在看到启动提交时出现以下对话框 . 尝试在合并后提交时经常会发生这种情况 . 我最近注意到的事情是,如果我取消然后手动刷新文件列表(F5),我第二次启动提交时不再看到该消息 . 提交似乎成功并没有进一步的问题 . 提交对话框监视后台线程中的工作副本以获取更改通知 . 这些通知由操作系统发送,以防文件被修改/移动/重命名/ ...如果接收到这样的通知,则提交对话框首先进行一些检查,以便它可以丢弃大部分 . 如果通知指示未在提交对话框中检查且不可见的文件以某种方式更改,则会切换回非递归提交 . 那是因为如果你有例如一个文件在另一个编辑器中打开并在提交对话框打开时保存您的更改,然后即使您没有在提交对话框中检查它也会提交该文件(直到您刷新对话框后它才会显示F5) . 因此,如果您经常看到该警告对话框,请检查是否有其他工具/应用程序在运行副本中修改文件 . 正如您所注意到的:如果您点击F5,则会重置“非递归标志”,因为刷新后,您会再次看到所有文件 - 甚至是您在启动对话框后修改的文件 . 斯特凡

  • 6

    我有同样的问题,但通过将我标记为'ignore-on-commit'的文件恢复更改来解决它

    一旦我恢复这些文件,然后tortoisesvn能够提交合并中的所有其他文件

  • 1

    如果我继续这个提交,这样可以吗?

    不,您的提交将忽略WC树中的所有更改,并仅反映根级别更改(已损坏的合并) .

    最初检出非递归时出错了 . 您可以在CLI中使用 --depth infinity 参数 try to perform good, full commit 或在TortoiseSVN GUI中找到此开关 .

    svn commit --depth infinity . -m "Merge"
    
  • -4

    对于我已添加SVN的某些文件,我在添加后进行了更改(如果这会影响性质) .

    在我的情况下,这正是导致消息出现的原因,即使我取消选择提交的文件 .

    丑陋的解决方案,只有少数文件受到影响才能安全运行:

    • 创建已更改文件的副本

    • 还原已更改的文件

    • 提交合并/重新整合

    • 将更改的文件复制回原始位置

    提醒自己:如果目标(主干)是干净的,只能重新整合分支 .

  • 121

    看起来TortoiseSVN在调用commit之前执行某种有效性检查 . 好,但错误信息非常不清楚 .

    当我遇到这个问题时,我又回到使用svn命令行进行提交 . 由于其中一个文件夹不是最新的原因,提交失败 . 在更新了该文件夹之后,我再次运行了“svn commit”并且它经历了 .

    编辑:PS:在使用之前试一试,确保没有任何文件标记为“提交时忽略” . “忽略提交”是特定的龟,SVN提交也会选择这些更改 .

  • 0

    只是想我发布这个因为它对我有用......

    发生这种情况的原因是因为我部分地重命名了我创建的一个新项目,并且由于某种原因它们在提交屏幕上都显示为“Missing” .

    在我删除项目和文件夹(SVN已经打勾)并再次将其作为一个新项目重新放入之后,突然所有的“Missing”变成了“Added”并且提交运行正常没有警告我什么 .

    希望这可以帮助!

  • 25

    问题可能是,您的mergeinfo被某人删除或自动删除,因为信息在树中向上移动 . 如果你要再次将它们合并,它将暂时起作用 . 但是其他所有人都会因为没有合并的分支机构而遇到问题 . SVN将丢失一些代码并再次合并已提交的代码 .

    因此,还原这些文件并再次更改它们可能会起作用,但您不应该只提交更改 .

  • 1

    我刚才有同样的问题 . 我没有选择所有文件,而是点击了版本,一切运行良好 . 在我的情况下,版本化选项选择了所有文件,所以现在一切正常 .

  • 1

    我看到了这个问题,原因是一些添加的文件没有明显的原因没有添加状态 . 即使父文件夹正确显示为“已添加”,它们也是“正常” . 我恢复了那些“正常”的更改,然后手动重新执行它们 . 这使得每个添加的项目在提交列表中显示两次,但它解决了错误,现在所有内容都处于正常工作状态 .

    它与另一个答案中的ignore-on-commit没有任何关系,它只是TortoiseSVN中的一个错误 .

  • 0

    我不知道tortoisesvn的选项,但你可以使用命令行

    svn commit --non-recursive [folder]
    

    这就像你喜欢的工作一样

相关问题