SVN相关,与“主干/分支”相关

2024-05-13 17:35:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我用SVN做实验已经有一段时间了。我有一个小的测试项目,以测试作为SVN管理员和SVN用户的不同方面。这里先介绍一下。在

我有个剧本:

<repos>/python/testScript/trunk/testScript.py

此脚本检查环境变量$LOCALSITE并列出结果。今天我发现了一个bug,它会破坏脚本。未设置变量。所以我立即转到:

^{pr2}$

还推了一个标签:

<repos>/python/testScript/tags/0.1.1/testScript.py

因此,第一个标记仍然继承了“如果未设置$LOCALSITE时失败”的错误,就像主干仍然存在同样的问题一样。在

我推送一个标记的原因是,我确信这个脚本将在正确设置$LOCALSITE的环境中执行。不会坏的。人们可以像往常一样继续使用“tag-0.1.1”。在

不过,我还是想解决这个问题。所以问题是:

我已经在“branch-00.01.xx”上修复并测试了该问题/测试脚本.py,所以现在我知道“branch-00.01.xx”是有效的,除非有更多隐藏的bug。这是正确的步骤吗?还是我应该修一下后备箱?在

现在我该怎么办?我应该将固定分支推到新标记吗?或者我应该修理后备箱,然后杀死分支“branch-00.01.xx”?在

谢谢。在


Tags: 用户py标记脚本branch管理员分支svn
3条回答

分支模型假设当您完成一个特性的工作后,您将把它合并回主干中。没有必要给它贴标签,因为你不想把它暴露在外面。(实际上,您可以直接在主干上完成此修复,但我知道您正在探索该过程)。在

既然您刚刚开始,我建议您看看mercurial:它的语法非常类似svn,但它是下一代“分布式”版本控制。我不想说svn的坏话,这是一个很好的系统,但这也是你想知道的。在

不同的网站以不同的方式进行这项工作。很多都是政策问题。在

我见过的最好的方式是:

1)主干是相对免费的,但可能有一个策略,即没有首先运行自动测试,就不能将任何内容检入主干。这有助于减少等待主干正常工作以测试无关更改的人员。在

2)分支仍在变化,但会逐渐减慢变化速度。签入到主干中的东西可能被评估为签入到相关的分支。一段时间后,分支可能会“冻结”,例如设置一个提交钩子,拒绝签入中不包含某些神奇cookie的所有提交。如果有人非常想(通过查看提交历史记录)来避免这种情况很容易,但是它可以消除对冻结分支的意外签入。在

3)当一个给定的分支看起来相当稳定时,它会在打包进行Q/a之前被复制到一个标记上。标记一旦创建就永远不会改变,作为一个参考点——尽管理论上SVN将它们视为同样可变的——区别同样是一个策略问题。在

所有这一切的恼人部分是SVN外部引用。如果你没有,分支和标记很容易-只要svn复制,你就完成了。如果您有它们,您最终往往会编写一个脚本来调整外部引用,作为分支/标记过程的一部分。但有时外部引用确实有用。我一直在尝试在分支过程中“内化”所有外部引用—尽量复制所有外部引用作为新创建的分支的一部分,以保持分支和标记的简单性。当有一个重要的修复程序时,开发人员需要检查更多的地方,但到目前为止,它似乎更多的是帮助而不是阻碍,至少在我的个人项目中。在

在某种程度上,选择什么并不重要,因为主干/分支只是为了方便起见的逻辑概念(名称),没有技术上的区别。在

根据我的经验,您通常会想到trunk,在那里您可以进行最新和最好的开发,而将分支留给您已经向客户推送的版本,并且可能需要在以后继续工作,但不想担心正在进行的主干更改会破坏您的工作。在

相关问题 更多 >