3

私の会社では、現在Subversionを使用しています。私たちのプロジェクト開発プロセスは、コードの「ライブ」ブランチ(これはライブWebサーバー上にあるものです)、小さなプロジェクトの一般的な開発ブランチで構成され、大きなプロジェクトごとに独自のブランチがあります。通常、常に少なくとも2つの大きなプロジェクトが開発中です。それらをライブブランチにマージするのは面倒ですが、さらに面倒なのは、大規模なプロジェクト1がライブになり、大規模なプロジェクト2が少し遅れてライブになり、そのマージプロセスが面倒になることです。

私がSVNで行っていることは、ライブ(つまり、発生するバグ修正など)から開発ブランチに毎日マージすることです。しかし、より大規模なプロジェクトのマージプロセスはまだ面倒であり、Gitでよりクリーンになるかどうか疑問に思っています。SVNで発生した「悪い」問題の一例として、devに小さな機能があり、それをライブにマージします。次に、ライブバックマージを実行すると、SVNはその機能を再びdevにマージしようとします(競合が発生します)。マージでそのコミットを手動で選択解除しない限り。私の理解では、Gitはコミットが開発で発生したことを知るのに十分「賢い」ので、それをマージして戻そうとはしません...しかし私の理解は間違っている可能性があります。また、Gitは、私たちがやろうとしているように、複雑なマージを自動的に処理するのに優れていると聞いています。

したがって、最初の質問は次のようになります。Gitは、私たちが行っていることに関してSVNよりも著しく優れているのでしょうか、それとも、同じ問題やヘアリーマージに遭遇する可能性が高いのでしょうか。

2番目の質問:私たちのシナリオに適した他の統合方法はありますか?特に、無差別統合についての記事を読んでいましたが、それは、同時に進行するプロジェクトが増えるほど、指数関数的に難しくなるようにも思えます。しかし、繰り返しになりますが、同時に3つ以上、通常は2つだけの大きなプロジェクトがあるとは思いません。継続的インテグレーションは、オールオアナッシングプロジェクトである傾向があるため、または部分的にプッシュされた場合にユーザーに不快感を与える可能性があるため(たとえば、最近のチェックアウトプロセスの再設計)、多くのプロジェクトではオプションではありません。 この記事は、私たちの状況にとっても良い方法論のように思われました。

4

5 に答える 5

5

私たちは、人々が最も快適に感じるツールを使用できるようにします。git-svn は、専門的な開発のために git に慣れているか、学びたいと思っている人々に git-lite エクスペリエンスを提供します。SubGitと呼ばれるプロジェクトがあり、SVN と Git を使いたい人は誰でも利用できます。

一般的に言えば、機能ブランチ開発スタイルに従って多くのブランチ/マージを行う人々は、git を好む傾向があります。また、複数のチーム メンバーがグループの他のメンバーとは独立して共同作業を行うためのオーバーヘッドも大幅に削減されます。

于 2013-03-01T16:34:18.517 に答える
3

「Git には学習曲線があります」 -- 本当です。一方、学習曲線の後、開発者はソース管理システムの概念をよりよく理解し始めます。彼らはより組織化され、はるかに実用的な方法で物事を行います。

はい、リポジトリを Subversion から Git に移行する必要がある場合、ブランチのレイアウトは (とりわけ) 異なります。しかし、歴史はすべてそこにあります。

通常、学習曲線が遅くなる原因の 1 つは、かなりの数のコマンドが異なる名前を持ち、理解するのに時間がかかることです。

Git は (データの点で) 大きなサイズのリポジトリには適していません。ただし、いつでもシステムをモジュール化し、その一部を抽出することができます。通常、この概念の利点は十分に理解されていません (大量のくだらないレガシー デザインを持つ企業では) 十分に理解されていません。巨大なリポジトリがある場合 (SVN/Perforce などでは通常そうであるように)、すべてのプロジェクトのすべてのコードが 1 か所にあります。ただし、Git を使用すると、プロジェクトの全履歴をローカル クローンに保持できます。すべてを適切にモジュール化した場合を想像してみてください。モジュールの完全な履歴を単一のエンティティとしてチェックアウトできます。Git は、プロジェクトごとにリポジトリを持つべきであるという原則に従います (少なくとも、ほとんどの人がそれを採用しています)。コードの小さなツリーを維持することは、常により簡単で、より速く、より整然としています。分岐、マージ、履歴の書き換え、履歴を含むディレクトリの個別の新しいリポジトリへの抽出...これらはすべてとても簡単です。

Git はぜひ試してみてください。怖くても。ProGit の本を読んでください。それは良いですし、優れた例と説明があります. Subversion の制限はすぐにわかります。私は初期の頃から CVS を使用していましたが、その後 Subversion に移行して長年管理していました。私が git を扱い始めたとき (本を読んだ後)、このバージョン管理がいかに優れているかを実感しました。

本当に、時間をかけて試してみると、後戻りはできなくなります。

すぐに始めて学習したい場合は、GitHub でプロジェクトをセットアップして、少し試してみることをお勧めします。すぐに始められるように、優れた説明があります。

于 2013-03-01T18:38:02.617 に答える
3

git を試してみてください。戻ることはありません。

マージを行わない場合 (つまり、小さなチームでトランクに取り組んでいる場合) は、Svn のみを使用してください。確かにあなたのものを含む他のすべてのケース-gitはあなたの人生を楽にします.

Git は、分岐、マージ、および競合の解決に関しては、SVN よりもはるかに優れています。たとえば、SVNの「ブランチごとに1つのチェックアウトディレクトリ」シナリオについて考えてみてください。さらに、git はマージ/ブランチに関して非常に優れているため、git-svn を使用して SVN ブランチをマージする人もいます。その逆を想像してみてください...

また、この回答は、Git と SVN の説明に非常に適しています。

于 2013-03-01T16:19:04.920 に答える
0

大規模なプロジェクトのマージプロセスはまだ面倒であり、Gitでよりクリーンになるかどうか疑問に思っています。

いいえ。あなたの問題は(ほとんどの場合、プロセスを理解できるので)使用されているツールではなく、開発プロセスの編成と管理に関するより重い質問です。ツールを変更しても、悪い習慣は破壊されません。

あなたの主な問題は「悪いマージ」ではなく(ところで、「バックマージの奇妙な」という説明は見たことがありませんが、sync-mergeを使用してブランチを定期的に使用し、後でこれらのブランチをトランクにマージします)、「混乱を念頭に置いて」です。Git-mergeは(一般的に)より堅牢ですが、Gitではるかに優れている他のレーキを踏むことになります

于 2013-03-02T06:23:51.573 に答える
0

SVN に慣れている方は使い続けてください。Git は非常に優れていますが、まだ学習曲線があり、使用を開始するには混乱が生じるでしょう。Svn は正常に動作するので、会社の「ブランチ」と「プロジェクト」の構造を改善できるかもしれません。ツールとは関係のない構造上の問題があるようです。あくまでも私の勝手な意見です。お役に立てば幸いです。

于 2013-03-01T16:13:14.677 に答える