2016-12-23 5 views
1

に依存しています。アリスと私はリポジトリをクローンして変更を加えました。アリスは彼女の変更をコミットし、リモートにプッシュします。私はその変更を取り出して、それを私のものとマージします。 Aliceは最新のコミットで、Vehicleというクラスを削除したと想像してください。私は順番に、Vehicleクラスを拡張したCarという新しいクラスを追加しました。今、私が自分のコミットを私のものに合併するとき、明らかに問題になるでしょう。 これは、マージする前にコードを調べてテストする必要があるということですか? (おそらくそうだ)。この状況での一般的な慣習は何ですか?コードを削除したコミットをマージするとどうなりますか?私の新しい機能は

+2

ストーリーのバージョンが保持されている場合、マージ後に 'Vehicle'クラスが削除されないことに注意してください。しかし、「Vehicle」_Does_が削除されていると仮定すると、問題が発生します。これに対する解決策は、あなたとアリスが開発プロセス中にお互いにコミュニケーションすることです。 Gitがあなたのために設計上の意思決定をする必要があるときには、私はすでにそれが遅すぎると考えます。 –

+0

@TimBiegeleisen、 "物語のバージョンが保持されるものであれば、Vehicleクラスはマージ後に削除されないことに注意してください。"しかし、変更は常に追加に関するものではありません。それは時々不必要なものを取り除くことです、そうではありませんか? Gitは、Vehicleクラスが必要か冗長かどうかをどのように決定しますか? –

+1

Gitが使用する正確なルールは実際には分かりませんが、私はそれが両方向に進むことを見ました。つまり、「Vehicle」が削除されて保持されているのを見たことがあります。私の要点は、Gitに頼ってこのようなソフトウェア設計の決定を下すべきではないということでした。アリスとちょうど話してください。 –

答えて

1

これは、コードを調べてマージする前にテストする必要があるということですか? (おそらくそうだ)。

マージの後にコードを調べる必要があります。 は、マージする前に他の開発者のブランチを調べてください。 しかしそれはあまり便利ではありません。

この状況での一般的な対応は何ですか?

マージ後、プロジェクトを再構築してすべてのテストを再実行する必要があります。 マージ中に依存するクラスが削除された場合は、 コンパイル済みの言語でコンパイルエラーが発生します。 翻訳された言語では、影響を受けるコードをカバーするテストケースがあることが望ましいので、自動テストを再実行すると問題が明らかになります。 問題が検出されたら、 がマージされたものを調べて、他の開発者とその理由を質問することができます。

コミュニケーションが良好で、タスクが良好に分かれているチームで、 実装の変更にこのような論理的な競合があってはならないことを望みます。

関連する問題