yamaguchi webgroup06 subversion
TRANSCRIPT
@ 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
インフラエンジニア 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
バージョン管理とは
バージョン管理とは
ファイルやプロジェクトに対して
「誰が」
「いつ」
「どんな変更を行ったか」
を記録すること
バージョン管理のやり方
集中型
分散型
集中型のバージョン管理
• ファイルを一か所に集めて管理する
分散型のバージョン管理
• それぞれの端末でリポジトリの複製を持つ
• 端末間で変更を
取り込むことが可能
よく使われるバージョン管理システム
• 集中型
• CVS
• Subversion
• 分散型
• Git
• Mecurial
他にもいろいろあります
CVS (しーぶいえす)
• 集中型
• ファイル単位のバージョン管理
• ファイルの移動、名前の変更ができないConfigファイルの管理とか
• 開発環境との連携実績が豊富CVSを使わせられるとしたら開発環境縛り?
Subversion (さぶばーじょん)
• 集中型
• もっとも広く活用されている
• プロジェクト単位のバージョン管理
• ファイル・フォルダの名前の変更・移動ができる
• CVSの順当進化
• Windowsクライアント(TortoiseSVN)が安定• テキストはもちろん、Word, Excelの差分表示もできたりする。実用度は(?)
• 但し開発環境との連携はSVNのバージョンにシビア
• AnkhSVN, SubscripseとTortoiseSVNは併用しない方がいい
Git (ぎっと)
• Linuxカーネルのソースコード管理を目的として、リーナス・トーバルズによって開発された
CVS, Subversionを嫌っていたリーナス氏が冗談めかして曰く、
「設計上のことで確信が持てない場合は、CVSと逆の決断をする」
• 分散型リポジトリオフラインで開発ができる
• ブランチ、マージが高速
• GitHubRuby on Railsで開発されたGitのプロジェクトホスティングサービス
無償版と有償版がある。無償版はpublicのみ
Mercurial (まーきゅりある)
• Pythonで実装されている
• 分散型リポジトリ
• 概念上はシンプルなままで、高度なブランチ機能とマージ機能を持つ ・・・らしい。
• Gitとお互いの良いところを取り込んでいる
正直GitもMercurialも使ったことないのでよくわかりません(ぉ
今から始めるなら先進的なGitかMercurialがおすすめ。
個人ではGitかMercurial、中央リポジトリはSubversionという話もよく聞きます。
Other SCM (あざーそふとうぇあこんふぃぎゅれーしょんまねじめんと)
分散バージョン管理Git/Mercurial/Bazaar徹底比較
http://www.atmarkit.co.jp/fjava/rensai4/devtool03/devtool03_1.html
バージョン管理を使うメリット
• ネットワーク経由でファイルを取り出して開発ができる1台のパソコンに縛られない
• いつでも以前の状態に戻れる
• バージョン間の差分を確認できる誰がいつどこを変更した?
• 誰かと誰かが変更したものを自動的にマージできる誰がどこを変更したかを管理しているからできるワザ
同じファイルでも互いに違う箇所を編集していれば自動的にマージされます
けっこう賢い!
注)G i tやM e r c u r i a lでは言葉の意味合いが違う場合があります。
Subversion
Subversionの基本用語
• Import
Subversionの基本用語
Repository (リポジトリ)
「誰が」「いつ」「どんな変更を行ったか」を
記録するデータベース
Import (インポート)
ファイル・ディレクトリをリポジトリに取り込むこと
Subversionの基本用語
• Checkout
Subversionの基本用語
Checkout (チェックアウト)
リポジトリから編集・閲覧用にファイルを取り出すこと
作業コピー(ワーキングコピー)
リポジトリからチェックアウトしたファイルのこと
Subversionでは各ディレクトリに.svnという隠しフォルダが作られて
変更情報が管理される
Subversionの基本用語
• Update, Commit
Subversionの基本用語
Commit(コミット)
作業コピーに対して行った変更をリポジトリに保存する
「どんな変更を行ったか」を記したものがコミットログ
これを頼りにファイルを探すことになるので具体的な内容を書くこと
Update(更新・アップデート)
誰かがリポジトリに行った変更を作業コピーに取り込む
Update→ Commitが基本
Subversionの基本用語
• Export
Subversionの基本用語
Export(エクスポート)
リポジトリからバージョン管理から外して
ファイルを取り出す
サーバにアップロードするときなどはこの操作をして.svnフォルダを
取り除いたファイルを取り出す
Subversionの基本用語
• Branch, Merge
Subversionの基本用語
Branch (ブランチ)大きな変更を加えたり、1.0.x系, 1.1.x系などバージョンごとにコミット操作を分けるのに使う
特定顧客向けに変更を加えたいときにも使える
Tag (タグ)リリースごとに付ける目印 1.0.1, 1.0.2など
(Subversionでは実態はBranchと同じ)
Merge (マージ)ブランチの変更をトランクにマージしたり、その逆ができる
Subversionを使ってみよう
Subversionのインストール
• サーバ
• Trac Lightning
• http://sourceforge.jp/projects/traclight/
• クライアント
• TortoiseSVN
• http://tortoisesvn.net/downloads
• 本体と下のほうにあるLanguagePack – Japaneseの2つ
どちらもWindows環境で動作します。
TracLightningを入れたPCがサーバになります。
クライアントと同じPCにも同居は可能です。
Subversionのインストール
• Trac Lightning
コンポーネントの選択はSubversionだけならベースインストールでOK
ローカルのポート80が使われる。httpd.confで変更可。 ぐぐってね!
Trac Lightningの設定
• 初めに1回
• 管理画面からTracのユーザーを作る
管理画面はちょっとクセがあります
• プロジェクトごとに
• コマンドプロンプトからプロジェクトを作る
• 管理画面からプロジェクトにユーザーを割り当てる
画像が貼りきれないのでデモします
Subversionを使ってみよう
• 新規プロジェクトの作成 (Trac Lightning)
1. スタートメニュー>プログラム>Trac>コマンドプロンプト
2. create-project.bat <プロジェクト名>
Subversionを使ってみよう
• プロジェクトの作成 (TortoiseSVN)
1. フォルダを右クリック>TortoiseSVN>インポート
Subversionを使ってみよう
1. http://<ホスト名>/svn/<プロジェクト名>
2. trunkフォルダを作ってインポート
Subversionを使ってみよう
1. インポート完了!
Subversionを使ってみよう
• チェックアウト
インポートに使ったフォルダはそのまま作業コピーにはできないので
どこかによけておいて、チェックアウト
Subversionを使ってみよう
• 作業コピーを編集
Subversionを使ってみよう
• コミット
新しく追加したファイルを忘れないように
Subversionを使ってみよう
• エクスポート
サーバにアップロードするときはエクスポートしたものを使う
.svnを狙うワームもいる
S u b v e r s i o n+W e b i s t r a n oで簡単にデプロイしよう!
Webistrano
Webistranoとは
Ruby on Rails向けのデプロイツール CapistranoのWeb版
Webistranoとは
Web管理画面からワンクリックでリポジトリの最新ファイルをWebサーバにデプロイ(配布)するツール
Webistranoのいいところ
シンボリックリンクの付け替えで瞬時の切替
デプロイの世代管理(デプロイの取り消しができる)
複数サーバに同じ処理を実行
完了後のメール通知
Apacheの再起動
コマンド実行の自動化
本番環境向けにDBのConfigファイルを上書きしたり、
tmpのアクセス権を777にしたりできる
動作環境
Rubyが動く環境
リポジトリはSubversionが想定されているほかのリポジトリでも手を加えれば使える
SSHで入れるWebサーバ
インストールが少し難しいブログに書いておきました
http://d.hatena.ne.jp/mikage014/20101113/1289616132
インストール後の設定
プロジェクトの設定
インストール後の設定
ホストの設定
デモ
デモ
デプロイ動かなかった\(^o^)/
終わり