2009-05-19 7 views
7

誰かが誇大宣伝がSubversionに比べてGitとMercurial上にあると教えてもらえますか?要するに、gitとmercurialのsubversionに対する利点は何ですか?

+2

http:// stackoverflowのdupe。com/questions/871/why-is-git-subversionよりも多くの人の中で –

+1

おそらく、集中バージョン管理と比較して分散バージョン管理について議論する質問とタイトルを書き直してください。 – Kekoa

+0

@kekoav:この質問に似ています:http://stackoverflow.com/questions/26845/do-you-use-distributed-version-control –

答えて

4

GitとMercurialはdistributedです.SVNはありません。

利点ですか?あなたは決めます...

5

さまざまなソース管理システムとの比較は、http://whygitisbetterthanx.com/にあります。 gitについて私が最も気に入っているのは、

  • です。
  • SVNが.svnサブディレクトリにあるようなソースコードを複製しません。
  • オフラインでコミットしてからプッシュすることができます。
+0

その中の1つはSubversionについて本当にバグです。方法で! –

+1

ソースコードを複製しませんか?私はあなたがそれを言い換えることができると思います。 – hasen

+2

まだ見たことがない場合は、次のサイトを試してみてください:http://whyhgisbetterthanx.com/ –

3

これはGIPSのMercurialなど、SubversionやCVSとは違うやり方で作業することができます。 SubversionとCVSは集中リポジトリ構造のみを提供し、他のものは「分散」します。分散されたアプローチでは、開発者間のアドホックコラボレーションが容易になり、また、自分のコンピューター上の変更グループの管理方法にも影響する可能性があります。

あなたにとって最適な方法は、あなたやあなたの組織が決定する必要があるものです。私にとって

3

1重要なこと:SVNは本当にタグをサポートしていません:

  1. タグはシンボリックではありません。それらはレポのパスです(COWコピー)
  2. SVNでは、ファイルはタグに属しています(タグはファイルのコピーなので)。他のシステムや人間の直感では、タグはファイルに属します。それはうんざりした関係です。
  3. したがって、「ファイルに含まれるすべてのタグ」のようなものをリストするのは難しいです。この情報はSVNリポジトリに直接格納されません。
6

Gitに行くまでは、私の意見ではGitの高度な分岐とマージのサポートが最大のものがいくつかあります。 Gitは本当に分かりやすく、変更をマージする能力はSVNよりはるかに優れています。 gitkのようなツールもまた、Gitリポジトリのブランチ間の関係を視覚化するのは本当に簡単です。

他にも多数の利点があります。 Gitは優れたツールと優れたツールチェーンを持っていると思います。中央リポジトリを必要としないという事実は "チェックアウト"レポは自分で小規模なプロジェクトに取り組んでいるときにはうれしいです。しかし、私はマージと分岐が最大の利点だと思います。

(私は「分岐」のためのローカルのクローンにMercurialの重点を言っていませんが、その多くは、同様に、Mercurialのために行く;私はずっと同じレポですべてのブランチを維持するのGitの方法を好む。)

2

ブランチとタグが同じであるリニア中央 VCS、(線形の歴史の中でのポイント):あなたはSVN

  • Gitはコンテンツ指向であるので、それはによってはるかに効率的にはSubversionよりもマージします:

  • 右のパッチを適用する
  • をマージするために必要なものをそのグラフ内、非常に迅速に見つけること
  • +0

    これらの機能は、Subversionよりも重要な点です。 Mercurialも同じように動作します(履歴はDAG、すべてのクローンは履歴があります)。 –

    1

    私の場合、svnは正常に動作しています。 1〜10人の開発者、経験に基づいて。

    「本当の」バージョンが冗長ホスト上のクラウドにあることは明らかです(うまくいけば、あなたのデータと稼働時間を調べる場所)。 gitについて読むことは、それがより複雑で、より大きく、より能力があるということです。したがって、svnを集中管理するワークフローが必要な場合(http://whygitisbetterthanx.com/のサイトを参照)、少ない作業方法などがある場合は、svnを使用します。

    私はCVSを使いましたが、楽しかったところが分かりました。私は数年後、もし私が再び変わると、それはgitになるでしょうか?しかし、実際には、設定した日以外の日にバージョン管理システムに時間を費やしていると、間違ったことをしています。

    4

    個人的なプロジェクトがあるとします。バージョン管理下に置いてください。 (私はあなたがはいと言うことを願っています)。

    もしそうなら、あなたはむしろ単純ではないでしょうか? Gitでは、サーバなどをセットアップする必要はありません。作業ディレクトリはリポジトリです。

    新しいクレイジーアイデアを試したいですか?そのブランチでブランチして試してみてください。成功した場合は、メインブランチに戻ってマージしてください。あなたのアイデアがうまくいかなかった場合は、メインブランチに戻り、そのcrazy_ideaブランチを削除してください。

    crazy_ideaで作業したいが、マスターブランチを通常どおり開発し続けるのか?再び、問題はありません。ブランチ間を行き来することができ、十分に成熟した後にのみ、crazy_ideaをマージします。

    チームに所属していても、各開発者(または少数の開発者グループ)は実験的なブランチでいくつかのアイデアを取り、残りのコードとマージすることができます。

    オープンソースをさらに簡単にすると思います。誰にでもアクセス許可を与える必要はありません。誰かが素晴らしい機能を実装している場合、彼はあなたに彼から引き離すように要求することができます。あなたが見ているものが好きなら、それをマージすることができます。

    これは驚きです:gitはsvnよりはるかに簡単です。

    本当に。私はいつもバージョン管理について聞いたことがあるが、決してそれをしなかった。私は自分のコードをローカルのsvnサーバーの下に置こうとしたとき、それは悪夢でした。私は本当にそれを嫌った。

    今、すべてをgitの下に置きます。

    +0

    私はMercurialでも同じ経験をしています。 Subversionは概念的によりクリーンでCVSの優れたシステムです。 Mercurialはさらにシンプルでありながら強力です。中央サーバを設定する必要はなく、必要な場所でリポジトリを作成するだけです。 –

    1

    リビジョンは、コードを簡単に分岐/マージするための変更セットとして概念的に整理されています。 SVNのブランチをマージすることは、非常に辛い経験です。

    関連する問題