Redditの人々は、特に私の用語を証明しようとする際に新しい用語を思いついたので、私の専門用語がわかりにくいと不平を言っていました。 ノード、エッジ、円、矢印、その他すべてを備えたグラフが必要でした。 それから数時間、グラフィカルエディタを苦しめ、以下に示す2つのグラフを得ました。これらのグラフを使用して、問題の概要を説明します。
以下に、「マスター」、「リリース」、「トピック」という3つのブランチが作成されたGitリポジトリの簡略化された履歴グラフを描きました。 Git愛好家が物語の複雑さの非現実的に悪いケースを見せることができたことを誓う前に、これが実際に単純化された例であることを保証させてください。 実際のGitリポジトリにアクセスできます。6つの作業リリースブランチ、約40の作業テーマブランチ、および中央サーバーから既に削除された数百の既存のブランチが作成されています。
これがこのグラフです。
ab3e2afd
変更が記録さ
ab3e2afd
たブランチを教えてください。 リリースブランチで最も早い変更は何でしたか? トピックスレッドは正確にどこから始まりましたか?
これは不公平だと思います。 変更ログは表示しません。 しかし、私を信じて、あなたは彼に会いたくないでしょう。 彼は助けません。 飼いならされた霊長類[1]は、これらの質問に答える役に立つヒントをそこに書き留めたと思いますが、答えはしませんでした。 さらに悪いことに、時には嘘をつく。
私の質問に対するより賢明な反論は、「なぜあなたはこれを知る必要があるのか?」と尋ねることでしょう。これに一つずつ答えさせてください。
- 将来のリリースの変更の説明にそれを含めるかどうかを知るために、どのブランチ
ab3e2afd
が修正されたかを知る必要があります。 - リリースブランチで最初に行われた変更を知る必要があります。この変更を開始点として新しいテーマブランチを開始し、可能な限りメインブランチで行われていることを常に最新にして、できることを確認するためです。メインブランチとリリースに対してクリーンマージを実行します。
- すべてのパッチをまとめてレビューのために同僚に送信できるように、トピックトピックの開始位置を知る必要があります。
ほとんどの場合、Mercurialユーザーはこのような不自然な強制を必要としません。 理由は次のとおりです。
違いがわかりますか?
グラフの各ノードは、Mercurialのブランチの名前を示すために色付けされています。 推測ゲームは不要になります。 「temp」という名前のブランチが存在すると、「master」ではなく「release」というブランチにマージされたことをしっかりと知っています。 おそらく、不要になったため、現在はクローズとマークされています。
トピックブランチでの最初の作業は、リリースブランチとマージする前にtempブランチに入りました。 その後、リリースブランチは新しく立ち上げられたトピックトピックにマージされました。
Mercurialは各変更のヘッダーにブランチ名を保存するため、これはすべて可能になります。 Gitもそれを行うべきですが、そうではありません。 代わりに、Gitはユーザーにストーリーを「クリーン」であるように見せかけますが、実際には見苦しいです。
最も悲しいことは、ほとんどのGitユーザーは、問題があることを認めることさえも概念的なブロックを持っているように見えることです。 彼らは、彼らのツールが彼らに課しているそのような歴史的修正主義の必要性を受け入れ、それを尊厳と呼んでいます。
大きくて由緒あるプロプライエタリなオペレーティングシステムのソースコードを、継承された古いバージョン管理システムから、みんなが話している新しいクールな分散システムに移す可能性があることを恐れています。 このブログ投稿を多くの人に見せなければならないと自分自身を予測します。
[1] 飼いならされた霊長類-おそらくティモシー・リアリーまたはロバート・アントン・ウィルソンへの言及-約。 perev。