CVS 分支管理
本页面包含历史信息或已弃用文章。
警告:PostgreSQL 项目现在使用 Git 进行版本控制。请参阅 使用回退分支,而不是本文档来获取有关列出和检出代码旧分支的信息。
本文作者:Tom Lane - 2001-05-07
如果您只需执行基本“cvs checkout”、“cvs update”、“cvs commit”,那么您将始终处理 CVS 中文件的 HEAD 版本。对于开发而言,这是您想要的,但如果您需要修补过去的稳定版本,则必须能够访问和更新我们 CVS 储存库的“分支”部分。在启动下一版本的开发周期之前,我们通常会为一个稳定版本分叉一个分支。
您首先要知道您想获取的分支的分支名称。要获取现有分支的列表,您可以使用此命令。
cvs status -v configure.in
(感谢 Ian Lance Taylor 指出这是最简单的方法。)典型的分支名称为
REL7_1_STABLE REL7_0_PATCHES REL6_5_PATCHES
那么,您如何在分支上执行工作?迄今为止最好的方法是创建该分支的单独检出树,并在其中进行您的工作。这不仅是处理 CVS 最简单的方法,而且您实际上也需要整个过去树来测试您的工作。(并且您*最好*测试您的工作。千万不要忘记,点版本倾向于在极少的测试版测试中发布 --- 因此,每当您将更新提交到稳定分支时,您最好加倍确定它正确无误。)
通常,要检出头分支,您只需 cd 到您希望包含顶级“pgsql”目录的位置,然后输入
cvs ... checkout pgsql
要获取过去的某个分支,请 cd 到您希望的位置,然后输入
cvs ... checkout -r BRANCHNAME pgsql
例如,就在几天前,我执行了以下操作
mkdir ~postgres/REL7_1 cd ~postgres/REL7_1 cvs ... checkout -r REL7_1_STABLE pgsql
现在我拥有 7.1.* 的维护副本。
当您以这种方式进行检出时,分支名称带有“sticky”属性:CVS 会自动知道这个目录树是该分支的,并且每当您在这个树中执行“cvs update”或“cvs commit”时,您都会获取或存储分支中的最新版本,而不是头版本。再简单不过了。
因此,如果您有一个补丁需要应用于头分支和最近的稳定分支,那么您必须进行两次编辑并提交两次,一次在您的开发树中,一次在您的稳定分支树中。这有点麻烦,但没有更好的办法。