2

ここで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のグラフ:

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のブランチグラフはここにあります。かなりきれいに見えますが、どうやってこれを行ったのですか?

4

2 に答える 2

1

リポジトリを「開発者ブランチ」に分割せず、代わりに「機能ブランチ」に分割してください。各ブランチには、特定の機能の実装に専念するかなり少数のコミットが必要です。ビルド/リリースごとに、デプロイの準備ができているブランチを選択し、それらをデフォルトにマージします。

于 2012-07-30T05:38:54.027 に答える
0

最新のhgflow (0.9.5、まだ正式にリリースされていませんが、うまく機能します) では、機能ブランチを完全に削除できます。Wiki からの抜粋:

終了アクションに --erase を追加しました。このオプションを使用すると、ブランチが正常に終了した後でブランチを消去 (つまり、リポジトリから完全に削除) します。最終的な効果は、ブランチ内のすべての変更が折りたたまれ、ブランチがマージされた宛先ブランチに単一の変更セットとしてコミットされたかのようになります。もう少し詳細については、hg フローのヘルプ @finish を確認してください。

于 2012-10-26T20:10:15.260 に答える