web-dev-qa-db-ja.com

Git vs Mercurial vs SVN

可能性のある重複:
ホームプロジェクトの場合、MercurialまたはGit(または他のDVCS)はSubversionよりも多くの利点を提供できますか?
Git、Mercurial、およびBazaarの相対的な長所と短所は何ですか?

これらのソース管理システムの違いは何ですか?小さな2人のプロジェクトに最適なのはどれですか?

43
Yaso

SVNは、すべてのユーザーがプルしてコミットする必要がある単一のリポジトリであるという点で、GitおよびMercurialとは異なります。

GitとMercurialには分散モデルがあります。これは、すべてのコンピューターにリポジトリがあり、通常、変更をコミットおよびプルするために人々が選択する「公式」リポジトリがあることを意味します。

GitとMercurialは非常に似ています。 Mercurialの方がずっと使いやすいと思うので、私はMercurialを好みます。 2人のチームにはMercurialをお勧めしますが、それは私の意見です。バージョン管理に慣れていない場合は、オプションの使用方法を学ぶために時間を費やす必要がありますが、Mercurialは私にとって最も簡単なように見えました。

Mercurialリポジトリを起動するには、シェルを開いてバージョン管理を行いたいディレクトリにcdし、hg initと入力するだけです。これでリポジトリが作成されます。フォルダー内のすべてをリポジトリーに追加するには、hg add .と入力します。他のさまざまなコマンドを次に示します。

  • ローカルの変更をコミットするには:hg commit -m "Descriptions of changes"
  • サーバーから最新バージョンを取得するには:hg pull
  • ローカルの変更をプッシュするには:hg Push
53
Conceited Code

そもそも、それらが書かれている言語があります。GitとMercurialでの私の経験は非常に似ていますが、Mercurialを微調整したい場合はPythonで書かれているのでできることを知っています。 Gitは少なくともCには多少ありますが、私はそれほど詳しくはありません。

GitとMercurialは分散と呼ばれるものです。すべてのコピーは平等に作成され、アドホックベースで互いの変更をプッシュおよびプルできます(その用語を使用)。一方、Subversionは単一の中央リポジトリで構成され、各作業コピーはその中央サーバーのスレーブであり、プッシュとプル(この場合はコミットと更新)だけで変更されます。

数人のためにGitまたはMercurialをインストールするには、同じサーバーへのSSHアクセスを取得し、いくつかのパッケージをインストールする必要があります。一方、SVNについては、Apacheの下で実際のサーバーアプリケーションを構成して実行し、それを保護するためにSSL証明書や.htaccessなどを混乱させる必要があります。

私のすべての個人プロジェクトでは、MercurialまたはGitを使用します。私が大規模なチームで働いていた場合、認証とホスティングが一元化されるため、おそらくSubversionに行きます。ただし、2人の場合は、分散認証の1つを選択します。これは、認証とホスティングを集中管理する必要がないためです。 :-)

16
jacobbaer

GitとMercurialは非常によく似ています(ただし、注意が必要な程度に異なっています)。一方、SVNはまったく異なります。最初の2つは分散型VCSであるため、SVNには必要ですが、中央サーバーは必要ありません。一般に、多くのプロジェクトが分散システムに移行しています。

あなたの小さなプロジェクトでは、おそらくGitまたはMercurialを使用したほうがよいでしょう。どちらを選択するかは基本的に好みの問題ですが、私はGit自身を好みます(そして、Gitにはもっと精通しています)。サーバーをセットアップする必要はまったくありません。SSHを介して変更をプッシュ/プルすることも、相互にパッチをメールで送信することもできます(これはVCSから直接行うことができますが、面倒です)。中央サーバーはいつでもセットアップでき、すべての変更はそこにあります。あなたが使用することができますプロジェクトをホストするGitHubまたはGitorious(Gitを使用している場合、Mercurialについては知りません)。

6
goffrie