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

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

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

此提交不是递归的,并且有为提交选择的已移动/重命名文件夹。这样的移动/重命名总是在存储库中递归执行。你到底想不想承认?

继续执行这个提交是否合适? 如果不合适,我应该怎么做才能没有问题?

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

43823 次浏览

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

svn commit --non-recursive [folder]

它应该按照你喜欢的方式工作 问候

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

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

You made an error when checking out non-recursive initially. You can 努力表现良好,全力以赴 using --depth infinity parameter in the CLI or find this switch in TortoiseSVN GUI.

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

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

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

2011年8月26日22:39,Ryan J Ollos 写道:

几个月来,我一直看到下面的对话框出现在 initiating Commit. It frequently happens when attempting to commit following 合并。

The thing I have noticed lately however is that if I Cancel and then 手动刷新文件列表(F5) ,我没有看到消息时再次 initiating the commit a second time. The commit seems to succeed fine and 没有其他问题了。

提交对话框监视后台线程中的工作副本 change notifications. Such notifications are sent by the OS in case 文件被修改/移动/重命名/..。 如果接收到这样的通知,则提交对话框首先执行一些操作 检查,以便它可以删除其中的大部分。如果通知指示 未检查且在提交对话框中不可见的 不知怎么改变了,它切换回非递归提交。 That's because if you have e.g. a file open in another editor and save your changes while the commit dialog is open, then that file would get 即使您没有在提交中检查它,也可以提交 对话框(直到用 F5刷新对话框时才显示)。

所以如果你经常看到这个警告对话框,请检查是否还有其他的 运行修改工作副本中文件的工具/应用程序。

正如你所注意到的: 如果你点击 F5,那个“非递归标志”将被重置 because after a refresh, you see all the files again - even the ones you 在您启动对话框之后进行了修改。

斯特凡

我也有同样的问题,但是通过将已经标记为“忽略即提交”的文件的更改恢复为“忽略即提交”来解决这个问题

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

问题可能是,由于信息在树中向上移动,您的 mergeinfo 被某人删除或自动删除。如果你想再次合并它们,目前来说是可行的。但所有其它银行未合并的分支机构都将出现问题。SVN 将丢失一些代码并再次合并已提交的代码。

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

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

在我的例子中,这正是导致消息出现的原因,即使我取消了提交所选择的那些文件。

只有少数文件受到影响时才能安全工作的丑陋解决方案:

  1. 创建已更改文件的副本
  2. Revert the changed files
  3. 提交合并/重新整合
  4. 将更改后的文件复制回原始位置

提醒自己: 只有当目标(主干)是干净的时候才重新整合一个分支。

我也有同样的问题。我没有选择所有的文件,而是点击了版本控制,一切正常。在我的例子中,选项的版本选择了所有的文件,所以一切都没问题了。

似乎 TortoiseSVN 在调用 commit 之前执行某种有效性检查。很好,但是错误消息非常不清楚。

当我遇到这个问题时,我回过头来使用 svn 命令行进行提交。由于其中一个文件夹没有更新,提交失败。在仅仅更新了那个文件夹之后,我再次运行“ svncommit”,它通过了。

编辑: PS: 在您使用该方法之前,请确保您没有任何标记为“提交时忽略”的文件。“忽略提交”是特定于龟和 SVN 提交选择这些变化以及。

Just thought I'd post this because it worked for me...

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

在我删除了项目和文件夹(SVN 已经在上面打了勾)并把它作为一个新的项目再次放回去之后,突然所有的“丢失”都变成了“添加”,提交在没有任何警告的情况下运行良好。

希望这个能帮上忙!

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

在另一个答案中,它与忽略即提交没有任何关系,它只是看起来像 TortoiseSVN 中的一个 bug。