個人(1人)プロジェクトのgit。やりすぎ?


84

私は、Subversionとgitの2つのバージョン管理システムを知っています。現在のところ、Subversionは私が唯一の開発者である個人プロジェクトに使用され、gitはオープンソースプロジェクトや、他の人もプロジェクトで作業すると信じているプロジェクトに使用されます。これは主に、gitの驚くべき分岐機能とマージ機能が原因です。誰もが自分のブランチで作業できます。とても便利な。

今、私は個人プロジェクトにSubversionを使用しています。gitはほとんど意味がないと思うからです。それは少しやり過ぎのようです。私が唯一の開発者であるときに(通常はホームサーバー上で)集中化されていれば問題ありません。とにかく定期的にバックアップを取ります。私は自分のブランチを作る能力を必要としません。メインブランチ私のブランチです。はい、SVNは分岐を簡単にサポートしますが、それより強力なサポートは意味がありません。マージはそれで苦痛になるか、少なくとも私の小さな経験からです。

個人的なプロジェクトでgitを使用する正当な理由はありますか、それとも単に過剰に過ぎますか?


61
いいえ、個人プロジェクトにはgitとhgを使用します。ローカルのリビジョン管理ができることは天の恵みです。
wkl

7
多数の貢献者がいるかどうかに関係なく、Gitはすべてのプロジェクトで多くの点で優れています。他の誰かが貢献したい場合は障害になります。
アーティファクト2

4
私はそれは私のためのバックアップとして、サーバ、githubのか、ビットバケットのいずれかに私のコードをプッシュするバージョン管理を使用し、多分いつか私は実際に人々がで純粋に興味があるだろう何かを書きます。
マフムード・ホッサム

8
「自分のブランチを作成する能力は必要ありません。メインブランチは私のブランチです。」多くの人undoが、それがアプリケーションの比較的新しい機能である時期について同じことを言っていました。今では、誰もがずっとそれを必要としていたことを認識しています。あなたは分岐する必要があります、あなたはただそれを知りません。
ダンローゼンスターク

1
@rtpersonええ、それはできますが、私はgithubがbitbucketよりも好きなのに、実際は水銀がより好きです。
マフムードホッサム

回答:


155

やり過ぎではありません。個人プロジェクトにSubversionでGitとMercurialを使用し始めた主な理由は、リポジトリの開始がはるかに簡単だからです。

新しいプロジェクトを始めたいですか?

> git init

バム!リポジトリサーバーをセットアップする必要も、フォルダー構造をチェックインして、Subversionリポジトリへの分岐とタグをサポートする必要もありません。

後でプロジェクトを共有することは、次のことだけです:(git pushリモートリポジトリを持つこと以外)。Subversionを使用して、すぐにそれを試してください!


24
受け入れられました。私はgitがこれよりも過剰であることをもっと間違っていると証明することはできませんでした;)
アント

7
Steve341:私は通常、すべてのソースコードプロジェクトを「projects」という名前のフォルダーに保管しています。ソースコードプロジェクトごとに1つずつ、すべてのリポジトリを保持しています。同じVCSリポジトリで複数のプロジェクトを一緒に追跡する必要はありませんでした。それがIvyやMavenなどの依存関係管理システムの目的です。
スポイケ

3
@ Steve341このようなものを追跡するのはどのように難しいですか?すべてのリポジトリを含むフォルダーが1つだけあります。gitを使用する場合、システムが非常に悪いプラクティスであるという事実は別として、システムと同じです
代替案

2
@ Steve314:echo 'for dir in projects/*; do cd "$dir"; git push; cd ..; done' > update_all; chmod +x update_all
アンドレパラメス

2
git initそしてバム!そうそうcp ../the-other-project/.gitignore .、最初のコミットの前に。バム!
ダンローゼンスターク

46

私は、ローカルの個人プロジェクトにSubversionを使用するのはやり過ぎだと主張しますが、Gitは明らかにそうではありません。Gitは(SVNの非効率な「リビジョン」の概念とGitのオブジェクトスナップショットのため)占有スペースが少なくなり、セットアップが少なく(git init数十のsvnadminコマンドやパーミッションの設定などに対して)、バックアップが簡単です(git clone --bareまたはgit push originGithubを使用する場合またはこれで完了です)、コードを管理するための優れたツールがあります(分岐は無料で、マージは簡単でクリーンです)。リポジトリのクローンを誰も持っていないからといって、DVCSの利点が「過剰」であることを意味するわけではありません。

さらに、Gitの分岐サポートはSVNほど複雑ではなく、より大きな報酬があります。


「複雑な」の代わりに「強力な」を使用すべきだったと思います
アント

3
@Anto:関係ない。基本的に同じことを言います。Gitの優れた分岐には、SVNと比較して欠点はありません。
-greyfade

3
また、Gitはすべてのサブディレクトリの追跡ファイルでソースツリーを「汚染」しません。
WarrenT

4
@WarrenTソースツリーの「汚染」は、svnバージョン1.7以降では発生しません。
pllee

4
Subversionでファイルシステムリポジトリを作成するのは1つのコマンド(svnadmin createに加えて最初のチェックアウトまたはインポートを実行するためのコマンド)であり、アクセス許可などを設定する必要はありません。多くの場合、Gitが優れたツールであることは否定しませんが、Subversionの不正確さは役に立ちません。
ジョシュケリー

34

自分のコードを決して分岐させないと思うのは、少し近視眼的です。私は自分のコードを数回分岐させました。特に、私がまだ完全には納得していなかった新しいアプローチを試していたときです。最終的にこの機能が必要になります。

これは、長年のSubversionユーザーによるものです。1つのツールに統合することで、生活が楽になります。


2
はい、これが分岐点、実験のポイントだと思います。Opの質問を読んだとき、それは私の最初の予約でした。リポジトリで分岐していない場合は、頭の中で「分岐」しています。これは、バージョン管理が適切に行われている場合は無意味です。
クリス

3
Subversionで分岐できます。そしてマージします。並べ替え。実際、私が試したのは破損したレポジトリになり、それ以上作業できず、バックアップからの回復(ブランチが既に適用されている)が役に立たなかったため、すべての履歴を失い、新しいリポジトリを開始しています...しかし、私は1.4からの移行でそれを非難しましたか?1.5に(私は思う-それは今数年前だった)。おそらく分岐とマージが機能するでしょう。あなたがそれを試してみる勇気があるなら。当時svnダンプについて知っていたなら、もちろんいくらかの努力で問題を修正できたでしょう。
Steve314

@クリス、私はいつでもフォールバックできる作業バージョンを持っているのが好きです。確かにタグでそれを達成できますが、ブランチが完全に理にかなっている場合があります。git / mercurialのその他の利点も忘れないでください。
ベリンロリチュ

9

オーバーキルは、「解決策」によって引き起こされる付随的な損害がある場合にのみ使用されます。銃を使ってハエを殺すということは、他の場所に向かう弾丸によるダメージがあることを意味します。やり過ぎです。問題を引き起こさない、必要以上に強力なものを使用することは、やりすぎではなく、開発プロセスの合理化に役立つ場合には良いことです。それは害を引き起こさず、2つではなく1つのソフトウェアセットを更新するだけで済みます。では、なぜ1つではなく2つのシステムを使用するのでしょうか?


システムがあなたの邪魔になったら、それはやり過ぎかもしれません(はい、その定義では)。個人的なプロジェクトにgitを使用するのは良い考えかと思っています。具体的な利点を教えてください。この答えはそれを解決しません。gitはより強力なシステムであり、個人プロジェクトには強力すぎると考えています。しかし、それがあなたの邪魔にならない限り、必ずしも害があるわけではありません。おそらくあなたの答えを広げていただけますか?
アント

1
オーバーキルは、ソリューションの適用に使用される労力が不均衡な場合にも使用されます。おそらく、ローカルプロジェクトで既にSubversionを使用している場合は、Gitを習得するために必要な労力ややり過ぎが必要です。または、もちろん、譲渡可能なスキルを開発するための有用なレッスンです。個人的に、私はまだ転覆を使用しています-それは数回私を噛みましたが、小さな傷を残しました。私はGitの学習に興味がありますが、見に行くたびに、私が見つけたチュートリアルは不可解でしたか、Windows用の安定したツールを入手できなかったか、他の障害があり、すべてが過剰に思えました。
Steve314

7

私はGitを1人のプロジェクトに使用し、気に入っています。以前はSubversionを使用していましたが、Gitを使用することのマイナス面はまだありません。より強力ですが、単純なことをより複雑にするような方法ではありません。単純なものを不必要に複雑にする/高価な/遅くするなど 私見は何かを過剰に呼び出すための必要条件です。また、Githubでは、以前は他の人のワンマンプロジェクトをフォークして、必要な機能を追加し、プルリクエストを送信しました。私のプロジェクトに興味がある人が同じことをしてくれたら、とてもクールだと思います。


7

私は決して DVCSの前に個人的なプロジェクトにソースコントロールを使用していないので、逆の見方を取って誰かを想像するのは少し奇妙です。私の理由のいくつかは次のとおりです。

  • セットアップと分解が簡単です。たとえば、先週同僚がプログラミングパズルをくれて、それをいくつかの小さなステップで解決しました。作業を保留するために45分間続くgitリポジトリを作成しましたが、それはなくなりました。そのようなものが転覆にどれほど簡単かはわかりませんが、誰もそれをしているとは聞いていません。
  • 切断されました。私にとって、オフラインで仕事ができるということは、仕事よりも趣味のプロジェクトにとってはるかに有益です。ホームファイアウォールに穴を開けたり、プロジェクトを公開してホストしたりする必要はありません。一時的にレポジトリをサムドライブまたはラップトップに置いても、すべての同期を維持できます。
  • すべてが同じ場所に配置されました。リポジトリと作業ツリーを一緒に持つことにより、OSのアップグレードなどの作業中に小さなプロジェクトを追跡しやすくなります。
  • 強力な機能。確かに、私は常に電源を必要としませんが、それが必要なときはそこにあり、必要ないときはリソースを消費しません。

6

git-bisect入力に応じてコミットを前後にナビゲートすることで、特定の動作を導入した正確なコミットを見つけるのは本当に素晴らしいと言われました。

あなたはします、物事のためのいくつかの日は、あなたは、単に何が起こったかを把握することはできませんことを行う必要があります。


編集:また、顧客が使用する古いバージョンでバグ修正を行う必要がある場合、分岐する能力は非常に重要です。「この小さな問題を修正するだけで、今はもう一度テストしたくないため、最新バージョンは必要ありません」を管理できる必要があります。


2

それは、あなたがあなた自身のコードをバージョニングすることにどれほど真剣になりたいかによって異なります。たとえば、現在のバージョンのみを保持する単純なライブラリ(またはそれが真実である限り)を構築する場合、個人的にはDropboxのような基本的なバックアップオプションを使用します。すべてのコードが失われた場合、Webからコードを復元できます。本当に愚かなことをした場合、Dropboxには30日間のバージョンバックアップがあります。

しかし、たとえば、ProductionブランチとDevブランチを保守する必要がある場合、gitは絶対に素晴らしいツールであり、svnよりはるかに高速です。ただし、データをローカルにのみ保存する場合は、ハードドライブ障害のリスクに注意してください。


1
ええ、私は個人プロジェクトにDropBoxを使用しています。バージョン管理は真のVCSのように洗練されたどこにも近くではありませんが、それは私の自由な時間で私は小さなプロジェクトのための罰金だし、それはまったく注意を払う必要がありません(たとえば、何あなたがそれらに取り組むよう、ファイルがちょうど更新し、コミットします。)
jhocking

偶然ですが、ゲームを開発しているため、プロジェクトには多くのバイナリファイル(イメージファイル、オーディオクリップなど)があり、ほとんどのバージョン管理システムは実際にはソースコードのみを対象としています。
ジョッキング

Gitはバイナリファイルでも問題なく動作しますが、差分はそれほど興味深いものではありません。幸いなことにgitでのdiffは完全にロックダウンされていません-好みのバイナリdiffツールを見つけることができれば、gitでそれをかなり簡単に(コマンドラインから)使用できます
Chris Moschini

Gitは多くのスペースバージョニングバイナリファイルを浪費すると言われましたが、言われたことは間違っているかもしれません。基本的に、ほとんどのバイナリアセット(すべてのバイナリファイルではなく、ゲームに入る画像とサウンド)をすべてのバージョンで完全に再保存する必要があると言われたため、Gitはローカルドライブでハードドライブをいっぱいにします。
ジョッキング

バイナリファイルをバージョン管理するつもりがなかった場合にのみ無駄です。それらをバージョン管理する必要がある場合、バージョン履歴は無駄ではありません。バイナリを追跡するときに、バージョン履歴がgitの肥大化をうっかり暗示していると思います。git.wiki.kernel.org/index.php/GitSvnComparsion
クリスモスキーニ

2

私は常に、常に、あらゆる種類の開発プロジェクトにバージョン管理システムを使用しています。大きくても小さくてもかまいません。ある種の新しいテクノロジーで家で遊んでいるか、生活を楽にするための小さなヘルパーを書いているか、大規模で分散したチームで専門的に開発しているかにかかわらず、私は常にバージョン管理システムにバックアップしてもらいたいです。

確かに、ほとんどの場合、小さな個人プロジェクトではほとんどの機能を使用しませんが、gitリポジトリ(またはローカルのSubversionリポジトリ)を設定することは大したことではありません。そして、それを知る前に、「いまいましい、先週のファイルXの内容は何だったのか?」バージョン管理なし-幸運;-)

だから、あなたがgitを使用するかSVNを使用するかは本当に関係ありません-個人的にSVNからgitにますます多くのものを移行し始めていますが、主なことはバージョンコントロールを使用することです-小さなことでも。


1

誰も言及していないからです:個人プロジェクトでは、darcsは本当に優れており、単純なバージョン管理を行うためにgitほど関与していません。大規模なプロジェクトではそれほど高速ではありませんが、Subversionも同様です。


1
それは、darcsをどれだけよく知っているかに関係しているように思えます。私はそれを使ったことがありませんが、gitをたくさん使いました。私にとってgitは非常に単純ですが、darcsを使用する場合は頭を掻いているに違いないと思います。
サム

1
すでにgitの非常識なUIを習得している場合、darcsはケーキウォークになります。
wlangstroth

1
gitよりもdarcsが小さなプロジェクトに適している理由を説明してください。
-shabunc

0

私たちがしていることは実験であることを理解することは、強力な精神的パラダイムシフトになる可能性があります。これをサポートする安価で簡単なツールを使用すると、前進する能力が向上します。これは、実験がうまくいかない場合に実験を中止する能力が高まるためです。

多くの開発者は、「コードのコピーを作成するだけです」と言っています。しかし、これらのコピーは管理が難しくなり、混乱してしまいます。複数のコピーがあり、どのコピーが何のためにあるか思い出せず、それらを削除しても安全なときを見つけようとします。

実験が複数のファイルにまたがる調整された変更を必要とする場合、これらすべてはさらに貴重になります。そして、それが単独の場合、Gitを使用することはさらに簡単になります。

ソロプロジェクトでそれを使用するべきかどうか疑問に思う代わりに、私はこれを私がこれより早く発見しなかったのはどんな恥かと今思います。


これに関するデザイナーの見解については、YouTube でGitのLinusをご覧ください(約70分)
WarrenT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.