わかりました:
svn と bzr では、ブランチ、コミット、マージが可能で、コミット履歴は次のようになります。
41: Theodore R. Smith 2013-09-14 Jump to list by name instead of number.
40: Theodore R. Smith 2013-09-14 [merge] [m] Miscellaneous cleanups.
39.1.4: Theodore R. Smith 2013-09-14 [m] Removed old files.
39.1.3: Theodore R. Smith 2013-09-14 [m] Fixed bug where test could not...
39.1.2: Theodore R. Smith 2013-09-14 [m] Fixed a CSS layout bug from th...
39.1.1: Theodore R. Smith 2013-09-14 [m] Fixed a typo.
39: Theodore R. Smith 2013-09-14 Added a progress bar.
38: Theodore R. Smith 2013-09-14 [merge] Updated the core libraries.
37.1.3: Theodore R. Smith 2013-09-14 Updated HTML Kickstarter.
37.1.2: Theodore R. Smith 2013-09-14 Upgraded to from jQuery 1.8.3 to 2.0.3.
37.1.1: Theodore R. Smith 2013-09-14 Upgraded to jQuery Address v1.6.
履歴を拡張したくない場合は、次のことができます。
41: Theodore R. Smith 2013-09-14 Jump to list by name instead of number.
40: Theodore R. Smith 2013-09-14 [merge] [m] Miscellaneous cleanups.
39: Theodore R. Smith 2013-09-14 Added a progress bar.
38: Theodore R. Smith 2013-09-14 [merge] Updated the core libraries.
いつでも、マージされた個々のコミットの差分などを、たとえばを介して非常に簡単に取得できます。bzr diff -r37.1.2..37.1.3
重要なのは、ブランチの履歴が保持され、メインラインのコミット履歴がマイナーな機能のコミットによって汚染されないことです。
現在、git でフィーチャー マージを行うたびに、 の有無にかかわらず--no-ff
、コミット履歴に次のように表示されます。
<hash>: Theodore R. Smith 2013-09-14 Jump to list by name instead of number.
<hash>: Theodore R. Smith 2013-09-14 [merge] [m] Miscellaneous cleanups.
<hash>: Theodore R. Smith 2013-09-14 [m] Removed old files.
<hash>: Theodore R. Smith 2013-09-14 Added a progress bar.
<hash>: Theodore R. Smith 2013-09-14 [m] Fixed bug where test could not...
<hash>: Theodore R. Smith 2013-09-14 [merge] Updated the core libraries.
<hash>: Theodore R. Smith 2013-09-14 [m] Fixed a CSS layout bug from th...
<hash>: Theodore R. Smith 2013-09-14 Updated HTML Kickstarter.
<hash>: Theodore R. Smith 2013-09-14 [m] Fixed a typo.
<hash>: Theodore R. Smith 2013-09-14 Upgraded to from jQuery 1.8.3 to 2.0.3.
<hash>: Theodore R. Smith 2013-09-14 Upgraded to jQuery Address v1.6.
これに関する私の問題は何倍もあります。
- 機能のマイナー コミットはすべてメインラインの履歴にあります。なんてこったい?
- 機能のマイナー コミットは、メインラインの履歴でごちゃまぜになっています。マージ時間ではなく、元のコミット時間に基づいてスタックしているようです;o
- リビジョン ID の即時の数値ランキングはなく、ランダム ハッシュのみです。しかし、それは修正不可能だと思います。
- これを見ると、機能ブランチがどこで終了または開始するのか、まったくわかりません。
解決策が欲しい
- すべてのコミット履歴を保存し、マイナーな機能のコミットを比較できるようにします。これは、コード フォレンジックに必要です。そのまま
git rebase
では、絵の外ですgit merge --squash
。 - メインラインのコミット ログを汚染しません。これはおそらく最も深刻です。
- マージ時間に基づいて、すべてのコミットを適切な順序で保持します。お願いします、マイナー コミットを混在させることはできません。
- 少なくともすべてのマイナーな機能のコミットを適切な順序で、メインラインの履歴と共に、bzr がどのように動作するかなどを確認できるようにするのが最適ですが、この情報をドリルイン コマンドで表示することしかできなくてもかまいません。のように
git log
。
この非常に複雑なプログラムを理解するのを手伝ってくれてありがとう!