バージョン管理されていないシステムをバージョン管理していく



0. はじめに

こちらのドキュメントは 事業者向けホームセンター モノトス の開発を進めるにあたり、コードのバージョン管理を行う必要があり、
社内メンバにバージョン管理の仕組みについて説明するために作成したものです。

1.バージョン管理の目的

svn - バージョン管理の目的 - Qiita より引用させていただきました。

バージョン管理システムを使う ( 主な ) 目的は下記の 4 つだと思う。

  • 以前の状態に戻る
  • 変更履歴を調査する
  • プロジェクトを管理する
  • 変更者と変更理由を知る

以下で順を追って説明する。

元々は航空機の部品管理に由来。

(ネジの装着ミスによりフロントガラスが吹っ飛んだ事件の教訓だったと思います。。)

2.バージョン管理のためのツール

ファイル名に .yyyymmdd など、変更日をつけて履歴管理することもできますが、すぐに履歴ファイルでいっぱいになってしまいます。
そのため、多くの場合はツールを利用します。

2016-01-08 現在、よく利用されている(あるいはいた)ツールをあげておきます。

  • vss(Microsoft)
  • CVS
  • Subversion
  • Mercurial
  • Git

LinuxやPHP、その他有名なOSSのソースコードがGitで管理されるようになってきており、
今後よく利用されるツールはGitでほぼ間違いありません。

バージョン管理の一般常識として覚えておくべきツールです。

3.バージョン管理に必要なもの

  1. サーバー
    • すべての変更履歴を中央集中管理するためのサーバー。
    • リポジトリサーバー と呼ばれる
    • 公開しても問題ないアプリケーションの開発でよく利用されるのが GitHub というサービスになります。
  2. クライアント
    • ソースコードやイメージファイル、設計書などをバージョン管理の対象として追加したり削除したりするために必須
    • 導入には Atlassian SourceTree というツールがおすすめ
      • GUI
      • 変更の履歴がツリーで表示され、見やすい
      • Windows、Macなど、クライアント環境を選ばない
  3. アカウント
    • リポジトリサーバーにだれでもアクセスできてしまうとソースコード資産が他者に利用されてしまう
    • 閲覧権限を絞るために、アカウントごとに閲覧の可否を設定する
    • 編集の可否も設定する

4.モノトスのソースコードはどうやってリポジトリサーバーから取得するの??

以降の操作では、基本的にSourceTreeを利用し行うものとしました。

clone と呼ばれる操作を行います。

GUI上は、「+新規リポジトリ」というボタンを押します。

ソースURL(あるいは、リポジトリURLと呼ばれる)には、リポジトリサーバーが提供するプロジェクトごとのURLを設定します。

詳細は後述。



5.ソースURLはどうやって確認するの??

codebreak; にアクセスし、確認します。

2016-01-08 現在、 codebreak はサービス提供終了間近となっています。残念です。

事前にアカウントを取得し、ログインが出来るようにしておきましょう。



6.新規にプロジェクトを作成するにはどうするの??

  1. codebreak;にログインし、新規リポジトリの作成を行う
  2. リポジトリ一覧ページに表示されていることを確認し、設定ページヘ
  3. ソースURLをコピー
  4. SourceTreeにて、作業用PCにcloneする

2016-01-08 現在、 codebreak はサービス提供終了間近となっています。残念です。

はじめは空っぽ



7.ファイルを追加するには??

add + pushという操作を行います。

  • add : ファイルに対して、間違いなく追加(あるいは変更、削除)を行ったことを確認する操作
  • push : addマークを付けたファイルをリポジトリサーバーにアップ

pushの際には、必ずどのような目的で変更を行ったかをコメントとして入力しましょう!

(この点がバージョン管理で成功するプロジェクト、失敗するプロジェクトの命運を分ける)



masterブランチを見ると、追加されていることがわかります。

  • masterブランチ : メインブランチとも呼ばれる。変更履歴のメインストリーム。。
    • master以外のブランチ(幹)を作成することも可能
    • 中二病風に言うと、複数の世界線が作成できる



8.ファイルを変更するには??

add + pushという操作を行います。



9.変更を取り消すには??

revertという操作を行います。



10.その他(機能の一部紹介)

branchmerge 機能を利用して、複数の世界線を活用します。