yamaguchi webgroup06 subversion

Post on 02-Jul-2015

851 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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^)/

終わり

top related