前書き
- バージョン管理をCVSからGit(サービスはGitLabCE)に変えたときのメモ。
- 私のスペックは言語能力のみでミドルウェアーやOSの知識はほぼ0。(CPU、メモリ、ディスク??の状態)
- 個人活動ではないので、色々手助けして実現してます・・・。
背景
PleiadesのAll in One からCVSが除外されているにもかかわらず、いまだに利用しているって
どうなの?と疑問に感じてSVN通り越してGitを導入することに。
Gitをまず知る
そもそもGitって何?
まず出だしに詰まったのが、GitHubとGitの違い。
この違いを理解するためにまずはGitについて猛勉強。
ここでようやく、Git = ツール。GitHub = Gitのホスティングサービス と理解。
Gitに慣れる。
自端末にインストール
ひとまずGitに慣れるために、Git for Windows を自端末にインストール。
ローカルでの動きをひたすら試す行為をしました。
リモート端末にインストール
ただ自端末だけではリモートとのやり取りがつかめなかったので、社内の開発サーバー(Windows)に
Git for Windowsをインストールして、リモートとのやり取りを試しました。
ここで問題が発生。
なぜか想定している動きにならなかったのです・・・。
詳しくはこちら・・・
Git cloneの挙動がおかしい
この問題を経て、リモートで立てるベアリポジトリはWindowsではダメということが判明しました。
結局Linuxたててホスティングサービスを入れるのが何よりも楽ということになりました。
※尚、Linuxサーバ構築とGitLab導入はベテランの方に頼んでスンナリ出来上がりました。
提案書を作る
ひとまず、Git、GitLab導入をすることのメリット・デメリットをまとめた資料を作成。
branch利用のところで心動かせた感じがします。(CVSでbranchの利用していなかったので)
試行という形で実際の案件で活用することにこぎつけました。
実際の運用
実際に運用をしてわかった問題です。
ちなみにIDEはeclipseを利用していました
実際に運用しているときは、ある程度2~3週間に一度メンバーであつまりKPTでふりかえって
問題の洗い出し、良い操作などの洗い出しをしていきました。
(個人的にふりかえりを学んだ直後なので試した感じですが、これはよかったです!)
大きなバイナリファイルがPUSHできない!
今まで試してきたのは小さなファイルばかりで、実際に大きなバイナリファイルをPUSHしようとした瞬間。なぜかエラーが発生して、PUSHできない状態に・・・。
その時のやりとりがこちら↓
EGitでjarや画像ファイルをプッシュについて教えてください
ブランチ戦略問題
開発工程でのブランチ戦略は不要とどこかの記事で見たので、
masterからdevelopブランチを切り、メンバー全員がローカルにブランチも作らずdevelopブランチを操作するようにしました。また、ソースレビューもせずPUSH!PUSH!だったのでマージリクエストもしない状況。
この時、競合が発生しまくり、慣れないメンバーは慌てふためくというカオスに・・・。
↓
そこでひとまずはローカルにワークブランチを切って操作しよう!ということに落ち着きました。
コミットの数が増えるけど、さほど問題になりませんでした。
ワークブランチで操作することで、かなり競合発生は回避できたかと思います。
GitLabのパスワード変更した場合の問題
eclipseのセキュア・ストレージをリセットする必要がありました・・・。
改行コードの取り扱い
いまだに悩まされていますが、core.autocrlf
をtrueに統一するようにしました。
(本当に改行コード自動変換する設定でいいのか悩ましいところ・・・)
やってみて思ったこと
CVSからGitに変えたことで、学習が必要となりましたが、CVSやっていたおかげでさほど高い壁に感じる事はなかったです。
逆に恩恵が大きすぎて絶対にGitいれるべきだわー。って思います。
入れてよかった点は
コミットの管理単位がファイルではなく状態であること。
CVSではファイル単位で管理しているので、変更に対して修正したファイル群を確認することができませんでした。これがあることで調査がだいぶと楽になった感じがします。
ソースがIDEなくても見れる。
ホスティングサービスのないCVSだったので・・・。
退避が楽にできる。
stash
のおかげでちょい試しがものすごくしやすい。
課題
今後の課題としては、GitLab側の運用。
CVSから移行したあとなぜか表示されない問題
GitLabのバージョン問題かもしれませんが、うまく移行できてるのにLab側で表示されない問題があります。
Lab側でなんらかのファイルをPUSHすると、正常に表示されるようになるという謎の動きが未解決。
バックアップ・リストア問題
バックアップとリストアがうまくできない感じです。
やりたいことは、全体バックアップから一部のプロジェクトのみリカバリすること。
bundleファイルからcloneするも全ブランチをcloneしないとできない・・・。
もっと効率のいい方法がないのかが未解決・・・。
感想
ハードル高いと思っていましたが、やってみればそんなことなかったです。
逆に得られるものの方がおおきいなぁって思います。
GitにすることでCI/CDへのつなぎがしやすくなるのかなぁと個人的には思います。