ソース管理の初心者として学ぶのに最適なバージョン管理システムは何でしょうか?
16 に答える
Visual Source Safe 以外のもの。できれば、分岐とマージの概念をサポートするものです。他の人が言ったように、特に TortoiseSVN クライアントでは、Subversion が最適です。
必ずチェックしてください (しゃれを許してください) Eric Sink の古典的な一連の Source Control HOWTO 記事。
たとえば、ワンクリック SVN インストーラーを使用して、Subversion を試すことをお勧めします。SO で「Subversion」を検索してみてください。優れたチュートリアルを示す回答を含む多くの質問が見つかります。
幸運を!
私はGitに直行します。以前に転覆を使用したことがありますが、いつも間違っていると感じていました。Git は初日から理にかなっています。
役立つリソース:
学ぶことが重要であると私が考えるコアコンセプトがいくつかあります。
- チェックイン/チェックアウト (当然)
- ローカル バージョンとサーバー バージョン
- ローカル ワークスペースをリモート ストアまたはリポジトリにマッピング/バインドします。
- 自分の変更を、他のユーザーからの変更を含むファイルにマージします。
- 分岐(それが何であるか、いつ/なぜそれを使用するか)
- ブランチからの変更をメイン ブランチまたはトランクにマージします。
ほとんどの最新のソース管理システムでは、上記のトピックに関するある程度の知識が必要であり、学習を容易にするのに役立ちます。次に、分散ソース管理があります。私は経験がありませんが、かなり複雑で、初心者には適していない可能性があります。
Subversionは、必要な最新の機能をすべて備えており、無料であるため、優れています。
Gitもますます人気のあるオプションになりつつあり、Subversion のもう 1 つの無料または非常に低コストの代替手段です。ただし、Git を使用するには、分岐とマージの概念に関する知識が重要になります。
Git と Subversion の両方を試すための無料で簡単な方法としてunfuddleを使用できます。過去に取り組んだいくつかのサイド プロジェクト用に、いくつかの Subversion リポジトリをホストするために使用しています。
私は高度なソース管理ユーザーではありませんが、学習しています。ソース管理製品に関する私の経験は次のとおりです。
昔、私が働いていた会社は、ソース管理を使用することにしました。彼らはその概念を開発者に紹介し、eveyoneに試してもらいました。彼らはPVCSを使用することを選択し、それを実装しました。やがて、開発者はモジュールとオブジェクトをロック/ロック解除するために調整する必要があり、実際にはあまりメリットがありませんでした。
数年後、私はオープンソースプロジェクトの作成をいじっていました。当時、rubyforgeはCVSリポジトリを提供していました。私はそれを試してみました、そしてそれはPVCSよりわずかに良かったです。確かに、リポジトリを使用しているのは私だけでした。ただし、ファイルの構造を再配置しようとすると、最初にインポートした方法が気に入らなかったため、イライラしました。CVSでは実際にはうまくいきませんでした。
その数年後、私は別の個人的なプロジェクトに取り組んでおり、私のWebホスティングプロバイダーは、セットアップが簡単なSubversion(SVN)リポジトリを提供していました。正しく稼働させるには少し調査が必要でしたが、最初の学習曲線を超えて、気に入ったのです。
その後間もなく、私はソース管理が好きで、現在の仕事にはそれがないことに気づきました。そこで私は福音を伝えました。私たちはVisualStudioで作業しており、通常はMicrosoftショップであるため、長い間、私のチームはSourceSafeを実装しました。私はそれを使いたがっていましたが、やがてファイルが失われ、Visual Studioが間違った場所に物を置いていて、しばらくプロジェクトに取り組んでから、別の場所に作品をエクスポートすることに気付きました。そして、ソリューション内のプロジェクトの一部のみをエクスポートしないか、エクスポートするだけであることがわかります。これにより、「バージョン管理システム」を使用していると思っていても、最も安全で堅牢で完全なコードのコピーが作業コピーであることに気付きました。ソース管理が行うことになっていることの正反対。
先週、Source Safeにうんざりして、検索に行きました。いくつかの解決策を検討した後、私はgitを試してみることにしました。自分のやりたいことをやらせるための学習曲線が再びあったので、すべてがバラだったとは言いませんが、すべての仕事と個人的なプロジェクトをそれに変換するのに十分なほど気に入っています。それの本当に素晴らしい点の1つは、一元化されたリポジトリを必要としないので、インストールするために仕事で大量の官僚的形式主義を経験することなくそれを使用できることです。
つまり、gitをお勧めします。WindowsでMysysgitを使用します。これには、bashシェルを提供するという追加のボーナスがあります。Linuxでは、パッケージマネージャーからインストールできます。gitが気に入らない場合は、subversionを試してください。どちらも気に入らない場合は、おそらくCVSやPVCSも気に入らないでしょう。いかなる状況でもSourceSafeを試してはいけません、それはひどいです。
SourceGear.com の Vault は素晴らしいです。シングルユーザーは無料で、優れた VS 2005/2008 インターフェイスを提供します。大好きです!
rp
http://unfuddle.comのおかげで、SVN や git をインストールする手間が省けました。そこで無料のアカウントを取得して、それらのいずれかを使用できます。さらに、そこで OpenID を使用することもできます。
そうすれば、正しくセットアップする必要がなくなり、どのように使用するかに集中できます!
Source Safe はソース管理システムとしては良くないという意見には同意しますが、Joel Spolsky が言ったように、Source Safe を使用する方が「フロッピー ディスクを持ち歩く」よりもはるかに優れていることを覚えておいてください。
ソース管理をまったく行わないことのコストははるかに高くなるため、初心者にとっては悪い考えではないかもしれません。
各ツールには長所と短所があります。それはあなたの要件が何であるかという非常に重要な問題です. 残念ながら、この問題に関しては、他の多くの問題と同様に、多くの場合、選択されるのは最適なツールではなく、誰かが使い慣れたツールです。たとえば、多くのブランチを必要とせず、チームが小規模でローカルである場合、ほとんどすべての VC がその役割を果たします (SourceSafe を除く)。ブランチが必要な場合 (ほぼ必然的にマージも行う必要があることを意味します)、チームが分散している場合、高度なセキュリティが必要な場合 (下請け業者はソース ツリー全体にアクセスすることはできません)、タスク トラッキングなどが必要な場合は状況が変わります。ライセンスのコスト、メンテナンスのコスト (一部のツールは非常に複雑なため、実際にはリポジトリを制御するためだけに誰かが必要です)、トレーニングのコストです。
したがって、あるツールを別のツールよりも優先して提案することは、最適なプログラミング言語を提案するようなものです。
いくつかのポインタ:
- StarTeam は、私が使用したツールの中で最も簡単です。必要なトレーニングはほとんどありませんでした。私はメンテナーになることになったので、1日トレーニングを受けました。このメンテナンスにかかる時間は、1 週間に 30 分もかかりませんでした。私は 2 ページのマニュアルを書いてユーザーを「トレーニング」しましたが、その後、答える質問はほとんどありませんでした。
- 使いやすさに関する限り、Continuus はスケールの反対側でした。一方、タスク処理は素晴らしく、リリース管理を適切にサポートしてくれました。問題は、リリース マネージャーである私でさえ、開発者が行う日々の作業よりも、リリースの容易さ (方法を習得したことはありますが、それにはかなりの時間がかかりました) が重要であると考えたことはありませんでした。
- マージとブランチの作成は、ツールによって大きく異なります。git や ClearCase (後者は非常に遅いですが) のように、いくつかのツールはこれを簡単にします。マージを頻繁に行う必要がある場合、コストが高くなる可能性があります。また、ClearCase は、前述の 3 つのカテゴリすべてで高価でした (ただし、必要ではないすべての高度な機能を使用したと言わざるを得ません)。一方、Git には優れた UI がなく、一部の概念は慣れ親しんだものとは異なります。Git のセキュリティ機能も不足しています (gitosis はいくつかの問題に対処しますが、すべてではありません)。
- 私が使用したほとんどのツールも非常に遅いです。PVCS/Dimensions のようなツールはとにかく遅く (リポジトリ内のディレクトリを開くなどの基本的なこと)、より具体的な方法 (ClearCase など) で非常に遅いものもありました。
私が使用したツールの中から、開発者があまり経験のない場合 (そして、非常に高価なライセンスの支払いを気にしない場合) は StarTeam を選択し、環境をセットアップできる経験豊富な VC 担当者がオンボードしている場合は git を選択します。他の男に。Mercurial も興味深い競合相手のように見え、UI がわずかに優れているようです。
Continuus、PVCS/Dimensions、および ClearCase は、ほとんどすべてのプロジェクトにとって遅すぎ、複雑すぎ、高すぎます。誰かがこれらのいずれかを選択することを主張する場合、私は ClearCase を選びます。
多くの人が気に入っているように見える Subversion を使用していないので (これは近い将来変更されると感じています)、使用した他のツール (通常はビルドおよび/またはリリース マネージャー)。
最初に選択するツールに関しては、Git、Bazaar、および Mercurial の問題は、それらが分散型 VC であることです。これは、中央リポジトリを持つ従来のサーバー クライアント モデルとは異なります。物事を学ぶだけでも、概念について読むことをお勧めします。たとえば、分岐は、自分で試しただけでは正しく理解できない可能性があります (状況ごとに異なる分岐戦略があります)。さらに、リポジトリにアクセスするのがあなただけの場合は大きく異なります。たとえば、マージの競合は問題になりません (それらを見ることができるかもしれませんが、両方のブランチのコードを知っているので、簡単に修正することもできます)。もちろん、チェックアウト、チェックインなどについても学習しますが、そもそもこれらの問題は特に難しいとは思いません。
VC の追加の問題は、異なる用語を使用する傾向があることです。他の点では使いやすい StarTeam では、何らかの理由で「チェックアウト」および「チェックアウトしてロック」という用語の使用を主張しています。後者は、ほとんどの人が最初のものだと思っていることです。これには理由があります (排他ロックがなくてもファイルを編集できます) が、混乱を避けるためにこれらを「取得」および「チェックアウト」と呼ぶ方がはるかに理にかなっています。
開始時に商用製品を学びたい場合、PERFORCEは無料のクライアントとサーバーを提供し、サーバーは2人のユーザーと5つのクライアントワークスペースをサポートします。
私の以前の勤務先では、プログラマーによるコードだけでなく、アートアセットやゲームレベル、および私自身のドキュメントにも宗教的に使用されていました。
Subversion もお勧めします。セットアップにそれほど時間はかからず、無料です。基本的なトピックだけでなく、いくつかの高度なトピックについて説明している非常に優れた本がオンラインで入手できます。http://svnbook.red-bean.com/
Subversion は、開始するのに適した場所です。非常に安定した最新のバージョン管理システムです。Subversion の学習を開始するのに最適なオンライン リソースは、Subversion によるバージョン管理です。サーバーおよびクライアント ソフトウェアに関する限り、多くの選択肢があります。個人的には好みです(Windows環境向け)。
VisualSVN サーバー
TortoiseSVN シェル統合クライアントと
AnkhSVN Visual Studio Subversion アドオン
繰り返しになりますが、Subversion には多くのオプションが用意されています。また、(古い SourceSafe とは異なり) 常に進化しているバージョン管理システムです。多数の自動ビルド ツール (CruiseControl、FinalBuilder) およびバグ/問題追跡システム (JIRA) と簡単に統合できます。
最先端のバージョン管理システムをお探しの場合は、Git (Linus Torvalds が開発) をお勧めします。しかし、バージョン管理システムにまったく慣れていない場合は、Subversion から始めることをお勧めします。
なんでも、でも自分で git や subversion のような最新のシステムを学びます。私の最初の VCS は RCS でしたが、基本を理解しました。
そうですね、自分で学びたいだけなら、Subversion のような無料のものを使うべきだと思います。これまでソース管理を使用したことがない企業の場合、それは本当にニーズ次第です。
私が最初に触れたのは、WinCVS をクライアントとする CVS でした。ひどかった。次は Subversion で、TortoiseSVN と Eclipse が統合されました。それは直感的で、天国でした。TortoiseCVS と Eclipse で CVS を使用するのも良いと思いますが、私は SVN がリビジョンを処理する方法を好みます。個々のファイルではなく、チェックインごとにリポジトリ全体がバージョン管理されます。
tortoisesvn による転覆。(tortoisesvn は、何が起こっているかを視覚的に見ることができ、コマンド ラインに関する適切な出発点を提供するためです。) そこにはたくさんのドキュメントがあり、おそらくあなたのキャリアの中で少なくとも 1 つのポイントでそれを見るでしょう。私が働いてインタビューしたほとんどすべての会社が SVN を実行しています。