入社3年目の男が、バージョン管理にSubversionではなくGitを採用するための口説き文句を考える その2

前回

Gitの良い点悪い点を挙げた


おはようございます。

引き続き書いていきます。

Gitを導入するにあたり、どのようなメリットがあるかを示すほうが良いと感じたのでそちらを列挙していこうと思います。

開発者のストレスが減り、分業ができる

前回のメリットでも上げましたが、自分セーブや個人のミスによる全体への影響を防ぐことができます。

開発者は自分セーブと最低限のマージによって、開発に集中することができます。

管理者は、開発者のマージをプルまたはフェッチすることで、リリースや開発、マスターブランチの管理に注力できます。

ブランチ間のやりとりについては管理者が管理するほうが良いですが、可能であれば開発者間でやり取りをすることも良しかと思います。

私自身はGitを使って1ヶ月、そこで開発をしましたが、好きなようにセーブし戻せるという環境は開発するうえで非常に便利だったと感じます。

既存のSVNと連携して使ってもいい

Subversion環境をGitに移行するのはそんなに難しくないらしいが、既存のSVNを利用してもいいと思いました。

それはMasterブランチの代わりとして、という形です。

GitFlowに倣うとGit上で安定稼働するMasterについてはSVNで保持しておいても良いのかなと感じました。
(リリースされたタイミングで管理者が最新安定稼働版をSVNのリポジトリにコミットしておくなど)

また、Gitではバイナリファイルの管理が苦手らしいです。

理由としてはGitはバージョン管理を目的としているため、バイナリの変更はテキスト等と違いファイル丸ごとを記憶してしまうためです。

つまり、バイナリの変更頻度が多かったり、サイズが大きいと都度記憶するため、ファイル容量が膨大になる可能性を孕んでいます。

ドキュメントのバージョン管理はGitかSVNか???

 

GitLFSを使用するという方法もありますが少し手間がかかりそうなのと、現状でSVNを運用しているのであれば、バイナリはSVNで管理しても良いのかなと思います。

SVNでJenkinsを設定している場合は、SVNそのままでJenkinsの設定も変える必要がないので楽かもしれません。

ただしリリース時のバージョンをJenkinsが決めている場合、Git側にJenkinsを導入する必要があります。

 

では、導入にあたりどのような施策と取るべきか、どう運用していくかについて。

gitの学習コストを下げ、事故を減らす2つのポイント

 

こちらに書いてある事がベースになるなのかなと思いました。

導入にあたり

GUIツールの使用

前職ではSourceTreeを使用していましたが、慣れるまではこちらを使用すべきかなと思います。

若干重いのもありますが、視覚的かつ直感的にあつかえるコマンドがGUIに表示されているため使いやすいのとGitに対する恐怖心が減りました。

開発用PCであれば、そこまで重くないのではないかと思います。

コマンドの制限

作業指示でコマンドを制限するほうが良いと思います。

SourceTreeの利用につながるのですが、GUIに表示されているコマンドをメインに使うことが多くなるので、リベースなどは右クリックでしか行えません。

基本的には

  • ブランチ
  • プル
  • コミット
  • チェックアウト

だけ知っていれば、開発上に支障はないと思います。

この4つを使用しているとGitに慣れていきますし、開発時に便利であることがわかってくると思います。

Gitになれてきたときに、プッシュやマージ作業を行えるようになれば良いと思います。

管理者(開発責任者)によるコードレビュー

SourceTreeであれば、変更がGUI上から視認しやすくなっているので、可能であればコードレビュー(チェック)を行うべきだと考えました。

このプロセスを入れることで、バグの早期発見が可能になると思います。

プッシュ時などのログのルール決め

ローカルリポジトリーは正直どのように運用しても良いと思いますが、リモートはできる限り綺麗に保っておくべきだと思います。

マージ作業も、MergeCommitにしてブランチの情報は残すのか、Rebaseを行い出来る限り分岐が少ない状態で保持するのか、決めておいたほうが良いと感じました。

この辺はプロジェクトの規模や作業者の人数に依存するところが大きいです。

練習用リモートリポジトリの構築と手順書の作成

これは一応あったほうがいい気がしています。

何もわからないままポチポチしていると、必ずコンフリクトが発生してチェックアウトできなくなります。

そういった問題を、手順書等を見ながら自力で解消できるようになるとGitへの理解がより深まるのではないかと思います。

現状で思いつくのはこれくらいでしょうか。

この記事(メモ)を見ながらプレゼン用の資料を作成しますが、思いついたことがあれば随時追記します。