『バージョン管理といえば』というほど一般的になっているGit。
Subversionからの移行を考えている人もいると思います。しかし、それぞれの事情によってなかなか踏み出せない人もいるでしょう。
Gitに移行する必要はあるのか?を考えます。
(結論を先にいうと、移行はしたほうがいい。けれどする意味がない人もいる。)
Subversionの更新は止まっていない!
Subversionのサイトを見ると、まだまだ頻繁にアップデートリリースは行われています。
アップデートが止まっていれば、迷うことなくGitへの移行をおすすめしますが、まだまだ活発に活動しているので移行すべきか悩むところです。
バージョン管理を厳密にしていないのなら移行は不要
環境によっては、あまりブランチを使わないこともあります。また開発規模が小さく、とりあえず共用リポジトリに最新のリソースがあればいいという環境なら、移行する必要はないでしょう。
このような環境では、GitがSubversionより優れているところを生かせません。
それでもGitを使うほうが良い
ぼくは、2014年だったか、プライベートの環境はすべてGitに移行しました。仕事の環境ではSubversionを使うことがまだあります。
同時に2つのバージョン管理ソフトウェアを使っている率直な感想は
Gitのほうがストレスがない
です。Gitを知ってしまったら、SVNに戻る理由がないというのが正直なところです。
Gitに出会わなければ、いまでもSVNを使いつづけたでしょう。ただ出会ったものはしょうがないです。
Gitはホスティングサービスが充実している
Gitは、GitHub、Bitbucketなど、ホスティングサービスが充実しています。
ここでいうホスティングは、バージョン管理専用のクラウドサービスといったところでしょうか。
また、GitLabなど自サーバーにバージョン管理システムを構築するソフトウェアもあります。
SVNでバージョン管理システムを構築するには、それなりの専門的な知識が必要です。
Gitでも専門知識は必要ですが、SVNよりも作業を助けてくれるソフトウェアやサービス、情報がたくさんあるので、Gitのほうが良いでしょう。
trunk, branches, tagsなどの意味を覚える学習コストがいらない
GitはSVNに比べ、SourceTreeのように直感的な操作ができる環境がSVNよりも優れています。なので
trunkって何?
branchesって?
tagsって?
という基本的な学習コストが、SVNよりも小さく感じます。
直感的な操作をくり返して自然に覚えます。書店に行って本を買うのもいいですが、ネット上には『Gitの使い方』があふれています。
それで十分でしょう。また、いろいろなところでGitのカンファレンスが開催されているので、そちらに一度参加するのもありです。
いまからバージョン管理を導入しよう、勉強しようという人はGitからはじめるべきです。
Gitは操作の流れが体系化されている
SVNでは、trunk, branches, tagsの意味は分かっても、運用でこれらの作成ルールを決めないと、とんでもないことになります。
さらに、『正しいルールの作り方』を学ばないといけません。
Gitではこれらが体系化されています。SourceTreeではGitFlowを採用しています。
この体系のことを
ブランチモデル
といいます。運用ルールのベーシックが用意されているんですね?
ブランチモデルは、基本的なブランチがあり役割が決まっています。
自分でつくるブランチは限られています。
ほかにも、GitHubFlow, GitLabFlowなどがあります。
SourceTreeでは、直感的な操作をするとGitFlowで作業することになり、ブランチの正しい使い方を気にしなくていいです。
考えながらブランチを作ることがないのがストレスフリーです。だれかに
なんだ?このブランチの切り方は?
と言われることもありません。
SVNは他人に迷惑をかけるリスクが高い
SVNでは、コミットすると直接共用リポジトリを変更します。そのため、コミットしたリソースに不具合があると関係者全員に迷惑をかけます。
Gitでは、リモートリポジトリ(共用リポジトリ)とローカルリポジトリに分かれるため、そのリスクが小さくなります。
ローカルリポジトリはリモートリポジトリのコピーを作業者のPCに作成します。Gitでは、共用リポジトリの前にワンクッションはさみます。
Gitではコミットしてもローカルリポジトリだけが変更されます。コミットした後に不具合に気づいて修正することに、他人を気にする必要はありません。
これだけでも相当ストレスは軽減されます。
Gitでは、SVNでコミットと呼ばれた行為はプッシュといいます。プッシュしなければ、共用リポジトリは何も変更されないので、自分のさじ加減で作業ができます。
最後に
このように、Gitは作業効率上SVNより良いと思います。
SVNからGitへ移行するには、それなりの工数がかかるから移行できないという考えがあるかもしれません。しかし
- 数日の移行コストをかけずに、ストレスのかかる作業をつづけるのか?
- 数日かけて移行作業をして、それからはストレスのかからない作業ができる。
を選ぶとしたら、ぼくは後者を選びます。
作業者全員の学習コストがかかるから。
みんな忙しいから。
という意見もあるでしょう。ただ、Gitの使い方の学習コストを削るって、その人たちは本当に仕事をしているのでしょうか?
どんな仕事でも、現状維持は命とりです。
ぼくの経験上、先を見ずに目の前の時間を理由にする人はこういう人が多いです。
本当に忙しい人は日々学習しています。そういう人ほど本当にデキる人です。
これだと、PowerPointが使えないオッチャンを笑えないです。学習したくないという発想が同じですから。
自分もオッチャンなのに、オッチャンの定義はよく分かりませんが...どうでもいいですね。
あくまでそれぞれの事情によります。