转自网络
一、 tag
1.1 revision number(修订号)
要理解tag,首先要介绍一下revision number(修订号)。在CVS中每个文件的版本都有一唯一的 revision number。修订号的形式一般是这样的:'1.1','1.2','1.3.2.2' 甚至是'1.3.2.2.4.5'。一个修订号总有偶数个用句号分隔的十进制数。按照默认,文件第一个修订号是 1.1。每个新的修订号的最右边的数会比它的上一个修订号的最右边的数大 1。下图显示了一些修订号,较新的版本在右边。
1.1 ----< 1.2 ----< 1.3 ----< 1.4 ----< 1.5
其实,对于大多数 cvs 用户来说,不需要考虑修订号;他们只要知道 cvs 已经自动地加上了类似 1.1,1.2 之类的修订号就可以了。
1.2 tag (标签)
由于每个文件都有自己的修订号,每次提交该文件一次,它的修订号就会就会增加。这样就会产生一个问题:对于软件的某一个发行版,源文件的修订号可能都不一样。例如:
引用
ci.c 5.21
co.c 5.9
ident.c 5.3
rcs.c 5.12
rcsbase.h 5.11
rcsdiff.c 5.10
rcsedit.c 5.11
rcsfcmp.c 5.9
rcsgen.c 5.10
rcslex.c 5.11
rcsmap.c 5.2
rcsutil.c 5.10
因此,要checkout某一个特定的发行版的所有源码的时候,如果是要根据修订号来的话,是异常繁琐和难以跟踪的。这个时候,就要用到CVS提供的很炫的一个功能了:tag(标签)。
标签可以用来标记多个文件的一组修订号。
1.3 什么时候使用tag
tag的功能就像是给你的工程的某个时刻建立了一个快照。添加了tag后,不论你最源文件做了任何修改,只要发现你的修改发生了错误,或者是如果有人宣称在某个版本里有个 bug,但你在当前工作的副本中是找不到那个 bug,都可以根据tag重新rollback回去,或checkout出那个快照。tag给开发人员带了这样的便利,因此在任何重要的开发阶段,都应该打上tag。
在下面的情况都应该考虑给你的工程建立一份快照(tag):
引用
完成了某个重要的功能
在每一个milestone
在去掉某个存在功能之前
在测试开始之前
在你对源文件做重大修改之前
新建分支的时候
合并分支之前
当然了,这些都是一般性的建议。其实我感觉是只要你觉得做的修改可能会有副作用的时候,就应该打上tag。
二、branches
当多个人合作,可能有这样的情况出现:John突然有个想法,跟原先的设计不太一致,可能是功能的添加或者日志格式的改进等等,总而言之,这个想法可能需要花一段时间来完成,而这个过程中,John的一些操作可能会影响Sally的工作,John从现有的状态单独出一个project的话,又不能及时得到Sally对已有代码做的修正,而且独立出来的话,John的尝试成功时,跟原来的合并也存在困难。这时最好的实践方法是使用branches。John建立一个自己的branch,然后在里面实验,必要的时候从Sally的trunk里取得更新,或者将自己的阶段成果汇集到trunk中。
如果项目分为一期、二期、三期等,那么一期上线时的稳定版本就应该在一期完成时将代码copy到branches上,这样二期开发的代码就对一期的代码没有影响,如新增的模块就不会部署到生产环境上。而branches上的稳定的版本就是发布到生产环境上的代码,如果用户使用的过程中发现有bug,则只要在branches上修改该bug,修改完bug后再编译branches上最新的代码发布到生产环境即可。在branches上修改bug的代码要合并到trunk上。
分享到:
相关推荐
打开CVS客户端,选择“取出”操作,并在“修订版本”选项中选择需要创建分支的版本标签,比如tag1_2。 2. **创建分支**: - 取出1.2版本后,右键点击文件夹,选择“CVS”菜单下的“分支”选项。 - 在弹出的对话框...
- `cvs tag -b branch_name`: 创建一个新的分支。 - 合并分支: - `cvs merge -j branch_name`: 将分支合并回主线。 ##### 3.2 标签管理 标签管理允许开发者为特定的版本打上标记,方便后续追踪或回溯。 - 创建...
4. **标签(Tag)与分支(Branch)**:用于标记特定版本或创建可独立开发的分支。 5. **日志查看**:查看文件或项目的版本历史,包括每个提交的作者、时间戳和消息。 6. **图形化冲突解决器**:通过图形界面,用户...
通过`cvs checkout -b branch_name`创建分支,`cvs merge`进行合并。 - 版本标签:使用`cvs tag`命令为特定版本打标签,方便后续查找和恢复。 - 差异查看:`cvs diff`命令可以显示文件的不同版本之间的差异。 总结...
cvs tag -b branch_name ``` - 其中`branch_name`是你希望创建的分支名。 2. **切换到分支:** - 切换到某个分支进行开发: ```bash cvs co -r branch_name ``` 3. **合并分支:** - 当分支开发完成后,...
CVS 使用详细手册 本手册旨在为用户提供详细...用户可以查看文件或目录里所有的文件的状态,包括文件的版本、tag、branch 等。 ### 查看编辑者 用户可以查看文件或目录下所有文件的编辑者状况,以避免多人同时修改。
- `cvs tag`:为版本添加标签。 - `cvs branch`:创建分支。 - `cvs merge`:合并分支。 此外,`readme.txt`通常包含项目的说明和使用指南,而`说明.htm`可能是一个详细的CVS使用手册,提供了更深入的操作步骤和...
3. **分支(Branch)**:允许开发人员独立地在特定版本上工作,不干扰主线开发。 4. **标签(Tag)**:用于标记版本库中的特定状态或里程碑,方便回溯。 **TortoiseCVS主要功能** 1. **检出(Checkout)**:从版本...
3. **分支(Branch)**:CVS支持分支,允许开发者在不影响主线开发的情况下进行实验性或长期的开发工作。分支可以合并回主线,实现不同开发路径的融合。 4. **标签(Tag)**:标签用于标记特定版本,例如,可以为...
在CVS中支持分支管理,可以使用 `cvs branch` 和 `cvs merge` 进行分支的创建和合并。 #### 2. Linux命令行基础操作 这部分主要介绍了在Linux环境下如何使用CVS命令。 **2.1 配置环境变量** 为了方便地使用CVS...
10. **标签应用**:`cvs tag`为特定版本添加标签,`cvs rtag`则可以为仓库中的所有文件添加标签。 **四、CVS的高级特性** 1. **模块(Module)**:CVS支持模块的概念,允许组织仓库中的文件和目录,方便团队成员...
6. **标签与分支**:了解CVS中的标签(Tag)和分支(Branch)机制,知道何时以及如何使用它们来标记特定版本或进行平行开发。 7. **权限管理**:学习如何设置CVS仓库的访问权限,控制不同用户对项目的读写权限,以...
通过`cvs branch`和`cvs tag`命令可以轻松管理分支和标签: ```shell # 创建新的分支 cvs tag -b -r release_1_0 release_1_0_patch proj_dir # 提交特定版本的更改 cvs commit -r2 ``` 以上命令示例展示...
此外,"Tag"和"Branch"功能可以标记特定版本和创建分支,便于管理项目里程碑和并行开发。 6. **解决冲突**:当多个开发者同时修改同一文件时,CVS会检测到冲突并通知用户手动解决。Eclipse提供工具帮助用户理解和...
8. **标签和分支**:CVS支持标签(Tag)和分支(Branch),标签是对特定版本的标记,分支则允许开发人员在不影响主分支的情况下进行独立开发。在Myeclipse中,你可以创建和管理这些。 9. **使用CVS历史**:...
- **标签与分支**:支持创建代码标签(Tag)和分支(Branch),便于管理和追踪特定版本。 - **同步操作**:可以自动或手动同步本地代码与远程仓库,确保代码的一致性。 使用Eclipse CVS插件,开发者可以更高效地...
6. 其他命令:CVS还提供了如`cvs tag`和`cvs branch`用于标记版本,以及`cvs remove`用于移除不再需要的文件。 五、使用CVS文档 安装包中的详细文档通常包括CVS命令的完整参考、示例和最佳实践。通过阅读这些文档...
- `cvs branch`:创建分支。 4. **CVS优势** - **版本控制**:记录每一次修改,便于回溯和恢复。 - **协同开发**:允许多人同时编辑,自动解决冲突。 - **权限管理**:可以设置不同用户的访问权限。 - **可...
1. **创建分支**:使用`cvs branch`命令可以为项目创建一个分支,允许你在不影响主分支的情况下进行独立开发。 2. **合并分支**:完成分支上的工作后,`cvs merge`命令用于将分支上的更改合并回主分支或其他分支。 3...