176
はこだてIKA 夜間勉強会 バージョン管理 - Subversion - skomatsu facebook.com/comutt, @comutt, id:comutt atWare, Inc. February 28, 2013

バージョン管理#01 -Subversion編-

Embed Size (px)

DESCRIPTION

はこだてIKA 夜間勉強会で使用した資料です

Citation preview

Page 1: バージョン管理#01 -Subversion編-

はこだてIKA 夜間勉強会

バージョン管理- Subversion 編 -

skomatsufacebook.com/comutt, @comutt, id:comutt

atWare, Inc.February 28, 2013

Page 2: バージョン管理#01 -Subversion編-

必要なもの

• ネットワークに接続できるPC/Mac

• Subversive プラグイン導入済 Eclipse

• Google Code にアクセスするためのGoogle アカウント

Page 4: バージョン管理#01 -Subversion編-

バージョンとは

• Ver. 1.2 や Rev. 3 など

• コンテンツの「状態」を一意に表すID

Page 5: バージョン管理#01 -Subversion編-

<html></html>

ver.1

Page 6: バージョン管理#01 -Subversion編-

<html></html>

ver.1

<html><body></body></html>

ver.2

Page 7: バージョン管理#01 -Subversion編-

<html></html>

ver.1

<html><body></body></html>

ver.2

<html><body> <h1>HTML</h1></body></html>

ver.3

Page 8: バージョン管理#01 -Subversion編-

原則

• コンテンツの状態が変化すると、バージョンが変化する

• バージョンは、一意のID

Page 9: バージョン管理#01 -Subversion編-

バージョン管理とは

• コンテンツのバージョンを管理する

Page 10: バージョン管理#01 -Subversion編-

人力バージョン管理

Page 11: バージョン管理#01 -Subversion編-

人力バージョン管理

index.html.201302012/1 に作った初版。日付をつけた。

Page 12: バージョン管理#01 -Subversion編-

人力バージョン管理

index.html.201302012/1 に作った初版。日付をつけた。

2/1 に作った第2版。日付だとかぶるので少し変化。

index.html.20130201_02

Page 13: バージョン管理#01 -Subversion編-

人力バージョン管理

index.html.201302012/1 に作った初版。日付をつけた。

2/1 に作った第2版。日付だとかぶるので少し変化。

index.html.20130201_02

直前のバージョン。安易に .bak にリネームした。 index.html.bak

Page 14: バージョン管理#01 -Subversion編-

人力バージョン管理

index.html.201302012/1 に作った初版。日付をつけた。

2/1 に作った第2版。日付だとかぶるので少し変化。

index.html.20130201_02

直前のバージョン。安易に .bak にリネームした。 index.html.bak

最新版 index.html

Page 15: バージョン管理#01 -Subversion編-

問題点バージョンの表見規則の人依存

Page 16: バージョン管理#01 -Subversion編-
Page 17: バージョン管理#01 -Subversion編-

• バージョンの表現規則が人依存

Page 18: バージョン管理#01 -Subversion編-

• バージョンの表現規則が人依存• 日付(YYYYMMDDなど)

Page 19: バージョン管理#01 -Subversion編-

• バージョンの表現規則が人依存• 日付(YYYYMMDDなど)• 人力インクリメント(_01, _02など)

Page 20: バージョン管理#01 -Subversion編-

• バージョンの表現規則が人依存• 日付(YYYYMMDDなど)• 人力インクリメント(_01, _02など)• 合わせ技(YYYYMMDD_01など)

Page 21: バージョン管理#01 -Subversion編-

• バージョンの表現規則が人依存• 日付(YYYYMMDDなど)• 人力インクリメント(_01, _02など)• 合わせ技(YYYYMMDD_01など)

• 人依存なのでファイルごとにばらばらになったりする

Page 22: バージョン管理#01 -Subversion編-

• バージョンの表現規則が人依存• 日付(YYYYMMDDなど)• 人力インクリメント(_01, _02など)• 合わせ技(YYYYMMDD_01など)

• 人依存なのでファイルごとにばらばらになったりする• index.html.01

Page 23: バージョン管理#01 -Subversion編-

• バージョンの表現規則が人依存• 日付(YYYYMMDDなど)• 人力インクリメント(_01, _02など)• 合わせ技(YYYYMMDD_01など)

• 人依存なのでファイルごとにばらばらになったりする• index.html.01• index.css.20130201

Page 24: バージョン管理#01 -Subversion編-

• バージョンの表現規則が人依存• 日付(YYYYMMDDなど)• 人力インクリメント(_01, _02など)• 合わせ技(YYYYMMDD_01など)

• 人依存なのでファイルごとにばらばらになったりする• index.html.01• index.css.20130201• main.js.test

Page 25: バージョン管理#01 -Subversion編-

• バージョンの表現規則が人依存• 日付(YYYYMMDDなど)• 人力インクリメント(_01, _02など)• 合わせ技(YYYYMMDD_01など)

• 人依存なのでファイルごとにばらばらになったりする• index.html.01• index.css.20130201• main.js.test

★複数人の作業で人数が増えるほどカオスに★統一を図るのは不可能

Page 26: バージョン管理#01 -Subversion編-

問題点バージョンの「単位」が人依存

Page 27: バージョン管理#01 -Subversion編-
Page 28: バージョン管理#01 -Subversion編-

• ファイル単位

Page 29: バージョン管理#01 -Subversion編-

• ファイル単位• index.html.01

Page 30: バージョン管理#01 -Subversion編-

• ファイル単位• index.html.01• index.css.20130201

Page 31: バージョン管理#01 -Subversion編-

• ファイル単位• index.html.01• index.css.20130201• main.js.test

Page 32: バージョン管理#01 -Subversion編-

• ファイル単位• index.html.01• index.css.20130201• main.js.test

• ディレクトリ単位

Page 33: バージョン管理#01 -Subversion編-

• ファイル単位• index.html.01• index.css.20130201• main.js.test

• ディレクトリ単位• images.bak/

Page 34: バージョン管理#01 -Subversion編-

• ファイル単位• index.html.01• index.css.20130201• main.js.test

• ディレクトリ単位• images.bak/• js.old/

Page 35: バージョン管理#01 -Subversion編-

• ファイル単位• index.html.01• index.css.20130201• main.js.test

• ディレクトリ単位• images.bak/• js.old/• css/20130201/

Page 36: バージョン管理#01 -Subversion編-

• ファイル単位• index.html.01• index.css.20130201• main.js.test

• ディレクトリ単位• images.bak/• js.old/• css/20130201/

★バージョンの管理単位がばらばら★特定のバージョンに一括で戻すのが困難★リリース後バグが判明したので切り戻したい★過去のリリースバージョンを参照したい

Page 37: バージョン管理#01 -Subversion編-

問題点安全に共有できない

Page 38: バージョン管理#01 -Subversion編-
Page 39: バージョン管理#01 -Subversion編-

• ファイルサーバで共有

Page 40: バージョン管理#01 -Subversion編-

• ファイルサーバで共有• 自分の作業場所: C:¥project¥hoge

Page 41: バージョン管理#01 -Subversion編-

• ファイルサーバで共有• 自分の作業場所: C:¥project¥hoge

• 共有場所: ¥¥Server¥project¥hoge

Page 42: バージョン管理#01 -Subversion編-

• ファイルサーバで共有• 自分の作業場所: C:¥project¥hoge

• 共有場所: ¥¥Server¥project¥hoge

• 共有タイミングが人依存

Page 43: バージョン管理#01 -Subversion編-

• ファイルサーバで共有• 自分の作業場所: C:¥project¥hoge

• 共有場所: ¥¥Server¥project¥hoge

• 共有タイミングが人依存• 同時編集の可能性

Page 44: バージョン管理#01 -Subversion編-

• ファイルサーバで共有• 自分の作業場所: C:¥project¥hoge

• 共有場所: ¥¥Server¥project¥hoge

• 共有タイミングが人依存• 同時編集の可能性

★複数人の作業では共有が困難★Aさんの変更が、 Bさんによって上書きされてしまうリスク★ソースコードが壊れてしまうリスク

Page 45: バージョン管理#01 -Subversion編-

問題点履歴管理が困難

Page 46: バージョン管理#01 -Subversion編-
Page 47: バージョン管理#01 -Subversion編-

• コメントで履歴管理

Page 48: バージョン管理#01 -Subversion編-

• コメントで履歴管理• <!-- 2013/02/03 skomatsu

スライドショーを追加 -->

Page 49: バージョン管理#01 -Subversion編-

• コメントで履歴管理• <!-- 2013/02/03 skomatsu

スライドショーを追加 -->

• <!-- 2013/02/04 ishikawa スライドショーを修正 -->

Page 50: バージョン管理#01 -Subversion編-

• コメントで履歴管理• <!-- 2013/02/03 skomatsu

スライドショーを追加 -->

• <!-- 2013/02/04 ishikawa スライドショーを修正 -->

• <!-- 2013/02/05 matsudate 下記バグあり。コメントアウト -->

Page 51: バージョン管理#01 -Subversion編-

• コメントで履歴管理• <!-- 2013/02/03 skomatsu

スライドショーを追加 -->

• <!-- 2013/02/04 ishikawa スライドショーを修正 -->

• <!-- 2013/02/05 matsudate 下記バグあり。コメントアウト -->

★履歴管理がカオスに★差分なんて見れたものではない★誰が、いつ、何の変更をしたか、が不明確

Page 52: バージョン管理#01 -Subversion編-

問題点作業分岐が困難

Page 53: バージョン管理#01 -Subversion編-
Page 54: バージョン管理#01 -Subversion編-

• 保守チーム

Page 55: バージョン管理#01 -Subversion編-

• 保守チーム• バグフィックスなどの修正

Page 56: バージョン管理#01 -Subversion編-

• 保守チーム• バグフィックスなどの修正

• 新機能A開発チーム

Page 57: バージョン管理#01 -Subversion編-

• 保守チーム• バグフィックスなどの修正

• 新機能A開発チーム• 機能追加開発

Page 58: バージョン管理#01 -Subversion編-

• 保守チーム• バグフィックスなどの修正

• 新機能A開発チーム• 機能追加開発

• 新機能B開発チーム

Page 59: バージョン管理#01 -Subversion編-

• 保守チーム• バグフィックスなどの修正

• 新機能A開発チーム• 機能追加開発

• 新機能B開発チーム• Aチームとは別の機能追加開発

Page 60: バージョン管理#01 -Subversion編-

• 保守チーム• バグフィックスなどの修正

• 新機能A開発チーム• 機能追加開発

• 新機能B開発チーム• Aチームとは別の機能追加開発

★複数チームが同時開発すると、 バッティングすることがあるので、 コードベースを分けたい★分けて開発★一本化しようとしたら、マージ地獄★マージし終わっても、あとから見ると出生不明

Page 61: バージョン管理#01 -Subversion編-

バージョン管理システム

• 略してVCS(Version Control System)

• ソース管理(SCM)とも言う

Page 62: バージョン管理#01 -Subversion編-

利点

Page 63: バージョン管理#01 -Subversion編-

利点

• バージョン管理規則は使用するVCSまかせ

Page 64: バージョン管理#01 -Subversion編-

利点

• バージョン管理規則は使用するVCSまかせ

• 複数人作業を手厚くサポート

Page 65: バージョン管理#01 -Subversion編-

利点

• バージョン管理規則は使用するVCSまかせ

• 複数人作業を手厚くサポート

• 履歴管理、閲覧、差分取得が容易

Page 66: バージョン管理#01 -Subversion編-

利点

• バージョン管理規則は使用するVCSまかせ

• 複数人作業を手厚くサポート

• 履歴管理、閲覧、差分取得が容易

• 作業分岐、再統合が容易

Page 67: バージョン管理#01 -Subversion編-

使っていないなら明日からすぐ使って下さい

Page 68: バージョン管理#01 -Subversion編-

種類

• 集中管理型

ref: http://www.atmarkit.co.jp/fjava/rensai4/devtool03/devtool03_1.html

Page 69: バージョン管理#01 -Subversion編-

種類

• 分散型

ref: http://www.atmarkit.co.jp/fjava/rensai4/devtool03/devtool03_1.html

Page 70: バージョン管理#01 -Subversion編-

種類

Page 71: バージョン管理#01 -Subversion編-

種類

• 集中管理型(一例)• フリー: Subversion, CVS

• 商用: Perforce, Team Foundation Server Clear Case, Visual SourceSafe

Page 72: バージョン管理#01 -Subversion編-

種類

• 集中管理型(一例)• フリー: Subversion, CVS

• 商用: Perforce, Team Foundation Server Clear Case, Visual SourceSafe

• 分散型(一例)• フリー: Git, Mercurial, Bazaar, Monotone

• 商用: BitKeeper, Code Co-op, Synergy

Page 73: バージョン管理#01 -Subversion編-

Subversion集中管理型リポジトリのデファクトスタンダード

Page 74: バージョン管理#01 -Subversion編-

仕組み

作業コピー リポジトリ

Page 75: バージョン管理#01 -Subversion編-

仕組み

①(最新版)取得作業コピー リポジトリ

Page 76: バージョン管理#01 -Subversion編-

仕組み

②変更

①(最新版)取得作業コピー リポジトリ

Page 77: バージョン管理#01 -Subversion編-

仕組み

②変更

③登録

①(最新版)取得作業コピー リポジトリ

Page 78: バージョン管理#01 -Subversion編-

仕組み

②変更

③登録

①(最新版)取得

• 登録・・・コミット

作業コピー リポジトリ

Page 79: バージョン管理#01 -Subversion編-

仕組み

②変更

③登録

①(最新版)取得

• 登録・・・コミット

• 取得・・・チェックアウト、アップデート

作業コピー リポジトリ

Page 80: バージョン管理#01 -Subversion編-

基本的な使い方

Page 81: バージョン管理#01 -Subversion編-

基本的な使い方1.チェックアウト/アップデート

• 作業ディレクトリに最新版を取得

Page 82: バージョン管理#01 -Subversion編-

基本的な使い方1.チェックアウト/アップデート

• 作業ディレクトリに最新版を取得

2.変更• 作業ディレクトリ内のファイルを修正

Page 83: バージョン管理#01 -Subversion編-

基本的な使い方1.チェックアウト/アップデート

• 作業ディレクトリに最新版を取得

2.変更• 作業ディレクトリ内のファイルを修正

3.コミット• 作業ディレクトリ内のファイルをリポジトリに登録

Page 84: バージョン管理#01 -Subversion編-

リポジトリ

Page 85: バージョン管理#01 -Subversion編-

• コンテンツが履歴管理されている

リポジトリ

Page 86: バージョン管理#01 -Subversion編-

• コンテンツが履歴管理されている

• 変更をコミットすると、自動的にバージョン(リビジョン)が上がる

リポジトリ

Page 87: バージョン管理#01 -Subversion編-

作業コピー

Page 88: バージョン管理#01 -Subversion編-

• リポジトリと紐付いたローカルディレクトリ

作業コピー

Page 89: バージョン管理#01 -Subversion編-

• リポジトリと紐付いたローカルディレクトリ• リポジトリに意図的にコミットするまで、コンテンツは同期されない

作業コピー

Page 90: バージョン管理#01 -Subversion編-

• リポジトリと紐付いたローカルディレクトリ• リポジトリに意図的にコミットするまで、コンテンツは同期されない

• コミットせずに取り消すこともできる

作業コピー

Page 91: バージョン管理#01 -Subversion編-

• リポジトリと紐付いたローカルディレクトリ• リポジトリに意図的にコミットするまで、コンテンツは同期されない

• コミットせずに取り消すこともできる• 作業コピーを消しても、リポジトリは消えない

作業コピー

Page 92: バージョン管理#01 -Subversion編-

Subversionとは• 元々 CollabNet, Inc. が開発したVCS

• CVSの置き換えを狙って作られた

• 2010年にApacheトッププロジェクト

• Apacheライセンス(オープンソース)

• Win/Mac/Linux など、幅広いプラットフォームで動作

Page 93: バージョン管理#01 -Subversion編-

GUIクライアント

• Windows

• TortoiseSVN など

• Mac

• Versions, Cornerstone など

• Linux

• Esvn, RabbitVCS など

Page 94: バージョン管理#01 -Subversion編-

IDE連携

• バージョン管理連携機能がついたIDEでは、Subversionは対応済みのことが多い

• Eclipse

• Visual Studio

• Xcode

• etc..

Page 95: バージョン管理#01 -Subversion編-

Subversion 初歩

Page 96: バージョン管理#01 -Subversion編-

1. チェックアウト

Page 97: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの

Page 98: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

Page 99: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

• https://...

Page 100: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

• https://...• svn://...

Page 101: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

• https://...• svn://...• file://...

Page 102: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

• https://...• svn://...• file://...

• (ユーザ)

Page 103: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

• https://...• svn://...• file://...

• (ユーザ)• (パスワード)

Page 104: バージョン管理#01 -Subversion編-

URL?サーバが必要?

Page 105: バージョン管理#01 -Subversion編-

YESおおむね、必要。

が、無くてもできる。

Page 106: バージョン管理#01 -Subversion編-

file://...ローカルディレクトリや、

共有ディレクトリに使える。

Page 107: バージョン管理#01 -Subversion編-

今からバージョン管理始めるなら

とりあえず file://... で始めるのが楽

→ あとからサーバ移行もできる

Page 108: バージョン管理#01 -Subversion編-

Windows しかないならTortoiseSVN で全部完結

Page 109: バージョン管理#01 -Subversion編-

なので

Page 110: バージョン管理#01 -Subversion編-

バージョン管理していないなら明日からすぐ!

Page 111: バージョン管理#01 -Subversion編-

TortoiseSVNの良い良い参考サイト紹介

http://techblog.yahoo.co.jp/tips/subversion-for-designers-01/

http://techblog.yahoo.co.jp/tips/subversion-for-designers-02/

もうファイル管理で困らない! デザイナーのためのSubversion/TortoiseSVN入門

デザイナーのためのSubversion/TortoiseSVN入門2 -Subversionでのフォルダーの命名・構成とTortoiseSVNの便利な使い方-

http://d.hatena.ne.jp/sinsoku/20100405/1270397683TortoiseSVNの基本的な使い方 その1

Page 112: バージョン管理#01 -Subversion編-

TortoiseSVNの良い良い参考サイト紹介

http://techblog.yahoo.co.jp/tips/subversion-for-designers-01/

http://techblog.yahoo.co.jp/tips/subversion-for-designers-02/

もうファイル管理で困らない! デザイナーのためのSubversion/TortoiseSVN入門

デザイナーのためのSubversion/TortoiseSVN入門2 -Subversionでのフォルダーの命名・構成とTortoiseSVNの便利な使い方-

http://d.hatena.ne.jp/sinsoku/20100405/1270397683TortoiseSVNの基本的な使い方 その1

Google Code の Wiki にリンク集として掲載してます

Page 113: バージョン管理#01 -Subversion編-

1. チェックアウト脱線

したので再掲

Page 114: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの

脱線したので再掲

Page 115: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

脱線したので再掲

Page 116: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

• https://...

脱線したので再掲

Page 117: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

• https://...• svn://...

脱線したので再掲

Page 118: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

• https://...• svn://...• file://...

脱線したので再掲

Page 119: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

• https://...• svn://...• file://...

• (ユーザ)

脱線したので再掲

Page 120: バージョン管理#01 -Subversion編-

1. チェックアウト

• チェックアウトに必要なもの• URL

• https://...• svn://...• file://...

• (ユーザ)• (パスワード)

脱線したので再掲

Page 121: バージョン管理#01 -Subversion編-

皆さんにはすでにしていただきました

Page 122: バージョン管理#01 -Subversion編-

作業コピーを見てみよう

• 手順通りにチェックアウトしたなら

• Windows の方

• C:¥tech-study¥workspace¥sample-web

• Mac の方

• ~/Documents/tech-study/workspace/sample-web

Page 123: バージョン管理#01 -Subversion編-

作業コピーを見てみよう

Page 124: バージョン管理#01 -Subversion編-

作業コピーを見てみよう

★.svn ディレクトリがある = 作業コピー(OSの設定によっては表示されません)

Page 125: バージョン管理#01 -Subversion編-

2. 変更

Page 126: バージョン管理#01 -Subversion編-

2. 変更

• Eclipse で、それぞれHTMLファイルを作成してください

Page 127: バージョン管理#01 -Subversion編-

2. 変更

• Eclipse で、それぞれHTMLファイルを作成してください

• testN.html (Nは数字)というファイル名で作成してください

Page 128: バージョン管理#01 -Subversion編-

(1) public_html の上で右クリック

(2) New をクリック

(3) File をクリック

Page 129: バージョン管理#01 -Subversion編-

(1) ファイル名を入力

(2) Finish をクリック

Page 130: バージョン管理#01 -Subversion編-

? がついてる= まだバージョン管理されていない

なにか、適当なHTMLを入力して保存してください

Page 131: バージョン管理#01 -Subversion編-

3. コミット

Page 132: バージョン管理#01 -Subversion編-

3. コミット

• 作成したHTMLをコミットしてください

Page 133: バージョン管理#01 -Subversion編-

(1) sample-web を右クリック

(2) Team をクリック

(3) リポジトリーと同期をクリック

Page 134: バージョン管理#01 -Subversion編-

(1) + アイコンでツリーを展開

(2) 新たに test0.html をバージョン管理下におくことを意味する

(3) 赤い方の矢印をクリックしてコミット

Page 135: バージョン管理#01 -Subversion編-

(1) コミットメッセージを入力

(2) 自分が作成したファイルが追加対象になってることを確認

(3) OKをクリック

Page 136: バージョン管理#01 -Subversion編-

コミットメッセージ?

なにそれおいしいの?

Page 137: バージョン管理#01 -Subversion編-

無いと困る

Page 138: バージョン管理#01 -Subversion編-

コミットメッセージ

Page 139: バージョン管理#01 -Subversion編-

コミットメッセージ

• コミット時に、任意のコメントを書ける

Page 140: バージョン管理#01 -Subversion編-

コミットメッセージ

• コミット時に、任意のコメントを書ける• そのコミットが、何の意図を持ってしたのかなどをコメントする

Page 141: バージョン管理#01 -Subversion編-

コミットメッセージ

• コミット時に、任意のコメントを書ける• そのコミットが、何の意図を持ってしたのかなどをコメントする• 後から履歴を追うときに大変重要

Page 142: バージョン管理#01 -Subversion編-

コミットメッセージ

• コミット時に、任意のコメントを書ける• そのコミットが、何の意図を持ってしたのかなどをコメントする• 後から履歴を追うときに大変重要• コミットメッセージがないと、「この変更は何なの?」となりやすい

Page 143: バージョン管理#01 -Subversion編-

コミットメッセージの例

Page 144: バージョン管理#01 -Subversion編-

コミットメッセージの例

• BUG xxx を修正

Page 145: バージョン管理#01 -Subversion編-

コミットメッセージの例

• BUG xxx を修正• ストーリー yyy を実装

Page 146: バージョン管理#01 -Subversion編-

コミットメッセージの例

• BUG xxx を修正• ストーリー yyy を実装• チケット zzz を完了

Page 147: バージョン管理#01 -Subversion編-

コミットメッセージの例

• BUG xxx を修正• ストーリー yyy を実装• チケット zzz を完了• ○○を実装。実はまだ△△機能がIEで動かない。

Page 148: バージョン管理#01 -Subversion編-

コミットメッセージの例

• BUG xxx を修正• ストーリー yyy を実装• チケット zzz を完了• ○○を実装。実はまだ△△機能がIEで動かない。

補足情報もいれると、コミットログの情報量が増えて良い

Page 149: バージョン管理#01 -Subversion編-

4. 履歴を見る

Page 150: バージョン管理#01 -Subversion編-

4. 履歴を見る

• Eclipse で、 sample-web プロジェクトの履歴を確認してください

Page 151: バージョン管理#01 -Subversion編-

(1) Java パースペクティブを選択

Page 152: バージョン管理#01 -Subversion編-

(1) sample-web を右クリック

(2) Team を選択

(3) リソース・ヒストリーを表示 をクリック

Page 153: バージョン管理#01 -Subversion編-
Page 154: バージョン管理#01 -Subversion編-

リビジョン履歴が表示される

Page 155: バージョン管理#01 -Subversion編-

リビジョン履歴が表示される

該当リビジョンでの変更ファイル

Page 156: バージョン管理#01 -Subversion編-

5. さらに変更を加える

Page 157: バージョン管理#01 -Subversion編-

5. さらに変更を加える

• 追加したファイル(testN.html)に、何か変更を加えてください

Page 158: バージョン管理#01 -Subversion編-

5. さらに変更を加える

• 追加したファイル(testN.html)に、何か変更を加えてください• <p>一行追加</p> みたいなのでいいです

Page 159: バージョン管理#01 -Subversion編-

(1) 何か変更する

(2) 変更があることを意味する「>」印がつく

Page 160: バージョン管理#01 -Subversion編-

(1) sample-web を右クリック

(2) Team をクリック

(3) リポジトリーと同期をクリック

Page 161: バージョン管理#01 -Subversion編-

(1) ツリーを展開

(2) コミット可能な変更があることを意味する「→」マークがついている

(3) sample.html をダブルクリックする

Page 162: バージョン管理#01 -Subversion編-

ローカルファイルの状態

Page 163: バージョン管理#01 -Subversion編-

リポジトリ最新の状態

リポジトリ最新に比べて、一行追加されている

Page 164: バージョン管理#01 -Subversion編-

コミットボタンをクリック

Page 165: バージョン管理#01 -Subversion編-

コミットメッセージの入力

OKをクリック

Page 166: バージョン管理#01 -Subversion編-

6. 差分を見る

• 追加した testN.html を右クリックし、Team -> リソース・ヒストリーを表示をクリックしてください

• 選択したリビジョン間の差分を見ることができます• 比較したいリビジョンをCtrl/Cmdを押しながら選択

• Compare with Each Other

Page 167: バージョン管理#01 -Subversion編-

一歩進んだバージョン管理

Page 168: バージョン管理#01 -Subversion編-

ブランチ

• 日本語訳: 枝

• ソースコードを枝分かれさせたいとき

• 機能単位、作業単位で枝分けしたりする

• メインの枝は幹(trunk)

Page 169: バージョン管理#01 -Subversion編-

Subversion でのブランチ• 以下のようなツリー構造が推奨されている

• branches 配下に、各ブランチを格納

リポジトリ├── trunk│ └── trunk のソースコード└── branches ├── branch1 │ └── branch1 のソースコード └── branch2 └── branch2 のソースコード

Page 170: バージョン管理#01 -Subversion編-

タグ

• 洋服などについてる「タグ」と同じ意味

• ラベルとも言える

• 特定のバージョンに名前を付けたいときに使う

Page 171: バージョン管理#01 -Subversion編-

Subversion でのタグ• 以下のようなツリー構造が推奨されている

• tags 配下に、各タグを格納

リポジトリ├── trunk│ └── trunk のソースコード└── tags ├── tag1 │ └── tag1 のソースコード └── tag2 └── tag2 のソースコード

Page 172: バージョン管理#01 -Subversion編-

ブランチの活用例1

• trunkはメインストリーム版

• branchはベータ版

Page 173: バージョン管理#01 -Subversion編-

ブランチの活用例2

• trunkはFIXしたソースコードのみ

• 開発はすべてbranchで行う

• 開発完了したbranchはtrunkにマージする

Page 174: バージョン管理#01 -Subversion編-

弊社での例

• trunk・・・メインストリーム、FIX済み専用

• branch・・・機能ごと、BUGFIXごとにブランチ

• tag・・・リリースバージョンごとにタグ

Page 175: バージョン管理#01 -Subversion編-

リポジトリ├── trunk├── branches│ ├── redmine-1│ ├── redmine-2│ └── redmine-3└── tags ├── release-1.0.0 ├── release-1.0.1 └── release-1.1.0

• チケット駆動開発• どのブランチでどの機能開発・BUGFIXをしているか一目瞭然

• ソースが混在しない

Page 176: バージョン管理#01 -Subversion編-

おわり

• 2時間でハンズオン混みで、Subversion によるバージョン管理の魅力をお伝えするのはなかなか難しいですね(私の講師力が低いとも)。

• Git編もやりたいのですが、それよりももっと Subversion を活用した例、バックアップなどの運用ノウハウなど聞きたい方が居れば、リクエストください。

• お疲れさまでした。