gpt4 book ai didi

svn - 将主干合并到分支后,Subversion mergeinfo困惑

转载 作者:行者123 更新时间:2023-12-04 19:25:45 26 4
gpt4 key购买 nike

我正在测试Subversion的最新版本,包括SVN命令行客户端和TortoiseSVN。 (到目前为止,在引入mergeinfo属性和--reintegrate合并开关之前,我一直在使用大多数版本。)

我已经完成了强制性谷歌搜索,但是要么Google-fu真的很糟糕,要么随后出现的问题实际上是一个没人能完全解释和/或解决的问题。我发现有些困惑,因为这里有许多关于此问题的报告-查找这些报告都没有问题。我还发现了关于mergeinfo道具的其他讨论,但没有真正匹配和解释/解决我所遇到的问题的讨论。

感谢您在提升Google-fu或了解发生的事情以及如何处理方面的任何帮助。

开始:


我有一个行李箱(和一个基于它的工作副本)
我创建一个分支(以及基于它的工作副本)
我在行李箱的WC中进行了一些更改并提交
我在分行的WC做一些工作并提交
现在,我将主干中的工作合并到分支机构的WC,解决了所有冲突。


到目前为止,一切都按预期进行,但是当我尝试提交合并结果时,却收到一条消息,指出工作副本已过期,需要首先进行更新。

这是没有道理的。 WC在合并之前是最新的,并且合并的目标是WC。因此,仓库中的任何内容都不应更改。

深入了解似乎是问题所在的mergeinfo属性。

我没有问题单独提交更改的文件,但是在那之后WC仍然很脏/未完全提交,并且由于WC不是最新的,所以我仍然无法提交。因此,似乎Subversion在仓库和WC中都一直在接触mergeinfo属性。

如果我要重复进行此调查,那么我先进行WC的更新然后再提交就没有问题。但是我不确定情况是否总是如此,否则这种现象的其他变体将很难解决。我也不希望尝试将其“解释”给附近的Subversion用户,他们没有将此作为其“主要工具”之一。

我已经来回测试了几年,我认为从引入mergeinfo和--reintegrate功能(1.5?)到现在,这个问题一直存在。这样可以吗?仍然没有解决?

我当前的测试已经使用命令行客户端(从CollabNetSubversion-client-1.6.17-4.win32.exe安装)和TortoiseSVN(TortoiseSVN-1.6.16.21511-win32-svn-1.6.17.msi)以及我得到相同的结果。

我已经使用Subversion多年了,并将自己描述为“高级用户”。尽管如此,在这个问题上,我仍然站着裤子。

附录

以下是我可以重现该问题的步骤:


在“ C:\ Documents and Settings \ johndoe \ My”中创建存储库
Documents \ SVN \ Repo”
使用回购浏览器,创建“ file:/// C:/ Documents和
设置/ johndoe /我的文档/ SVN /回购/中继”(r1)
使用回购浏览器,创建“ file:/// C:/ Documents and Settings / johndoe / My Documents / SVN / Repo / Branches”(r2)
在“ C:\ Documents and Settings \ johndoe \ My Documents \ SVN \ WCs \ Trunk”中创建中继的工作副本(无新修订)
在主干中,创建一个文本文件test.txt,添加并提交(r3)
在“文件:/// C:/ Documents and Settings / johndoe / My Documents / SVN / Repo / Branches / Branch1”(r4)中创建中继的分支
在“ C:\ Documents and Settings \ johndoe \ My Documents \ SVN \ WCs \ Branch1”中创建此分支的工作副本(无新修订)
在基于Trunk的工作副本中,向test.txt添加一行文本并提交(r5)
在基于Branch1的工作副本中,向test.txt添加一行文本并提交(r6)
合并树干到分支。右键单击“ C:\ Documents and
设置\ johndoe \我的文档\ SVN \ WCs \ Branch1”,乌龟SVN,合并。
合并类型“合并一系列修订”,URL合并自:
“文件:/// C:/ Documents and Settings / johndoe / My
Documents / SVN / Repo / Trunk”,合并的修订:
复制:“ C:\ Documents and Settings \ johndoe \ My
Documents \ SVN \ WCs \ Branch1“,其他所有内容均为默认设置。
冲突对话“以后再解决”。 (无新修订)
解决冲突。右键单击文件,Tortoise SVN,编辑
冲突。在TortoiseMerge中,标记并选择“他们在我的面前”,
单击“标记为已解决”,保存并退出。 (无新修订)。
尝试在Branch1中提交更改。


此时,我收到一条消息

Commit
C:\Documents and Settings\johndoe\My Documents\SVN\WCs\Branch1
Commit failed (details follow):
Directory '/Branches/Branch1' is outof date
You have to update your working copy first.


这对我来说没有意义:在合并之前,工作副本是最新的。之后,没有创建新的修订版(仓库HEAD仍然是r6),现在我的工作副本不是最新的。

进一步调查,似乎最早在步骤9和步骤10之间对Branch1的WC进行了更新,从而使问题消失了。同样,这对我来说毫无意义:
i)在更新结束时的对话框中,没有报告任何实际更新,并且
ii)分支中唯一更改过的一件事情已经提交。
因此,在我看来,WC既“干净”(没有提交),又是最新的(回购中没有对WC有所贡献的东西)。

该更新实际上唯一要做的就是将Branch1的工作副本的BASE从r4更改为r6。这在某种意义上很重要,但是现在我的头旋转得太快了,我无法确定细节。

我将不胜感激任何让我明白这里发生的事情的新鲜想法。

附录2

进一步尝试澄清我的想法:指向的常见问题解答说


提交Subversion时,客户端只会增加以下版本的修订号:
提交所涉及的节点,而不是工作副本中的所有节点。这个
表示在单个工作副本中,文件和子目录
可能会有不同的修订,具体取决于您上次提交的时间
他们。在某些操作中(例如,目录属性
修改),如果存储库具有更新版本的
节点,提交将被拒绝,以防止数据丢失。


在我的情况下,我将“节点”解释为“ file:/// C:/ Documents and Settings / johndoe / My Documents / SVN / Repo / Branches / Branch1”。如我所见,该存储库没有“该节点的最新版本”。总的来说,仓库的HEAD是r6,但是该节点的最新版本是r4。

最佳答案

它与mergeinfo道具无关,但与在文件夹上修改道具(好的,在这种情况下为merge info属性)有关。

有关此信息,请参见FAQ条目。

关于svn - 将主干合并到分支后,Subversion mergeinfo困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6761423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com