【问题标题】:How does Tortoise's non recursive commit work?Tortoise 的非递归提交是如何工作的?
【发布时间】:2012-10-12 04:17:49
【问题描述】:

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

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

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

可以继续这个提交吗?如果没有,我应该怎么做才能没有问题?

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

【问题讨论】:

    标签: tortoisesvn commit non-recursive


    【解决方案1】:

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

    详情请见http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2831045

    26.08.2011 22:39,Ryan J Ollos 写道:

    几个月以来,我一直看到以下对话框出现在 启动提交。尝试提交以下内容时经常发生 合并。

    我最近注意到的事情是,如果我取消然后 手动刷新文件列表(F5),我没有再次看到该消息 第二次启动提交。提交似乎成功了 没有其他问题。

    提交对话框在后台线程中监视工作副本 更改通知。此类通知由操作系统发送,以防万一 文件被修改/移动/重命名/... 如果收到这样的通知,提交对话框首先会执行一些操作 检查,因此它可以丢弃其中的大部分。如果通知表明 未检查且在提交对话框中不可见的文件具有 不知何故改变了,它切换回非递归提交。 那是因为如果你有例如在另一个编辑器中打开文件并保存 您在提交对话框打开时所做的更改,那么该文件将得到 即使您没有在提交中检查它,也已提交 对话框(在您使用 F5 刷新对话框之前它不会显示)。

    因此,如果您经常看到该警告对话框,请检查是否还有另一个 正在运行的工具/应用程序会修改工作副本中的文件。

    正如您所注意到的:如果您按下 F5,则“非递归标志”会被重置 因为刷新后,您会再次看到所有文件 - 甚至是您 启动对话框后修改。

    斯蒂芬

    【讨论】:

    • 答案中的链接似乎已失效。这是来自 Internet 档案的有效文件web.archive.org/web/20150306224932/http://…
    • 我刚试过按 F5。效果是现在,提交对话框文件列表显示了我的大部分文件两次(具有完全相同的路径和名称),并且当我尝试时出现警告消息仍然提交。
    • 感谢您的回答,非常有用!什么对我有用:我关闭了文件可能被“无意修改”的窗口/应用程序,瞧!
    【解决方案2】:

    我遇到了同样的问题,但通过恢复对我标记为“ignore-on-commit”的文件的更改来解决它

    一旦我还原了这些文件,然后 tortoisesvn 就能够提交合并中的所有其他文件

    【讨论】:

    • 真正的原因是什么?这些文件为何或如何导致问题?
    • 可能与此有关(但我目前没有时间尝试找出):我尝试从工作副本中的另一个文件夹提交,但消息消失了。
    【解决方案3】:

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

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

    最初签出非递归时出错。您可以在 CLI 中使用 --depth infinity 参数尝试执行良好的完整提交,或在 TortoiseSVN GUI 中找到此开关。

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

    【讨论】:

    • "您最初签出非递归时出错。"不,不一定。我以与往常一样的方式检查了我的厕所,但我仍然突然遇到这个问题。事实上,以下任何替代解决方案似乎都不是这种情况。
    • 这完全是错误的。我不时收到此消息,并以与往常相同的方式递归地检查了我的工作副本
    【解决方案4】:

    另外对于一些我已经添加SVN的文件,我在添加后做了一些更改(如果这会影响性质)。

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

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

    1. 创建更改文件的副本
    2. 还原更改的文件
    3. 提交合并/重新集成
    4. 将更改的文件复制回原来的位置

    提醒自己:只有在目标(主干)干净时才重新整合分支。

    【讨论】:

      【解决方案5】:

      我也遇到了同样的问题。我没有选择所有文件,而是单击了版本控制,一切正常。就我而言,版本化选项选择了所有文件,所以现在一切正常。

      【讨论】:

      • 这对我有用,其他解决方案都不起作用。
      【解决方案6】:

      看起来 TortoiseSVN 在调用提交之前执行了某种有效性检查。很好,但是错误信息很不清楚。

      当我遇到这个问题时,我又回到使用 svn 命令行来提交。由于其中一个文件夹不是最新的,提交失败。仅更新该文件夹后,我再次运行“svn commit”并通过了。

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

      【讨论】:

        【解决方案7】:

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

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

        在我删除项目和文件夹(SVN 打勾)并再次将其作为新项目放回后,突然所有的“缺失”都变成了“添加”并且提交运行良好而没有警告我的任何东西。

        希望这会有所帮助!

        【讨论】:

          【解决方案8】:

          我看到了这个问题,原因是一些添加的文件无缘无故没有添加状态。即使父文件夹正确显示为“添加”,它们也是“正常的”。我恢复了那些“正常”的变化,然后手动重新做了。这使得每个添加的项目在提交列表中出现两次,但它解决了错误,现在一切似乎都正常。

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

          【讨论】:

          • 据我所知,TortoiseSVN 不会递归移动文件。移动文件夹会更改文件夹历史记录,但不会更改其中的文件。这意味着要使用 TortoiseSVN 移动文件夹,您必须在所需目的地重新创建文件夹,添加文件夹,然后将原始文件夹的内容移动到新文件夹。或者只使用命令行。
          • 我相信这是来自合并,而不是移动。除非这些是类似的操作,否则我不会关注。
          【解决方案9】:

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

          因此,恢复这些文件并再次更改它们是可行的,但您不应该只提交更改。

          【讨论】:

            【解决方案10】:

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

            svn commit --non-recursive [folder]
            

            这就是你喜欢的工作方式 问候

            【讨论】:

            • 其他答案是说这不会提交您真正想要提交的内容。
            猜你喜欢
            • 1970-01-01
            • 2011-08-19
            • 2010-10-13
            • 2013-03-20
            • 2012-10-04
            • 2011-01-25
            • 2016-11-09
            • 1970-01-01
            相关资源
            最近更新 更多