使用版本控制時,歷史記錄通常看起來像一個平面修訂版鏈。組織層次結構有一些基本的機制(我指的是分支機構),但它看起來不夠靈活。什麼是常用實踐(版本控制不可知)來組織多級別層次結構中的修訂,以及什麼是版本控制工具特定的陷阱?如何組織層次結構中的修訂?
我會從我的實踐中提供一個微不足道的現實世界的例子,它引導我回到這個問題。
假設我想重構一個函數/類的方法。我創建一張票並命名爲「重構方法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