ここでgitのワークフローについて説明している記事を見つけ、それを自分のhgプロジェクトに適用しようとしましたが、機能ごとにブランチを作成すると、ちょっと混乱しているようです。gitではブランチが削除される可能性があり、hgでは閉じることしかできません。したがって、これにより、リポジトリ内に大量の閉じたブランチが作成されます。これは、私が見たくないものです。
後で、ここでHgワークフローについて説明している別の記事をグーグルで検索しました。私がプロジェクトの唯一の開発者である場合は良さそうですが、別の開発者を追加しようとすると、履歴が少し複雑になりました。
私はこれを3つのリポジトリでテストしました
1, Base
2, devA ---> stands for developer A's repo
3, devB ---> stands for developer B's repo
最初に私はdevAに取り組み、devAのブランチに変更を加え、devAのdefault
ブランチにバグ修正を加えましたstable
。その後、devAをBaseにプッシュします。
devAのグラフ:
画像が壊れた場合のテキストベースのグラフは次のとおりです。
@ summary: Merge with stable
|\ tag: tip
| | parent: 4:d2973e149720
| | parent: 5:3788143e99fc
| | date: Mon Jul 30 13:17:44 2012 +0800
| |
| |
| o changeset: 5:3788143e99fc
| | branch: stable
| | parent: 3:4a955d01ea44
| | date: Mon Jul 30 13:17:19 2012 +0800
| | summary: fix a bug in featureA
| |
o | changeset: 4:d2973e149720
| | parent: 2:8e106fcfa9bf
| | date: Mon Jul 30 13:16:46 2012 +0800
| | summary: finish featureA advance
| |
| o changeset: 3:4a955d01ea44
|/| branch: stable
| | parent: 1:7b81b986d485
| | parent: 2:8e106fcfa9bf
| | date: Mon Jul 30 13:16:01 2012 +0800
| | summary: Merge with default
| |
o | changeset: 2:8e106fcfa9bf
| | parent: 0:7d7dc422ec7c
| | date: Mon Jul 30 13:15:43 2012 +0800
| | summary: finish feature A
| |
| o changeset: 1:7b81b986d485
|/ branch: stable
| date: Mon Jul 30 13:14:49 2012 +0800
| summary: Create stable branch
|
o changeset: 0:7d7dc422ec7c
date: Mon Jul 30 13:14:21 2012 +0800
summary: Init commit
次に、並列作業をエミュレートしたいのでdevBに切り替えました。そのため、Baseからプルせず、代わりにdevBのブランチで作業を開始し、devBのdefault
ブランチでバグ修正を行いましstable
た。
devBのグラフはdevAのグラフと似ています
default
ここで問題が発生します。devBの変更をBaseにプッシュしようとすると、競合があると表示され、ローカルでマージする必要があります。変更をプルすると、devBの履歴グラフが乱雑になりました。stable
したがって、devBには2つのdefault
ブランチと2つのstable
ブランチがあります。
私を混乱させたのは、実際のプロジェクトがこの種のワークフローをどのように使用しているかということです。mecurialのブランチグラフはここにあります。かなりきれいに見えますが、どうやってこれを行ったのですか?