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


110

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

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

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

继续进行此提交可以吗?如果没有,我应该怎么做才没有问题?

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

Answers:


129

Google找到了解决方法:在提交窗口中按F5键(不在“警告弹出窗口”中)

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

在26.08.2011 22:39,Ryan J Ollos写道:

几个月以来,我一直看到启动“提交”时出现以下对话框。在合并后尝试提交时,经常会发生这种情况。

但是我最近注意到的是,如果我取消然后手动刷新文件列表(F5),则在第二次启动提交时再也看不到该消息。提交似乎可以顺利完成,没有其他问题。

提交对话框在后台线程中监视工作副本以获取更改通知。在文件被修改/移动/重命名/ ...的情况下,操作系统会发送此类通知。如果收到此类通知,则提交对话框首先会进行一些检查,以便可以删除其中的大多数内容。如果通知指示未选中且在提交对话框中不可见的文件已更改,它将切换回非递归提交。这是因为,例如,如果您在另一个编辑器中打开了一个文件,并在提交对话框打开时保存了更改,那么即使您未在提交对话框中选中它,该文件也会被提交(它不会显示)直到您使用F5刷新对话框。

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

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

斯特凡


1
答案中的链接似乎已消失。这是Internet档案库中的有效文件web.archive.org/web/20150306224932/http://…–
buzz3791

1
我只是尝试按F5。效果是,现在,提交对话框文件列表两次显示了我的大多数文件(具有完全相同的路径和名称),并且在我尝试提交时出现警告消息。
OR Mapper

26

我遇到了同样的问题,但通过将更改恢复为我标记为“忽略提交”的文件来解决了

恢复这些文件后,tortorisesvn便能够提交合并中的所有其他文件


实际原因是什么?这些文件为何或如何引起问题?
曼诺伊

5

如果我继续进行此提交就可以了吗?

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

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

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

1
“最初检查非递归时出错。” 不,不一定。我以与往常相同的方式检查了WC,但是突然之间仍然遇到这个问题。实际上,以下所有替代解决方案似乎都不是这种情况。
基思M

这是完全错误的。我不时收到此消息,并以与往常相同的方式递归签出工作副本
1800信息

1

此外,对于某些我已添加SVN的文件,我在添加后进行了更改(如果这会影响自然)。

就我而言,这正是导致消息出现的原因,即使我未选择提交文件也是如此。

丑陋的解决方案只有在只有几个文件受到影响的情况下才能安全地工作:

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

自我提醒:仅在目标(主干)干净的情况下重新整合分支。


1

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

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

编辑:PS:使用前请尝试一下,确保没有标记为“忽略提交”的任何文件。“忽略提交”是特定于乌龟的,SVN提交也选择了这些更改。


1

只是以为我会发布此帖子,因为它对我有用...

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

在我删除了项目和文件夹(SVN对其进行了打勾)并再次将其放回新项目中之后,突然所有的“ Missing”都变成了“ Added”,并且提交运行得很好而没有警告我任何事情。

希望这可以帮助!


1

我看到了此问题,原因是一些添加的文件没有明显的原因而没有添加状态。即使父文件夹正确显示为“添加”,它们还是“正常”。我还原了这些“正常”更改,然后手动重新进行了更改。这使每个添加的项目在提交列表中显示两次,但它解决了该错误,并且现在一切似乎都处于工作状态。

它与提交时忽略不相关,在另一个答案中,这似乎就像是TortoiseSVN中的错误。


据我所知,TortoiseSVN不会递归地移动文件。移动文件夹会更改文件夹历史记录,但不会更改其中的文件。这意味着要使用TortoiseSVN移动文件夹,您必须在所需的目标位置重新创建文件夹,添加文件夹,然后将原始文件夹的内容移至新文件夹。或者只是使用命令行。
布拉德利·辛格

我认为这是合并产生的,而不是举动。除非那些是类似的操作,否则我不会关注。
克里斯,

0

问题可能是您的mergeinfo被某人删除或自动删除,因为该信息在树中上移了。如果您要再次合并它们,则暂时可以使用。但是所有其他人都将因未合并的分支机构而遇到问题。SVN将丢失一些代码,然后再次合并已经提交的代码。

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



-4

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

svn commit --non-recursive [folder]

就像您喜欢的那样,这就是工作的热情


其他答案表明,这将不会落实您实际要提交的内容。
基思M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.