この記事について
Git信者の私が、SVN管理のプロジェクトで困ったことをいろいろ書いていきます。
Qiitaの皆さんはGitがお好きだと思いますのであまり需要は無さそうですが、「なぜSVNはダメなのか」という点はあまり書かれてなかったような気がしたのでとりあえずザラッと書き込んでみます。ザラザラ
Git初心者がなぜGitを使わなければならないのか、とかその辺の参考になるかもしれません。
GitとSVNどちらが人気か
どうみてもGitが人気です。
本当にありがとうございました。
トランクやブランチ、タグごとにチェックアウトする必要がある
ブランチやタグがたくさんあったり、ファイル容量デカい物(PDFとか色々)がコミットされている場合
まとめてチェックアウトするのは時間かかって大変です。
トランクやブランチを指定してチェックアウトすることも可能ですが、何かあったとき新しくチェックアウトしたりする必要があるので面倒ですね。
Gitならブランチやらタグやら選んで変えるだけ。超楽。
ログからコミットを消すのが大変
SVNではコミットを取り消すのが大変らしいです。
どうやら「svn コミット なかったことにする」とかでぐぐってしまえば方法はあるみたいなんですが、リポジトリサーバー側にあるファイルを消し飛ばしたりとか色々危険な方法が書かれてます。
Gitならリセットやらチェリーピックやら色々使えば、特定のコミットをなかったことに出来ます。あとはRevertしてあげるとか。
ロック解除忘れ問題
よくExcelのファイルとかに対してロック機能を使うこと多々あるでしょう。
他人が編集できないのはいいことかもしれませんが、解除のし忘れでやりとりが多々発生するのも事実。。
Gitにはこの機能ないんですよね。逆に言えばSVNの唯一のメリットかも。
git svn fetch
がめっちゃ時間かかる
じゃあgit-svnを使おう!と思ってコマンドを打つわけですが
リビジョンが4桁を超えると、普通に数時間かかります。
で、気付いたら途中エラーが出て止まるとか。悲しい。
後からトランク、ブランチ、タグフォルダを用意されると色々面倒
git-svnを使う場合、branchesフォルダとかを見てブランチを切ってくれるのですが途中からbranchesやらtagsやら用意した場合は特定のリビジョンでクローンする必要があります。
そのリビジョンから過去の履歴を引っ張る場合は、別のリポジトリを用意してリモート追加してリベース、など結構面倒な作業をする必要があります。。
最後に
「後からgit-svnでどうにでもなるから...」というのは甘え。
こんな問題で困るぐらいなら、最初からGitやろう!