【社内勉強会】バージョン管理の重要性とGitの運用について

こんにちは、hachi8833です。 BPSで毎週木曜日に定例で行われている社内勉強会から、Webチームリーダーのmorimorihogeさんによる講義のスライドを元に記事化いたしました。 今回のスライド「Gitとバージョン管理」は、前半はバージョン管理の重要性と限界、後半は主にBPS WebチームのGit運用についての説明です。とくにバージョン管理の重要性についての説明は、開発者に限らずWebデザイナーやディレクターにとっても役に立つ内容です。 社内勉強会スライドは今後も順次記事化いたします。ご期待ください。 バージョン管理の重要性とGitの運用について 対象 Gitを使ったことのない人・Git入門して間もない人 バージョン管理のメリットがまだ実感できない人 Gitの使いこなしに手こずっている人 Gitをある程度使えるようになった人 概要 バージョン管理が必要な理由 バージョン管理がどんなときに役に立つか バージョン管理の限界 Gitでバージョン管理する目的 Gitブランチのよい使い方 Gitを使った開発の注意点 バージョン管理の歴史(大昔) BPS創立よりはるか昔、バージョン管理システムなどという便利なものはありませんでした。当時の人々は以下のような方法でひたすら手作業でバージョンごとのファイル履歴を残そうとしました。 ファイル名やフォルダ名に日時を刻む ソースコードにコメントで修正日時や内容をメモする もしかしたら今もやっている会社があるかもしれませんね。 するとどうなるか 人力による管理は気を遣わなければならない点が多く、非常に不便です。さらに、手作業の悲しさで以下のような問題が日常的に発生していました。 ファイルを以前のバージョンに戻したつもりなのに全然正常に動かない 実は更新ファイルが他にもあったことを見落としてた、など ファイルの日付表現が作業者によってばらつく lsしたらYYYYMMDDだったりYYMMDDだったり 外人がMMDDYYにしてたり 外部に脆弱性チェックを依頼したら古いファイルで脆弱性を指摘された 調べてみると、使ってないファイルが本番環境にデプロイされていた、など 日付管理が嫌になったので「最新」とか「Latest」というフォルダを作ったが、あっという間に最新でなくなってしまい、あとから来た人が知らずに使って死ぬ バージョン管理システムの誕生 ファイルのリビジョンを人力で管理するのは明らかに限界があります。こうした問題を軽減すべく、黎明期に以下のようなバージョン管理システムが誕生しました。 CVS — かなり古株 Subversion — Apacheのサブプロジェクト、Git以前にポピュラーだった VSS — マイクロソフト製、Visual Studioに付属 こうした黎明期のバージョン管理システムの多くは今から見れば機能が少なめでした。 リポジトリは単にソースをコミットして保存する場所として使われることも多く、本番環境へのデプロイはコミットの後SCPなりFTPなりで手動で頑張るというスタイルが当時主流でした。 それでもシステムでバージョンを管理しておけばいつでも最新コードを取り出せるし、リリース時には必ずコミットするよう開発規約にも定めたし、もう大丈夫かと思われました。 そしてどうなったか 残念ながらそれでも以下のような問題がしばしば発生しました。 サーバーで突然のトラブル→本番とリポジトリのコードが一致していないことが発覚 画像や素材を大量にコミットしようとするとsvn checkoutに半日かかる チームで開発しているとコミット同士が衝突(conflict)する 初期バージョン管理システムの問題点とは … Continue reading 【社内勉強会】バージョン管理の重要性とGitの運用について