会社のバージョン管理システムを選択したい。これまでのところ、Git、Subversion、Mercurialがあることを知っています。
最近はGitが最もよく使われているので、Subversionを引き続き使用する特定の理由があるのか、それとも直接Gitにアクセスする必要があるのかと思います。
SVNはまったく死んでいません。それはまだ非常に広く使用されており、すぐにはどこにも行きません。 SVNは、特に必要分散バージョン管理である分散プロジェクトを実際に実行していない場合は、分散バージョン管理よりもはるかに使いやすいです。
中央リポジトリが1つしかない場合(これまでのところソース管理なしで十分に小さい場合に会社で必要なのはこれだけです)、SVNを使用してそれとやり取りする方がはるかに簡単です。たとえば、SVNを使用すると、単一の操作でリポジトリから変更をプルしたり、ローカルの変更をコミットしたりできますが、HGとGitは同等の作業を行うために2つまたは3つの手順を必要とします。
また、最近の改訂により、SVNはパフォーマンスの問題の多くを修正し、人々がHGとGitを好むようになりました。数年前よりもはるかに高速になりました。現時点では、分散バージョン管理の高度な機能が実際に必要でない限り、プロジェクトでHGやGitを検討する正当な理由はありません。
クライアントツールについてはまだ言及されていません。コマンドラインスクリプトですべてを実行できますが、GUIの統合により、生産性が大幅に向上します。
主にVisual Studioを使用しています。 IDEへの統合は、現在GitよりもSVNの方が間違いなく優れています。これは将来的に変更される可能性がありますが、バージョン管理機能と同じくらいあなたの決定にこれを考慮に入れます。
他のすべてと同じように、バージョン管理システムはそれ自体が目標ではなく、目的の場所に到達するためのツールにすぎません。状況に応じて、最も早くアクセスできるものを選択してください。
私はGitのファンです。最近、私はGitの欠点の1つが、svnのリリース番号とは逆に、ハッシュを持つバージョンを識別することであることを認めざるを得ませんでした。リリース番号は電話などで簡単に伝えることができます。
そして、それは私が想像できる唯一のプロです。本当にその機能に依存したい場合は、分散型および/または集中型VCS Bazaar で使用できます。 Gitには目的を果たすことができるタグがあります。
とにかく、ブランチをすばやく切り替えたり、隠したりせずに開発を想像することはできませんでした。これらの2つの機能だけでSVNを打ち負かすことができます。同じ目標を達成するには、ツリー全体を個別のディレクトリに作成してチェックアウトする必要があった同じタスクを覚えています。
これらはいわゆる「分散バージョン管理の高度な機能」と呼ばれるもので、最初から習得する必要はありません。それらを怖がらないでください。彼らはあなたを助けるためにここにいて、邪魔をするためではありません。また、DVCSの中央リポジトリを設定しても問題はありません。
「6時間で実行できるタスクがある場合、ツールの作成に6時間かかる場合でも、20分で実行できるツールを作成することをお勧めします。」
分散バージョン管理は、取り組むべき別の獣です。開発者ごとに十分な学習が必要です。各開発者の学習プロセスに対応するバッファーがある場合は、優れた分散バージョン管理システムに移行する必要があります。学習フェーズが終了すると、分散バージョン管理は集中バージョン管理よりもはるかに優れています。
分散バージョン管理は偶然のようです。ここは非常に長い期間滞在するためにここにあります、私たちはそれよりも早くそれに適応する方が良いです。 SVNが新しく、人々がCVSに慣れていたときの同じ議論を覚えています。SVNを使用しないことについて多くの議論がありましたが、最終的にはSVNが最も人気のあるバージョン管理システムになりました。
会社が既存のバージョン管理システムの多くのソースコードで確立されている場合、新しいシステムへの移行は大きな仕事ですが、会社が小規模または新興企業の場合、新しいバージョン管理への移行は非常に簡単です。しかし、(新しいセットアップで)古いバージョン管理に固執すると、将来どこかにボトルネックが発生し、最終的にはとにかくバージョン管理の移行を計画する必要があります。
私はたくさんのプロSVNコメントを見てきましたが、それらはすべて、「SVNの方が良い」というよりは「SVNは悪くない」という性質を持つ傾向があります。したがって、プロジェクトには分散バージョン管理(Gitなど)を選択することを強くお勧めします。
[〜#〜] edit [〜#〜]SVNに対するGITの利点
誰かがSVNに固執する理由として(ビジュアルスタジオ用の)ツールについて言及しました。 http://gitscc.codeplex.com/ は、Visual StudioのGITサポートを提供します。
SVNを使用すると、リポジトリの一部をフォルダレベルまで簡単にチェックアウトできますが、gitを使用すると、すべての履歴を含むリポジトリ全体を取得できます。
状況によっては、これはSVNにいくつかの利点があるかもしれません
(これには、隠された「.svn」ガベージがフォルダーツリー全体に及ぶなど、いくつかの大きな欠点もあります)。
当時Subversionを使用する特定の理由があるでしょうか
IDEでのツールのサポート(私は使用しません)は別として、実際はそうではありません。もちろん、SVNの方が馴染みがあるかもしれませんが、それが唯一の理由であり、HgとGitの両方を非常に簡単に(そして非常に速く)学ぶことができました。
はい、ブランチはヒルベルト空間の部分多様体をマッピングする同形の内部関数であると理解すれば、Gitがどのように取るに足らないかを説明するすべての複雑なガイドがあります。1
分かりません。しかし、あなたは何を知っていますか?それは問題ではありません。 Gitを使用するためにそれらのことを知る必要はありません。
ほとんどの場合、GitとHgは使いやすく、SVNよりも明らかに有利です。部屋の象はもちろん枝分かれです。枝はGitとHgで動作します。対照的に、SVNでは、それらは最高で痛みを伴い、最悪の場合は壊れます(複数のヘッドのマージ)。
もちろん、あなたはcanでまだSVNを使用しています。 Windows XPも引き続き使用できます。ただし、両方を試したユーザーの大多数は、代替策の1つが非常に優れていることに同意しています。
1 はい、これは冗談です。おもう。