私は2つのバージョン管理システム(Subversionとgit)を知っており、使用しています。現在のところ、Subversionは私が唯一の開発者である個人的なプロジェクトに使用されており、gitはオープンソースプロジェクトや他の人もプロジェクトに取り組むと信じているプロジェクトに使用されています。これは主に、誰もが自分のブランチで作業できるgitの驚くべき分岐およびマージ機能が原因です。とても便利な。
今、私は個人的なプロジェクトにSubversionを使用しています。gitはほとんど意味がないと思います。少しやり過ぎのようです。私が唯一の開発者である場合、(通常はホームサーバーに)集中化されていても問題ありません。とにかく定期的にバックアップを取ります。自分のブランチであるメインブランチを作成する機能は必要ありませんis私のブランチ。はい、SVNは分岐を簡単にサポートしていますが、それより強力なサポートは意味がないと思います。マージはそれに苦労するかもしれませんし、少なくとも私の小さな経験からは。
個人的なプロジェクトでgitを使用する正当な理由はありますか、それとも単にやり過ぎですか?
やり過ぎではありません。私が個人的なプロジェクトでSubversionよりもGitとMercurialを使い始めた主な理由は、リポジトリの開始がはるかに簡単だからです。
新しいプロジェクトを始めたいですか?
> git init
BAM! Subversionリポジトリへの分岐とタグをサポートするために、リポジトリサーバーをセットアップしたり、フォルダ構造をチェックインしたりする必要はありません。
後でプロジェクトを共有することは、git Push
の問題です(リモートリポジトリを除く)。 Subversionでそれをすばやく実行してください!
ローカルの個人プロジェクトにSubversionを使用するのはやり過ぎですが、Gitは明らかにそうではないと私は主張します。 Gitは占有スペースが少なくなります(Gitのオブジェクトスナップショットに対するSVNの非効率的な「リビジョン」の概念のため)、必要なセットアップ(git init
と12のsvnadmin
コマンドおよびパーミッションの設定など)を比較すると、バックアップが簡単です(git clone --bare
[またはgit Push Origin
Githubまたは類似のものを使用して、完了したら)、コードを管理するための優れたツールがあります(分岐は無料で、マージはより簡単でクリーンです)。他の誰もあなたのリポジトリのクローンを持っていないからといって、DVCSの利点が「過剰」であるとは限りません。
さらに、Gitの分岐サポートはSVNほど複雑ではなく、報酬も高くなります。
自分のコードを分岐しないと考えるのは少し近視眼的です。自分のコードを何度か分岐しました。特に、新しいアプローチを実験しているときは、まだ完全には確信していませんでした。最終的には機能が必要になります。
これは、長い間Subversionユーザーからのものです。 1つのツールに統合することは、本当にあなたの人生を楽にするのに役立ちます。
オーバーキルは、「解決策」によって引き起こされた付随的な損害がある場合に予約されます。銃を使ってハエを殺すことは、弾丸が他の場所に移動することによって引き起こされる損傷があることを意味します。やり過ぎです。問題を引き起こさない、必要以上に強力なものを使用することは、やり過ぎではなく、開発プロセスを合理化するのに役立つ場合は良いことです。害を及ぼすことはなく、ソフトウェアを2つではなく1つだけ更新する必要があります。では、なぜ1つのシステムではなく2つのシステムに悩むのでしょうか。
私は自分の1人のプロジェクトでGitを使用していますが、大好きです。私は以前Subversionを使用していましたが、Gitを使用することのマイナス面はまだ見ていません。それはより強力ですが、単純なものをより複雑にする方法ではありません。単純なものを不必要に複雑/高価/低速/などにする。私見は、やり過ぎを呼ぶために必要な条件です。また、Githubでは、以前は1人で作業していた他の人のプロジェクトをフォークして、必要な機能を追加し、プルリクエストを送信しました。私のプロジェクトに関心のある誰かが同じことをしたとしたら、それはとてもクールだと思う。
私never DVCSの前に個人プロジェクトでソース管理を使用したので、反対の見方をしている人を想像するのは少し奇妙です。私の理由のいくつかは:
git-bisect
は、入力に応じてコミットを前後にナビゲートすることにより、特定の動作をもたらした正確なコミットを見つけるのに本当に便利です。
あなたはwill何が起こったのか単純に理解できないことに対して、いつかそれをしなければなりません。
編集:また、顧客が使用する古いバージョンでバグ修正を行う必要がある場合は、分岐する機能が非常に重要です。 「この小さなことを修正するだけで、今は何度もテストしたくないので、最新バージョンを使いたくありません」を管理できなければなりません。
それはあなたがあなた自身のコードをバージョン管理することについてどれだけ真剣に望んでいるかに依存します。作成しているものが、たとえば現在のバージョンのみが存在する(またはそれが当てはまる限り)単純なライブラリである場合、私はDropboxのような基本的なバックアップオプションを使用します。すべてのコードを紛失した場合、Webからコードを復元できます。Dropboxは、本当に馬鹿なことをした場合、30日間のバージョンバックアップを持っています。
ただし、たとえばProductionブランチとDevブランチを維持する必要がある場合、gitは絶対に優れたツールであり、svnよりもはるかに高速です。ただし、データをローカルにのみ保存する場合は、ハードドライブ障害のリスクに注意してください。
私は常に、常に、常にany種類の開発プロジェクトにバージョン管理システムを使用します。大きくても小さくてもかまいません。ある種の新しいテクノロジーを自宅で使用している場合でも、人生を楽にするための小さなヘルパーを作成している場合でも、大規模で分散したチームで専門的に開発している場合でも、常にバージョン管理システムでバックアップしてください。
確かに、小さな個人プロジェクトのほとんどの場合、ほとんどの機能は使用しませんが、Gitリポジトリ(またはローカルのSubversionリポジトリ)の設定は大したことではないので、ぜひお試しください。そして、それを知る前に、「いまいましい、先週の金曜日のファイルXの内容は何だったのか」を知りたくなるでしょう。バージョン管理なし-頑張ってください;-)
ですから、gitとSVNのどちらを使用するかは問題ではありません。個人的には、SVNからgitへの移行を始めていますが、主なことは、バージョン管理をまったく使用しないことです。
だれもそれについて言及していないからです。個人的なプロジェクトの場合、darcsは本当に優れており、単純なバージョン管理を行うためにgitよりも関与が少なくなっています。大規模なプロジェクトではそれほど高速ではありませんが、Subversionでも高速ではありません。
私たちがやっていることは実験であることを理解することは、強力な精神的パラダイムシフトになる可能性があります。これをサポートする安価で簡単なツールがあれば、一部の実験がうまくいかなかったときに実験を取り消す能力が高まるため、前進する能力が高まります。
多くの開発者は言う、まあ私は自分のコードのコピーを作成するだけです。しかし、これらのコピーは管理が困難になり、混乱してしまいます。複数のコピーがあり、どのコピーを何のために覚えているのか分からないので、それらを削除しても安全かどうかを判断します。
実験が複数のファイルにわたる調整された変更を伴う場合、これらすべてはさらに価値が高くなります。そして、それがソロの場合、Gitを使用するとさらに簡単になります。
ソロプロジェクトで使用するべきかどうか迷う代わりに、これほど早く発見できなかったのは残念なことです。