web-dev-qa-db-ja.com

git vs Subversion-賛否両論

私は長年SVNのユーザーであり、完全に満足しているとは言えません。数日前、私のパートナーから、「パフォーマンスが向上し、マージと分岐が容易になった」とのgitの確認を求められました。

私はgitとSVNの比較記事をいくつか読んでいますが、両方のバージョン管理システムを使用して長所と短所をまとめていただければ幸いです。

現在、あるシステムから別のシステムに切り替えて主観的な意見を聞いた人々を調べています。

私はSVNの動作が本当に好きで、人々がチェックアウトできる中央リポジトリが1つあり、そこからライブ開発コピーとライブ本番コピーをデプロイできることを知っていますが、ソートの競合やその他のエラーが頭痛の種になることがあります。ファイルの履歴を比較または参照する必要があるたびに、処理するネットワーク遅延があります。

一方、分散プラットフォームを使用すると頭痛のように聞こえますが、アクセスを制御するにはどうすればよいでしょうか。プッシュして更新する中央リポジトリが1つありますか?

この問題についてもう少し説明していただきありがとうございます。

11
Adam Benayoun

システム管理者の認識から、またはプログラマとしての2つのツールを比較しようとしていますか?これをプログラマの観点から見ている場合は、おそらくスタックオーバーフローでこれを尋ねるべきです。あるいは、「 git svn 」について既に尋ねられていることを確認する必要があるかもしれません。

Gitとsvnについてのことは、どちらかまたは両方の命題ではないということです。 SVNリポジトリを実行でき、開発者は git-svn を使用して、特定のケースでgitがより優れたツールであると考えている場合、リポジトリと対話できます。

15
Zoredache

GitよりもSubversionに長けた人はいません。 gitが配布されている間、誰でもリモート追跡ブランチを使用して中央リポジトリから作業できます。 gitはより高速で柔軟性があり、マージは実際に機能します。さらに、現実的にオフラインで作業できますが、Subversionを使用していないと変更をコミットできません。gitで個々のコミットを使用すると、svnでリポジトリの状態を表す単一のコミットIDを使用するよりも簡単に作業できます。

アクセスは、gitサーバー上のユーザー/グループアカウント(適切に設定するために 'git init --bare --shared'でOriginリポジトリを初期化する必要があります)またはsshキーを使用して制御されます。サードパーティのアドオンである「gitosis」を使用すると、非常に細かいアクセス制御を設定できます。

Svnに慣れている場合、gitの操作に慣れるまで少し時間がかかりますが(私のオフィスでこれを経験したばかりです)、gitの方がはるかに強力です。

素晴らしいウォークスルーが必要な場合は、チェックアウト http://progit.org -オープンソースの本の完全なオンラインコピーです。

2
Aaron Brown

私のチームでは、制御バージョンシステムをsvnからgitに変更している最中です。 Gitの学習曲線は少し厳しいので、Gitに慣れ、開発者に使い方を教え始めました。彼らは、分散制御バージョンシステムのすべての利点(複数のブランチ、中央リポジトリなし、速度など)を知る必要があります。

あなたのように、私たちのサイトをデプロイするシステムがあったので、開発者のマシンとの間で変更がプルおよびプッシュされるgitセントラルサーバーのようなものを維持しています。私たちのサイトはこの「中央サーバー」から変更をプルし、残りの展開プロセスはsvnを使用するプロセスと似ています。

Svnとgitリポジトリを混在させないようにして、マイナーサイトを移行し、新しいバージョンのようにメインサイト用に新しいgitリポジトリを作成し始めました。アクセスはsshキーで管理されます。また、ウェブインターフェースとしてgitwebを使用しています(私たちのsvnシステムはhttpベースです)

それは機能しています。それはある日から別の日への変更ではなく、開発者がこの変更を煩わしさとしてではなく、最終的に私たち自身のシステムを改善するツールを学ぶための新しいスキルをとることを試みています。

1
hdanniel