使用版本控制时,历史记录通常看起来像一个平面修订版链。组织层次结构有一些基本的机制(我指的是分支机构),但它看起来不够灵活。什么是常用实践(版本控制不可知)来组织多级别层次结构中的修订,以及什么是版本控制工具特定的陷阱?如何组织层次结构中的修订?
我会从我的实践中提供一个微不足道的现实世界的例子,它引导我回到这个问题。
假设我想重构一个函数/类的方法。我创建一张票并命名为“重构方法ClassName.method_name()”。在研究了method_name()的代码之后,我将重构过程划分为子任务。为了简单起见,让我们考虑我需要在代码中重新命名具有不同含义的两个变量,所以我需要在两个不同的原子步骤中完成它。我重命名一个变量,保存更改并在消息“中重命名为ClassName.method_name()”中的foo变量“(因为提前提交并且提交通常很好)。我重复第二个变量:“在ClassName.method_name()”中重命名的bar变量“。
现在我有问题跟踪一票,命名为“重构方法ClassName.method_name()”,并在版本控制两个版本:
- “在ClassName.method_name()更名为富变量”
- “更名为ClassName.method_name酒吧变量()”
在哪里的问题,这两个版本之间的关系?我迷路了!
我的目标是有一个这样的逻辑层次: “)重构方法ClassName.method_name(” “在ClassName.method_name)更名为富变量(”
-
- “在ClassName.method_name()更名巴变量”
氖无条件地说我正在寻找一般的工作流程,这将允许创建像这样的多级层次结构。每一层次的项目可以是一个修订版本或一张票证,一张票连续修订链固定的情况只是一个特例。
这样做很有意义,我很喜欢使用大纲和将数据组织到使用树的层次结构中。
人们在版本控制中如何做到这一点?有许多版本控制工具,每个都有他们的微妙之处,有些允许将第三方错误跟踪器直接放入存储库,有些甚至还集成了错误跟踪(如fossil),所以请详细说明特定版本控制工具的工作流程。
谢谢,它看起来很平滑。我预见这个工作流程至少可以与bzr,mercurial,git和化石一起工作。但如何处理不支持显式分支的版本控制工具?我的意思是达尔奇在这里。 – 2010-09-05 01:35:41