2

チームメイトと私はソフトウェア ベンダーで働いており、クライアント向けに大規模なソフトウェアを構築しています。数十人の開発者が、ソース管理に Git を使用しています。4 つのリリースがあります。

  • 0.9: 生産中
  • 0.9.1: クライアントでテスト中
  • 1.0: 私たち (ソフトウェア ベンダー) によってテストされています。
  • 1.1: 構築中

私たちの現在の作業慣行は、たとえば 0.9.1 のバグを修正する場合、

  • 最新の 0.9.1 をプルしてから、修正を 0.9.1 にプッシュします。
  • 1.0 に切り替える、最新の 1.0 をプルする、0.9.1 をマージする、1.0 にプッシュする
  • 1.1 に切り替える、最新の 1.1 をプルする、1.0 をマージする、1.1 にプッシュする

問題は、何十人もの開発者がいる場合、多くの場合、複数の人が同時に修正をプッシュしようとしていることです。その結果、多くの場合、人々は同じマージを行い、互いの変更をマージしています。例えば:

  • dev1 は fix1 を 0.9.1 にプッシュし、1.0 をプルしてマージを開始します
  • dev1 が 1.0 にマージしている間に、dev2 は fix2 を 0.9.1 にプッシュし、1.0 をプルして、自身の fix2 だけでなく fix1 もマージし始めます
  • さらに、マージは 1.1 に対しても行う必要があります。

このすべての苦痛のために、人々はローカル マシンで (バックアップなしで) 多くのコミットを行い、その後、1 日に 1 回または数日に 1 回の大規模なマージを行う傾向があるのではないかと思います。

この問題は、他の大規模な Git ベースのプロジェクトでも発生すると思います。この問題にどのように対処したかについて、そのようなプロジェクトに取り組んだ人々から聞きたいです。

4

2 に答える 2

0

dev1 が 1.0 にマージしている間に、dev2 は fix2 を 0.9.1 にプッシュし、1.0 をプルして、自身の fix2 だけでなく fix1 もマージし始めます

プッシュ時に dev2 が最新でなかった場合、リモートはそれを拒否します。プッシュする前に最新の状態にしておく必要がありますが、そうでない場合はgit push -fまったく別の問題です。

于 2013-01-08T07:01:53.347 に答える