バージョン管理システムについて
Agenda• バージョン管理システムについて    (15分)  • バージョン管理システムとは?  • 詳しい挙動  • メリット• 演習(20分)• コミット時のルール(2.5分)• お勧めクライアント・リポジトリ(2.5分)
バージョン管理システムとは• PC上で作成したファイルの変更履歴を管理するシステム• 特にソフトウェア開発のソースコードの管理に使われている• バージョン管理システムにはCVS・SVN・GITなどいろいろあるが、今回はSVNについて取り扱う
バージョン管理システムとは• ファイルの各バージョン情報をデータベースで管理して  いる• このデータベースのことをリポジトリと呼ぶ
バージョン管理システムの基本操作• リポジトリを作成し、ファイルをリポジトリに登録する• 外部サービスを利用する場合は初期化されてることが多い  リポジトリ                                管理者         ...
バージョン管理システムの基本操作• リポジトリからローカル環境にファイルをコピーする• 新規にコピーする場合はチェックアウト、既存のローカル環境を最新のものにする場合はアップデートという  リポジトリ                      ...
バージョン管理システムの基本操作• ローカル環境でファイルを編集する  リポジトリ                        ユーザー  A B C D            A B C D E
バージョン管理システムの基本操作• ローカル環境のファイルをリポジトリに書き込む(コミット)  リポジトリ                                 ユーザー              変更をリポジトリに書き込む  A B...
バージョン管理システムとは• バージョン管理システムの基本操作  1. リポジトリの作成、ファイルを登録する      • 外部サービスを利用する場合は初期化されてることが多い 2.   リポジトリからローカル環境にファイルをコピーする    ...
バージョン管理システムのメリット• ソースコードを持ち歩く必要ない  • ソースコードを渡すときにZIPとかUSBメモリで渡す必要がない  • URLを教えれば、常に最新のソースコードを渡すことが出来る  • バイナリやドキュメントも管理可能
バージョン管理システムのメリット• 過去のバージョンに戻したり、組み合わせし直せる  • ファイルの状態の事をリビジョンというつぶやき型SNSのリポジトリ   ユーザーの登録        最初のリビジョン  フォロー機能の実装  タイムライン...
バージョン管理システムのメリット• 過去のバージョンに戻したり、組み合わせし直せる  • 最新のリビジョンにバグがある例つぶやき型SNSのリポジトリ   ユーザーの登録  フォロー機能の実装  タイムラインの実装 お気に入り機能の実装 ダイレク...
バージョン管理システムのメリット• 過去のバージョンに戻したり、組み合わせし直せる  • 一つ前のリビジョンにアップデートでき、やり直すことが出来る  • この作業の事し、コミットし直すことをロールバックという つぶやき型SNSのリポジト リ ...
バージョン管理システムのメリット• 過去のバージョンに戻したり、組み合わせし直せる  • 必要な分だけマージすることが出来るつぶやき型SNSのリポジトリ   ユーザーの登録       つぶやき型SNSのリポジト                ...
バージョン管理システムのメリット• 複数人でのファイル編集が可能  • モジュール単位で作業分担が可能  • プロジェクトのドキュメントのTeXを管理するときも便利  • ファイルの編集をコミットする時に、ローカル環境が最新の常態    でない...
バージョン管理システムのメリット• コンフリクトとは  • ローカルの環境が古い状態でコミットした場合起こる現象  • 最新の状態にアップデートしてからコミットすることで回避出来    る  リポジトリ                     ...
バージョン管理システムのメリット• コンフリクトとは  • ローカルの環境が古い状態でコミットした場合起こる現象  • 最新の状態にアップデートしてからコミットすることで回避出来    る  リポジトリ                     ...
バージョン管理システムのメリット• コンフリクトとは  • ローカルの環境が古い状態でコミットした場合起こる現象  • 最新の状態にアップデートしてからコミットすることで回避出来    る   リポジトリ                    ...
バージョン管理システムのメリット• コンフリクトとは  • ローカルの環境が古い状態でコミットした場合起こる現象  • 最新の状態にアップデートしてからコミットすることで回避出来    る   リポジトリ                    ...
バージョン管理システムのメリット• コンフリクトとは  • ローカルの環境が古い状態でコミットした場合起こる現象  • 最新の状態にアップデートしてからコミットすることで回避出来    る   リポジトリ                    ...
バージョン管理システムのメリット• コンフリクトとは  • ローカルの環境が古い状態でコミットした場合起こる現象  • 最新の状態にアップデートしてからコミットすることで回避出来    る   リポジトリ                    ...
バージョン管理システムのメリット• 絶対してはいけないこと!!  • よくやる人がいるので注意   リポジトリ                                  ユーザーA            コミットするが、コンフリクトする...
バージョン管理システムのメリット• 絶対してはいけないこと!!  • よくやる人がいるので注意   リポジトリ                               ユーザーAA B C D E                  A B ...
バージョン管理システムのメリット• 絶対してはいけないこと!!  • よくやる人がいるので注意   リポジトリ                           ユーザーAA B C D E               A B C D E  ...
バージョン管理システムのメリット• 絶対してはいけないこと!!  • よくやる人がいるので注意   リポジトリ                              ユーザーAA B C D E                  A B C...
バージョン管理システムのメリット• 絶対してはいけないこと!!  • よくやる人がいるので注意   リポジトリ                      ユーザーAA B C D F          A B C D E            ...
バージョン管理システムのメリット• コミットする際には必ず差分を見よう!
バージョン管理システムの演習• リポジトリ  • 研究ネットに接続する• チェックアウトすると3つのフォルダが出てくる  • /tags   • リリースしたすべてのバージョンを管理するフォルダ(xxx-1.1.0と     か) • /bra...
バージョン管理システムの演習1. リポジトリのチェックアウトをする2. ファイルの編集をする3. ファイルをアップデートする4. ファイルの差分をチェックする5. ファイルの編集をコミットする
バージョン管理の注意• コミットする時のコメントはわかりやすく明確に!• コミットするときにコメントを要求されるが、何の修正なのか、 機能追加なのかを明確に書く。
バージョン管理の注意• コミットする時は1機能ずつ追加する  • コミットするときに、◯◯とXXの機能を同時にコミットしない。  • 細分化してコミットすることで、差分を取りやすくなり、管理し    やすくなる。
バージョン管理の注意• 不必要なものは管理しない• 例えば、コンパイル済みのバイナリファイルやオブジェクトファ  イル• バージョン管理システムではIgnoreリスト(無視するファイル形式  リスト)を作成できるので、利用すると良い
バージョン管理の注意• 他人のコミットを上書きしない  • コンフリクトした場合は、理由を考えて慎重にコミットする
無料リポジトリサービス• Beanstalk  • http://beanstalkapp.com/  • SVN/GIT対応  • Private可  • 容量:100M  • 1ユーザーまで• Bitbucket  • https://bi...
無料リポジトリサービス• GtiHub  • http://github.com/  • GITのみ  • Private不可  • 容量:無限  • Publicであればユーザーも無限?
おすすめのクライアント(Windows)• SVNクライアント  • TortoiseSVN   • http://tortoisesvn.net/   • Diff機能やリビジョンマージ機能   • かなり機能が豊富• GITクライアント  ...
おすすめのクライアント(MacOS)• SVNクライアント  • Versions ($59)   • http://versionsapp.com/• GITクライアント  • SourceTree   • http://www.source...
おまけ(SVNとGITの違いについて)• SVNの構造は…      サーバー                ローカル環境              ローカル環境へコ    リポジトリ     ピー               (チェックアウ ...
おまけ(SVNとGITの違いについて)• 一方GITの構造は…     サーバー                    ローカル環境               ローカル環境へコ リモートリポジトリ     ピー           ローカルリ...
Upcoming SlideShare
Loading in …5
×

バージョン管理勉強会

3,191 views

Published on

研究室のバージョン管理勉強会で使った資料

  • Be the first to comment

  • Be the first to like this

バージョン管理勉強会

  1. 1. バージョン管理システムについて
  2. 2. Agenda• バージョン管理システムについて (15分) • バージョン管理システムとは? • 詳しい挙動 • メリット• 演習(20分)• コミット時のルール(2.5分)• お勧めクライアント・リポジトリ(2.5分)
  3. 3. バージョン管理システムとは• PC上で作成したファイルの変更履歴を管理するシステム• 特にソフトウェア開発のソースコードの管理に使われている• バージョン管理システムにはCVS・SVN・GITなどいろいろあるが、今回はSVNについて取り扱う
  4. 4. バージョン管理システムとは• ファイルの各バージョン情報をデータベースで管理して いる• このデータベースのことをリポジトリと呼ぶ
  5. 5. バージョン管理システムの基本操作• リポジトリを作成し、ファイルをリポジトリに登録する• 外部サービスを利用する場合は初期化されてることが多い リポジトリ 管理者 リポジトリの作成・ファイルの追加(初 A B C D 期化) A B C D
  6. 6. バージョン管理システムの基本操作• リポジトリからローカル環境にファイルをコピーする• 新規にコピーする場合はチェックアウト、既存のローカル環境を最新のものにする場合はアップデートという リポジトリ ユーザー ローカル環境へコピー(チェックア ウト) A B C D A B C D
  7. 7. バージョン管理システムの基本操作• ローカル環境でファイルを編集する リポジトリ ユーザー A B C D A B C D E
  8. 8. バージョン管理システムの基本操作• ローカル環境のファイルをリポジトリに書き込む(コミット) リポジトリ ユーザー 変更をリポジトリに書き込む A B C D E A B C D E
  9. 9. バージョン管理システムとは• バージョン管理システムの基本操作 1. リポジトリの作成、ファイルを登録する • 外部サービスを利用する場合は初期化されてることが多い 2. リポジトリからローカル環境にファイルをコピーする • 新規にコピーする場合はチェックアウト、既存のローカル環境を最新 のものにする場合はアップデートという 3. ローカル環境でファイルを編集する 4. ローカル環境のファイルをリポジトリに書き込む(コミット)• 作業を行う場合は、2〜4を繰り返します。
  10. 10. バージョン管理システムのメリット• ソースコードを持ち歩く必要ない • ソースコードを渡すときにZIPとかUSBメモリで渡す必要がない • URLを教えれば、常に最新のソースコードを渡すことが出来る • バイナリやドキュメントも管理可能
  11. 11. バージョン管理システムのメリット• 過去のバージョンに戻したり、組み合わせし直せる • ファイルの状態の事をリビジョンというつぶやき型SNSのリポジトリ ユーザーの登録 最初のリビジョン フォロー機能の実装 タイムラインの実装 お気に入り機能の実装 ダイレクトメール機能の実 装
  12. 12. バージョン管理システムのメリット• 過去のバージョンに戻したり、組み合わせし直せる • 最新のリビジョンにバグがある例つぶやき型SNSのリポジトリ ユーザーの登録 フォロー機能の実装 タイムラインの実装 お気に入り機能の実装 ダイレクトメール機能の実 装
  13. 13. バージョン管理システムのメリット• 過去のバージョンに戻したり、組み合わせし直せる • 一つ前のリビジョンにアップデートでき、やり直すことが出来る • この作業の事し、コミットし直すことをロールバックという つぶやき型SNSのリポジト リ ユーザーの登録 フォロー機能の実装 タイムラインの実装 お気に入り機能の実装 ここのリビジョンにアップデート可能 ダイレクトメール機能の実 装
  14. 14. バージョン管理システムのメリット• 過去のバージョンに戻したり、組み合わせし直せる • 必要な分だけマージすることが出来るつぶやき型SNSのリポジトリ ユーザーの登録 つぶやき型SNSのリポジト リ ユーザーの登録 フォロー機能の実装 タイムラインの実装 タイムラインの実装 ダイレクトメール機能の実 お気に入り機能の実装 装 ダイレクトメール機能の実 装
  15. 15. バージョン管理システムのメリット• 複数人でのファイル編集が可能 • モジュール単位で作業分担が可能 • プロジェクトのドキュメントのTeXを管理するときも便利 • ファイルの編集をコミットする時に、ローカル環境が最新の常態 でないとコンフリクト(衝突)する
  16. 16. バージョン管理システムのメリット• コンフリクトとは • ローカルの環境が古い状態でコミットした場合起こる現象 • 最新の状態にアップデートしてからコミットすることで回避出来 る リポジトリ ユーザーA チェックアウトA B C D A B C D ユーザーB A B C D
  17. 17. バージョン管理システムのメリット• コンフリクトとは • ローカルの環境が古い状態でコミットした場合起こる現象 • 最新の状態にアップデートしてからコミットすることで回避出来 る リポジトリ ユーザーAA B C D A B C D E ユーザーB A B C D F
  18. 18. バージョン管理システムのメリット• コンフリクトとは • ローカルの環境が古い状態でコミットした場合起こる現象 • 最新の状態にアップデートしてからコミットすることで回避出来 る リポジトリ ユーザーA コミットA B C D E A B C D E ユーザーB A B C D F
  19. 19. バージョン管理システムのメリット• コンフリクトとは • ローカルの環境が古い状態でコミットした場合起こる現象 • 最新の状態にアップデートしてからコミットすることで回避出来 る リポジトリ ユーザーA コミットするが、コンフリクトするA B C D E A B C D E ユーザーB A B C D F茶色の部分が一緒じゃないので最新ではない
  20. 20. バージョン管理システムのメリット• コンフリクトとは • ローカルの環境が古い状態でコミットした場合起こる現象 • 最新の状態にアップデートしてからコミットすることで回避出来 る リポジトリ ユーザーAA B C D E A B C D E アップデート(チェックアウト) ユーザーB A B C D E F アップデートすると自動的に差分がマージされ
  21. 21. バージョン管理システムのメリット• コンフリクトとは • ローカルの環境が古い状態でコミットした場合起こる現象 • 最新の状態にアップデートしてからコミットすることで回避出来 る リポジトリ ユーザーAA B C D E F A B C D E コミット ユーザーB A B C D E F
  22. 22. バージョン管理システムのメリット• 絶対してはいけないこと!! • よくやる人がいるので注意 リポジトリ ユーザーA コミットするが、コンフリクトするA B C D E A B C D E ユーザーB A B C D F茶色の部分が一緒じゃないので最新ではない
  23. 23. バージョン管理システムのメリット• 絶対してはいけないこと!! • よくやる人がいるので注意 リポジトリ ユーザーAA B C D E A B C D E作業ファイルを一時保存しておき、アップデートする ユーザーB A B C D F A B C D E
  24. 24. バージョン管理システムのメリット• 絶対してはいけないこと!! • よくやる人がいるので注意 リポジトリ ユーザーAA B C D E A B C D E 保存したファイルを上書きする ユーザーB A B C D F A B C D E F
  25. 25. バージョン管理システムのメリット• 絶対してはいけないこと!! • よくやる人がいるので注意 リポジトリ ユーザーAA B C D E A B C D E ユーザーB システムはEが無いので、 削除したと判断 A B C D E F
  26. 26. バージョン管理システムのメリット• 絶対してはいけないこと!! • よくやる人がいるので注意 リポジトリ ユーザーAA B C D F A B C D E コミット ユーザーB A B C D E F
  27. 27. バージョン管理システムのメリット• コミットする際には必ず差分を見よう!
  28. 28. バージョン管理システムの演習• リポジトリ • 研究ネットに接続する• チェックアウトすると3つのフォルダが出てくる • /tags • リリースしたすべてのバージョンを管理するフォルダ(xxx-1.1.0と か) • /branches • リリースしたバージョンごとの修正管理 • これが安定すると、マイナーバージョンを上げてリリースする • /trunk • 開発中の最新バージョン
  29. 29. バージョン管理システムの演習1. リポジトリのチェックアウトをする2. ファイルの編集をする3. ファイルをアップデートする4. ファイルの差分をチェックする5. ファイルの編集をコミットする
  30. 30. バージョン管理の注意• コミットする時のコメントはわかりやすく明確に!• コミットするときにコメントを要求されるが、何の修正なのか、 機能追加なのかを明確に書く。
  31. 31. バージョン管理の注意• コミットする時は1機能ずつ追加する • コミットするときに、◯◯とXXの機能を同時にコミットしない。 • 細分化してコミットすることで、差分を取りやすくなり、管理し やすくなる。
  32. 32. バージョン管理の注意• 不必要なものは管理しない• 例えば、コンパイル済みのバイナリファイルやオブジェクトファ イル• バージョン管理システムではIgnoreリスト(無視するファイル形式 リスト)を作成できるので、利用すると良い
  33. 33. バージョン管理の注意• 他人のコミットを上書きしない • コンフリクトした場合は、理由を考えて慎重にコミットする
  34. 34. 無料リポジトリサービス• Beanstalk • http://beanstalkapp.com/ • SVN/GIT対応 • Private可 • 容量:100M • 1ユーザーまで• Bitbucket • https://bitbucket.org/ • SVN/GIT対応 • Private可 • 容量:無限 • 5ユーザーまで
  35. 35. 無料リポジトリサービス• GtiHub • http://github.com/ • GITのみ • Private不可 • 容量:無限 • Publicであればユーザーも無限?
  36. 36. おすすめのクライアント(Windows)• SVNクライアント • TortoiseSVN • http://tortoisesvn.net/ • Diff機能やリビジョンマージ機能 • かなり機能が豊富• GITクライアント • TortoiseGIT • http://code.google.com/p/tortoisegit/ • 同上 • GitHub for Windows • http://windows.github.com/ • Githubのみしかつかえないが、使いやすい。 • インストールが楽
  37. 37. おすすめのクライアント(MacOS)• SVNクライアント • Versions ($59) • http://versionsapp.com/• GITクライアント • SourceTree • http://www.sourcetreeapp.com/ • SVNも使える • GitHub for MacOS • http://mac.github.com/
  38. 38. おまけ(SVNとGITの違いについて)• SVNの構造は… サーバー ローカル環境 ローカル環境へコ リポジトリ ピー (チェックアウ 変更を書き込む ト) A B C D (コミット) A B C D
  39. 39. おまけ(SVNとGITの違いについて)• 一方GITの構造は… サーバー ローカル環境 ローカル環境へコ リモートリポジトリ ピー ローカルリポジトリ (クローン/プル) 変更を書き込む A B C D A B C D (プッシュ) チェックアウト コミット A B C D

×