yamaguchi webgroup06 subversion

46
@mikage014 / RYOSUKE AKIYAMA バージョン管理 Subversion + Webistrano

Upload: ohishi-mikage

Post on 02-Jul-2015

851 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Yamaguchi webgroup06 subversion

@ m i k a g e 0 1 4 / R Y O S U K E A K I Y A M A

バージョン管理Subversion + Webistrano

Page 2: Yamaguchi webgroup06 subversion

インフラエンジニア 5年→転職

L i n u x , S o l a r i sでインターネットシステムの設計・構築

プログラマ 2年目

P H P + P o s t g r e s q lで業務系W E Bシステムの設計・構築

ブログ

h t t p : / / d . h a t e n a . n e . j p / m i k a g e 0 1 4 /

T w i t t e r : @ m i k a g e 0 1 4

←このアイコンが目印です

About Me

Page 3: Yamaguchi webgroup06 subversion

バージョン管理とは

Page 4: Yamaguchi webgroup06 subversion

バージョン管理とは

ファイルやプロジェクトに対して

「誰が」

「いつ」

「どんな変更を行ったか」

を記録すること

Page 5: Yamaguchi webgroup06 subversion

バージョン管理のやり方

集中型

分散型

Page 6: Yamaguchi webgroup06 subversion

集中型のバージョン管理

• ファイルを一か所に集めて管理する

Page 7: Yamaguchi webgroup06 subversion

分散型のバージョン管理

• それぞれの端末でリポジトリの複製を持つ

• 端末間で変更を

取り込むことが可能

Page 8: Yamaguchi webgroup06 subversion

よく使われるバージョン管理システム

• 集中型

• CVS

• Subversion

• 分散型

• Git

• Mecurial

他にもいろいろあります

Page 9: Yamaguchi webgroup06 subversion

CVS (しーぶいえす)

• 集中型

• ファイル単位のバージョン管理

• ファイルの移動、名前の変更ができないConfigファイルの管理とか

• 開発環境との連携実績が豊富CVSを使わせられるとしたら開発環境縛り?

Page 10: Yamaguchi webgroup06 subversion

Subversion (さぶばーじょん)

• 集中型

• もっとも広く活用されている

• プロジェクト単位のバージョン管理

• ファイル・フォルダの名前の変更・移動ができる

• CVSの順当進化

• Windowsクライアント(TortoiseSVN)が安定• テキストはもちろん、Word, Excelの差分表示もできたりする。実用度は(?)

• 但し開発環境との連携はSVNのバージョンにシビア

• AnkhSVN, SubscripseとTortoiseSVNは併用しない方がいい

Page 11: Yamaguchi webgroup06 subversion

Git (ぎっと)

• Linuxカーネルのソースコード管理を目的として、リーナス・トーバルズによって開発された

CVS, Subversionを嫌っていたリーナス氏が冗談めかして曰く、

「設計上のことで確信が持てない場合は、CVSと逆の決断をする」

• 分散型リポジトリオフラインで開発ができる

• ブランチ、マージが高速

• GitHubRuby on Railsで開発されたGitのプロジェクトホスティングサービス

無償版と有償版がある。無償版はpublicのみ

Page 12: Yamaguchi webgroup06 subversion

Mercurial (まーきゅりある)

• Pythonで実装されている

• 分散型リポジトリ

• 概念上はシンプルなままで、高度なブランチ機能とマージ機能を持つ ・・・らしい。

• Gitとお互いの良いところを取り込んでいる

正直GitもMercurialも使ったことないのでよくわかりません(ぉ

今から始めるなら先進的なGitかMercurialがおすすめ。

個人ではGitかMercurial、中央リポジトリはSubversionという話もよく聞きます。

Page 13: Yamaguchi webgroup06 subversion

Other SCM (あざーそふとうぇあこんふぃぎゅれーしょんまねじめんと)

分散バージョン管理Git/Mercurial/Bazaar徹底比較

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

Page 14: Yamaguchi webgroup06 subversion

バージョン管理を使うメリット

• ネットワーク経由でファイルを取り出して開発ができる1台のパソコンに縛られない

• いつでも以前の状態に戻れる

• バージョン間の差分を確認できる誰がいつどこを変更した?

• 誰かと誰かが変更したものを自動的にマージできる誰がどこを変更したかを管理しているからできるワザ

同じファイルでも互いに違う箇所を編集していれば自動的にマージされます

けっこう賢い!

Page 15: Yamaguchi webgroup06 subversion

注)G i tやM e r c u r i a lでは言葉の意味合いが違う場合があります。

Subversion

Page 16: Yamaguchi webgroup06 subversion

Subversionの基本用語

• Import

Page 17: Yamaguchi webgroup06 subversion

Subversionの基本用語

Repository (リポジトリ)

「誰が」「いつ」「どんな変更を行ったか」を

記録するデータベース

Import (インポート)

ファイル・ディレクトリをリポジトリに取り込むこと

Page 18: Yamaguchi webgroup06 subversion

Subversionの基本用語

• Checkout

Page 19: Yamaguchi webgroup06 subversion

Subversionの基本用語

Checkout (チェックアウト)

リポジトリから編集・閲覧用にファイルを取り出すこと

作業コピー(ワーキングコピー)

リポジトリからチェックアウトしたファイルのこと

Subversionでは各ディレクトリに.svnという隠しフォルダが作られて

変更情報が管理される

Page 20: Yamaguchi webgroup06 subversion

Subversionの基本用語

• Update, Commit

Page 21: Yamaguchi webgroup06 subversion

Subversionの基本用語

Commit(コミット)

作業コピーに対して行った変更をリポジトリに保存する

「どんな変更を行ったか」を記したものがコミットログ

これを頼りにファイルを探すことになるので具体的な内容を書くこと

Update(更新・アップデート)

誰かがリポジトリに行った変更を作業コピーに取り込む

Update→ Commitが基本

Page 22: Yamaguchi webgroup06 subversion

Subversionの基本用語

• Export

Page 23: Yamaguchi webgroup06 subversion

Subversionの基本用語

Export(エクスポート)

リポジトリからバージョン管理から外して

ファイルを取り出す

サーバにアップロードするときなどはこの操作をして.svnフォルダを

取り除いたファイルを取り出す

Page 24: Yamaguchi webgroup06 subversion

Subversionの基本用語

• Branch, Merge

Page 25: Yamaguchi webgroup06 subversion

Subversionの基本用語

Branch (ブランチ)大きな変更を加えたり、1.0.x系, 1.1.x系などバージョンごとにコミット操作を分けるのに使う

特定顧客向けに変更を加えたいときにも使える

Tag (タグ)リリースごとに付ける目印 1.0.1, 1.0.2など

(Subversionでは実態はBranchと同じ)

Merge (マージ)ブランチの変更をトランクにマージしたり、その逆ができる

Page 26: Yamaguchi webgroup06 subversion

Subversionを使ってみよう

Page 27: Yamaguchi webgroup06 subversion

Subversionのインストール

• サーバ

• Trac Lightning

• http://sourceforge.jp/projects/traclight/

• クライアント

• TortoiseSVN

• http://tortoisesvn.net/downloads

• 本体と下のほうにあるLanguagePack – Japaneseの2つ

どちらもWindows環境で動作します。

TracLightningを入れたPCがサーバになります。

クライアントと同じPCにも同居は可能です。

Page 28: Yamaguchi webgroup06 subversion

Subversionのインストール

• Trac Lightning

コンポーネントの選択はSubversionだけならベースインストールでOK

ローカルのポート80が使われる。httpd.confで変更可。 ぐぐってね!

Page 29: Yamaguchi webgroup06 subversion

Trac Lightningの設定

• 初めに1回

• 管理画面からTracのユーザーを作る

管理画面はちょっとクセがあります

• プロジェクトごとに

• コマンドプロンプトからプロジェクトを作る

• 管理画面からプロジェクトにユーザーを割り当てる

画像が貼りきれないのでデモします

Page 30: Yamaguchi webgroup06 subversion

Subversionを使ってみよう

• 新規プロジェクトの作成 (Trac Lightning)

1. スタートメニュー>プログラム>Trac>コマンドプロンプト

2. create-project.bat <プロジェクト名>

Page 31: Yamaguchi webgroup06 subversion

Subversionを使ってみよう

• プロジェクトの作成 (TortoiseSVN)

1. フォルダを右クリック>TortoiseSVN>インポート

Page 32: Yamaguchi webgroup06 subversion

Subversionを使ってみよう

1. http://<ホスト名>/svn/<プロジェクト名>

2. trunkフォルダを作ってインポート

Page 33: Yamaguchi webgroup06 subversion

Subversionを使ってみよう

1. インポート完了!

Page 34: Yamaguchi webgroup06 subversion

Subversionを使ってみよう

• チェックアウト

インポートに使ったフォルダはそのまま作業コピーにはできないので

どこかによけておいて、チェックアウト

Page 35: Yamaguchi webgroup06 subversion

Subversionを使ってみよう

• 作業コピーを編集

Page 36: Yamaguchi webgroup06 subversion

Subversionを使ってみよう

• コミット

新しく追加したファイルを忘れないように

Page 37: Yamaguchi webgroup06 subversion

Subversionを使ってみよう

• エクスポート

サーバにアップロードするときはエクスポートしたものを使う

.svnを狙うワームもいる

Page 38: Yamaguchi webgroup06 subversion

S u b v e r s i o n+W e b i s t r a n oで簡単にデプロイしよう!

Webistrano

Page 39: Yamaguchi webgroup06 subversion

Webistranoとは

Ruby on Rails向けのデプロイツール CapistranoのWeb版

Page 40: Yamaguchi webgroup06 subversion

Webistranoとは

Web管理画面からワンクリックでリポジトリの最新ファイルをWebサーバにデプロイ(配布)するツール

Page 41: Yamaguchi webgroup06 subversion

Webistranoのいいところ

シンボリックリンクの付け替えで瞬時の切替

デプロイの世代管理(デプロイの取り消しができる)

複数サーバに同じ処理を実行

完了後のメール通知

Apacheの再起動

コマンド実行の自動化

本番環境向けにDBのConfigファイルを上書きしたり、

tmpのアクセス権を777にしたりできる

Page 42: Yamaguchi webgroup06 subversion

動作環境

Rubyが動く環境

リポジトリはSubversionが想定されているほかのリポジトリでも手を加えれば使える

SSHで入れるWebサーバ

インストールが少し難しいブログに書いておきました

http://d.hatena.ne.jp/mikage014/20101113/1289616132

Page 43: Yamaguchi webgroup06 subversion

インストール後の設定

プロジェクトの設定

Page 44: Yamaguchi webgroup06 subversion

インストール後の設定

ホストの設定

Page 45: Yamaguchi webgroup06 subversion

デモ

Page 46: Yamaguchi webgroup06 subversion

デモ

デプロイ動かなかった\(^o^)/

終わり