非常に小規模なチーム (1 人の開発者) に推奨されるソース管理システムは何ですか?
価格は関係ありません。顧客は支払うでしょう:-)
私はVista32でVS 2008をC++で使用し、その後C#でWPFを使用して作業しています。このために追加の (物理) サーバーをセットアップするのは、やり過ぎのように思えます。
ご意見はありますか?
26 に答える
Subversion を使用します (実際に使用しています) [更新: 2014 年 7 月 -- 私は Git を使用しています -- 回答の最後を参照してください]。SVN は次のとおりです。
- 自由、
- 十分です(以下の欠点を参照)、
- 単純、
- Windows (および Linux も) で正常に動作し、
- 利用者が多いので相談しやすい
- ほとんどの IDE、つまりVisual Studio (つまり、 ankhsvnまたはVisualSVN --詳しくはこちら) またはEclipse (つまり、 Subclipse --誰かがそれについて尋ねたところ) と統合できます。
ソース管理サーバーとは別のマシンを強くお勧めします。せいぜいクラウド上のどこか。利点:
- 開発ボックスが停止しても、ソース管理リポジトリが失われることはありません。
- もう 1 つのボックスのメンテナンスについて心配する必要はありません。
SVN リポジトリをホストする会社があります。
さまざまなオペレーティング システムの SVN (クライアントおよびサーバー) パッケージへのリンクを次に示します。
SVN の欠点
私は約5年間WindowsマシンでSVNを使用していますが、SVNにはいくつかの欠点があることがわかりました:)。
大規模なリポジトリでは遅い
SVN (またはそのクライアント -- TortoiseSVN) には大きな欠点が 1 つあります。SSDドライブがない限り、大規模な (数千のファイル) リポジトリで (更新中またはコミット中に) 非常に遅くなります。
合併は難しいかもしれません
多くの人が、SVN とのマージがいかに難しいかについて不満を漏らしています。
私は約 4 年間 (CVS での約 2 年間を含む - これはひどいものでしたが実行可能でした)、SVN で約 2 年間のマージを行います。
個人的には難しいとは思いませんが、CVS でブランチをマージした後のマージは簡単です :)。
私は大きなリポジトリ (実際には 2 つのリポジトリ) を週に 1 回マージしますが、解決が困難な競合が発生することはめったにありません (ほとんどの競合は、私が使用するdiffソフトウェアで自動的に解決されます)。
ただし、少数の開発者のプロジェクトの場合、いくつかの単純なルールを守っていれば、マージはまったく問題になりません。
- 頻繁に変更をマージし、
- さまざまなブランチで同時に活発な開発を行うことは避けてください。
2011 年 7 月に追加
多くの開発者は、 GitやMercurialなどの分散バージョン管理を推奨しています。
単一の開発者の観点から、SVN に対する DVCS の重要な利点はわずかです。
- DVCS の方が高速です。
- 中央リポジトリにアクセスせずに、ローカル リポジトリにコミットできます。
- DVCS はホットなものであり、使用/学習するのに魅力的です (誰かがあなたの学習にお金を払った場合)。
また、単一の開発者の場合、マージは問題ではないと思います。
Joel Spolsky はMercurial についてのチュートリアルを書きました。これは読む価値があります。
したがって、DVCS には多くの利点がありますが、マージや速度が問題にならない場合は、SVN を使用します。
または、 thisおよびthis SO の質問によると、(2011 年 7 月に) Windows でより適切にサポートされているMercurial を試してください。
2014 年 7 月に追加
約 1 年間、私は Git (主に Git Bash) を自分のペット プロジェクト (オイラー問題の解決) に使用しており、各オイラー問題のローカル ブランチは、DVCS の利点として説明されているとおり、非常に優れた機能です。
現在、Windows 上の Git ツールは、2 年以上前よりもはるかに優れています。リモート リポジトリ (GitHub や ProjectLocker など) を使用して、プロジェクトのコピーをワークステーションから遠ざけることができます。余分な労力やお金は必要ありません。
ただし、GUI クライアントは差分を確認するため (および、コミットするファイルを選択する場合もあります) にのみ使用するため、コマンド ラインを恐れない方がよいでしょう。これは非常に便利です。
したがって、今日からは Git を使用します。
Mercurialもお勧めします。コマンドセットはSubversionで見られるものとよく似ているため、学習曲線はそれほど急ではありません。前述のように、ローカルで実行するように設計されていますが、変更をコンピューター間で共有/マージしたり、バックアップのためにリモートサーバーにプッシュしたりすることも簡単です。
TortoiseHGのような優れたツールを提供し、NetBeansとEclipse用の優れたプラグインを備えています。また、Pythonで記述されているため、Win32でもネイティブに実行されます。
サーバーを自分でセットアップしたくない場合(バックアップなど)、無料のホスティングプロバイダーを利用できます。TheMercurialWikiに包括的なリストがあります。
私は間違いなくgitをお勧めします
大小のチームの両方に最適です。唯一の欠点は、ネイティブ ウィンドウのサポートが不十分なことです。Cygwinでは問題なく動作しますが。ネイティブの Windows ポートも存在します。
その利点のいくつか:
- ノンリニアなワークフローを強力にサポート。その分岐とマージは、たとえば Subversion よりもはるかに優れています。
- リポジトリをナビゲートするための優れたツール
- 大規模なプロジェクトをうまく処理します。
- リポジトリの暗号署名を変更せずに履歴を変更することはできません
- モノリシックな設計ではないため、スクリプトを作成するのは簡単です。
急な学習曲線があることに気付く人もいます。しかし、一度理解すれば、それを使ってやりたいことはほとんど何でもできます。
Subversion と tortoiseSVN を使用してください。サーバーにセットアップする必要はありません。
- コストはゼロ
- Subversion のドキュメントは素晴らしく、読むのが楽しいです
- tortoiseSVN はとても便利なクライアントです
Sourcegear の Vaultは優れたオプションです。SqlServer で実行され、長年使用されています。VSS (Visual Source Safe) のどのバージョンも使用しません。
Subversion の参入障壁は非常に低いです。
TortoiseSVNは無料のクライアントで、マウスの右クリック メニューでエクスプローラーに統合されます。
リポジトリは、PC またはネットワーク ドライブのどこかにある単なるディレクトリです。バックアップとは、このディレクトリを圧縮することを意味します
Subversion 用の Visual Studio へのプラグインがいくつかあります。AnkSvnは私が使用したプラグインです。無料で、うまく統合されます (つまり、ファイルの移動や削除などについてスマートになります)。
Subversion は、1 人の開発者にとって適切な選択です。
アップデート:
この投稿以来、私は Mercurial を使用しています。分散SVNです。「分散型」の側面は、単独の開発者にとっては直接的には役に立たないかもしれませんが、マージに優れており、多少高速です。無料の優れた Windows Explorer 拡張クライアント、 Tortoise Hgもあります。
つまり、まとめて言うと、あなたが一度に多くのブランチで作業する (スパイクを行うなど) 人、または一度に複数の PC で作業し、両方の履歴をチェックインするための完全なオフライン アクセスが必要な場合は、Mercurial . 単純な追跡と、実績があり理解しやすいソリューションが必要な場合は、Subversion .
Perforceについて誰も言及していないことに驚いています。2 人まで無料で、非常に高速で、VS と統合されています。また、ソースサーバーにはデフォルトでバインディングがあります。
ソース管理に加えて、ループを完了してシンボル サーバーとソース サーバーをセットアップすることは本当に価値があります。これにより、出荷したものを簡単にデバッグできます (たとえば、バイナリに一致する pdb やソースを検索する必要がなくなります)。 . ソース サーバーとシンボル サーバーはどちらも完全に無料で、2005 年から VS でサポートされています。
私はマーキュリアルを使用しています。他の依存関係を必要とせずに、私の Vista 開発システムでスタンドアロンで実行されているトリートを実行します。コマンド ラインを使用しますが、エクスプローラーと統合するTortoiseHGもあります。
2 つのコメント:
- おそらくVSとよりよく統合する他のツールがあります。Subversion には優れた VS プラグインがあると思います。
- 別のサーバーの利点は、HDD が故障した場合などに備えて、すべての作業の優れたバックアップになることです。
編集: @Slartibartfast - 単一のマシンでソース コード管理を実行したいだけの場合、git や Mercurial などの分散型ソース コード管理ツールは、サーバーのオーバーヘッドなしでマシン上で完全なリポジトリを実行するように設計されているため、理想的です。変更をプッシュおよびプルするために自分のリポジトリを他の誰かのリポジトリに決して接続しないという事実は、そのツールが正しくないという意味ではありません。
ビジュアル スタジオ ソース セーフの代替ツールであるSourceGear の Vault を使用できます。IDE は Visual Studio に統合されています。
このツールは、シングル ユーザーは無料です。
この問題には、集中型 VCS または分散型 VCS (DVCS) という 2 つの解決策があります。
Subversion のような集中型 VCS は、ログのコミットと閲覧の機能を満足させます。また、ハード ドライブの障害は常に発生する可能性があるため、レポジトリを別のコンピューターに安全に保存できます。これは、主要な目標の 1 つです。ただし、Subversion を使用すると、履歴は依然として中央の場所にのみ存在し、脆弱になるため、別のサーバーを持ちたくないと述べました。
Mercurial や Git などの分散バージョン管理システム (DVCS) を使用すると、リポジトリでより複雑な操作を実行できます。これらのツールの両方を使用すると、リポジトリ全体が同じコンピューターに存在するため、バックアップを作成したり、ラップトップなどの別のコンピューターでリポジトリを使用したりすることが少し簡単になります。Mercurial は最初は複雑に見えるかもしれませんが、Subversion で使用する操作は Mercurial とほとんど同じです。したがって、すでに Subversion を知っていて、後で Mercurial のより高度な機能を簡単に使用できる場合は、開始するための追加のオーバーヘッドはありません。
Mercurial リポジトリ用のオンライン リポジトリ サービスを見つけて、必要に応じて簡単にバックアップを作成し、いつの日か共同作業を行うことができるはずです。
私のお勧めは Mercurial with TortoiseHg です。
ソース管理システムは、関係する開発者が 1 人しかいないかどうかは気にしません :)
以前に使用して気に入ったソース管理システムを使用することをお勧めします。
ただし、ソース管理システムの 2008 統合が好きな場合は、TFSを使用しますが、セットアップの経験はありませんでしたが、それほど難しくはありません。
もう 1 つの可能性は、svn (Google でいくつかのサーバーを見つけることができます) を使用し、Windows シェルに統合され、使いやすいTortoisesvnを使用することです。
多くの投稿は、冗長性を提供するため、リポジトリをサーバーに配置することを推奨しています。これが単一のユーザーにとってそれほど役立つとは思いません。別のサーバー マシンを使用すると複雑さが増しますが、冗長性はあまり得られません。サーバー マシンを紛失しても、開発用マシンには現在のソースがまだ残っていますが、すべての履歴が失われる可能性があります。サーバーが定期的にバックアップされている場合、リポジトリをサーバーに配置することは理にかなっています。リポジトリに外部ホスティング サービスを使用すると、ストレージの冗長性を提供できますが、外部サービスに翻弄され、リポジトリにアクセスするにはインターネット接続が必要です。外部ホストを使用する場合は、管理しているリポジトリのバックアップを頻繁に作成してください!
私は、ローカル ファイル ベースのリポジトリを使用する TortoiseSVN を個人的にお勧めします。ローカル リポジトリを 2 台目のマシンまたは外部メディア (CD-ROM など) に定期的にバックアップするようにしてください。
私は2つのことをお勧めします:
まず、他のサーバー-マシンが停止した場合はどうなりますか?家が全焼しますか?冗長性の観点から、別のマシンにインストールすることをお勧めします。
2つ目は何ですか:
ビジュアルソース(安全でない)に精通している場合は、SourceGearVaultについて考えてください。これは非常に素晴らしく、非常に高速で、VSSの「クローン」が大幅に改善されています(つまり、内部ではなく、ユーザーのPOVから同じように機能します)。SQLサーバーとWindowsが必要です(.NET + SQLサーバーです)。1ユーザーは無料。
そうでない場合は、次の2つのいずれかを実行することをお勧めします。
まず、VisualSVNを入手します。それは素晴らしいです、VS2008で本当にうまく動作します。次に、ローカルで実行する必要がある場合は、VisualSVNサーバーを入手してください(無料です!)。適切なバックアップ計画があることを確認してください。XP / 2003/2008 /Vistaなどで実行されます。内部ではApache+SVNであるため、セットアップを節約できます。インストールして実行するのに5分かかりました。
または、私はこれを好みます:
Unfuddle、Dreamhostなどの場所に行き、SVNのホスティングを取得します。それはプライベートで、高速で、そして何よりも、オフサイトです。私のdreamhsotアカウントは、500GBのストレージと1〜2TBの転送/月のようなクレイジーなもので、月額約$ 6です!SVNホスティング+バグ追跡などを行う他のものがあります。周りを見回してください。
しかし、ええ-SVNはschizzzznitです。ローカルリポジトリを作成することもできますが、私はリモートのバックアップサーバーが好きです。
TFSは合計であり、1人の開発者(または<5 IMO)にとっては完全にやり過ぎです。
しばらく前に、SVN を 1 人の開発者だけで使用する方法についてのブログ投稿を行いました。私はそれをシングルサービングソースコントロールと呼んだ
Bazaarは優れたバージョン管理システムです。別のリポジトリを作成する必要がないため、Linux 構成に使用するのが好きです。
コストが問題ではないことは理解していますが、チェックインとチェックアウトを必要としない優れた無料のソリューションは、Dropbox内でコードをホストすることです。開発者システムが提供します。
私はここ数週間バザールと仕事をしていて、本当に気に入っています。私はLinux開発者なので、Tortoisについてはあまり詳しくありませんが、気に入った場合はTortoisbzrがあることを知っておく必要があります。
私はgitを使用しますが、単一の開発者がgitを使用したい理由は、gitmagicで示唆または説明されていると思います。
ここにいくつかの良い答えがあります。
専用のマシンである必要はありませんが、別のコンピューターを使用してソース管理サーバーをホストするという提案を繰り返したいと思います。Windows Home Server ボックス、または既に実行している他のサーバーである可能性があります。または、他のサーバーでホストされている仮想マシンである可能性があります。とにかく、コードを書くマシンから分離するだけです。
また、サーバーの適切なバックアップ規則を取得することをお勧めします。少なくとも毎晩何か。できれば毎時。専用デバイス (外付けハード ドライブなど) またはオフサイト (別の州のいとこの家にあるサーバー) またはクラウド (Amazon S3) にバックアップします。ソース コードは重要な資産であることを忘れないでください。大事にしてください!
まず、分散型のサーバーは必要ありません :) この物理的な部分が何を意味するのかわかりません。自分のマシンに svn サーバーを問題なく配置できるからです。
一方、NetBeans には、ファイルのすべてのローカル変更を記録するローカル履歴モジュールがあります。Visual Studioに似たようなものがあれば、おそらくそのようなもので十分でしょう。
単一の開発者向けであり、複雑なマージや多くのログ/履歴チェックを行っていないことを前提としているため、Subversion をお勧めします。
多くの人がホスティングにhttp://svnrepository.com/を使用しているようです。Trac が付属しており、後で必要になった場合は Git も付属しています。
subversionの使用をお勧めします。多くの人が、開発マシンが停止した場合に備えて、サーバーとして別のボックスを使用することを推奨しています。SVNサーバーが停止するとどうなりますか?ここでの答えは、サーバーの実行場所に関係なく、常に頻繁にバックアップを実行するようにし、場合によっては、セカンダリの、できればオフサイトのマシンに毎日自動化することです。
PERFORCEは、主に職場で使用しているため、個人的なものにも使用しています。それにはemacsバインディングもあるので、すべてemacs内から同期したり、チェックインまたはチェックアウトしたりすることができます。
私は最近、自分のスタジオを Subversion から Perforce に移動し、それに関するいくつかのメモ (事後調査のようなもの) をブログ (こちら) に掲載しました。それが役に立つことを願っています。
あなたの 1 人の開発者がソース管理の問題で何かを変更する理由がわかりません。私は同じシステムに従います(実際、私はソロプロジェクトでそうしています)。そのような場合、 wush.net (svn と trac)を使用します。セットアップは迅速で、サーバーの問題を自分で行ったり知ったりする必要はありません。このようなものを使用することをお勧めします。