ピコ勉強会/企画やデザインスタッフもSubversionを使おう http://www.ark-web.jp/sandbox/marketing/wiki/276.html
ピコ勉強会/企画やデザインスタッフもSubversionを使おう
はじめに †
アークウェブでは、システム陣は以前からプログラムのバージョン管理にSubversionを使っています。しかし、企画やデザイン陣は開発プロセスの中にチームとしてのバージョン管理スキームを持っておらず、個々人がそれぞれのやり方で管理している状態でした。
- 社内のプロジェクト管理システムがPukiWikiからtracに移行しはじめていること、
- デザインとシステムが一緒に開発する案件が増えていること、
- 外部スタッフを含め複数のデザイナで仕事をする機会が多いこと
などの状況を踏まえて、
企画・デザインスタッフの開発過程にもSubversionを取り入れてみようよということで、WindowsのSubversionクライアントアプリである「TortoiseSVN」での具体的な使い方の勉強会をしました。
Subversion自体のインストールやリポジトリの作成については省きました。通常プロジェクト立ち上げ時にシステム担当の誰かが準備するので、企画やデザイナスタッフとしては既にある前提で実用上十分ですので。
目次 †
0.Subversionで何ができる? †
- チームで作業する時のバージョン管理ができる(もちろん一人で使っても良い)
- 「やっちまったー」時のロールバック(作業開始時へ、あるいは特定のリビジョンへ戻せたり)
- 複数スタッフによる同時並行作業での衝突を管理できる(ただしSVNが勝手に自動調整してくれるわけではない。そこはスタッフ間で調整する。)
- リリース直前でソースを固定したい状況下でも、そのリリースバージョンに影響なく第2フェーズの別機能開発などを進められる(trunc, branch, tags)。
- バージョン間の差分が取れる(ASCIIファイル限定)。
企画やデザインのスタッフが使うメリットはあるの? †
- HTML, CSS, JavaScriptコードなどのテキストファイルは、メリットを全面享受できる。
- バージョン管理、バックアップ
- メンバー間の作業衝突回避
- パワポとか画像などのバイナリファイルは、差分を取ったりはできない。
- でも、デザインやドキュメントのバージョン管理ツールとして使えるんでね?
- 更新履歴の記録とチーム間共有
- [wireframe08xxxx.pps]式ファイル名(日付を含めたりverNoを入れたり...)による管理からの脱却
- 最新版ドキュメントにみんながアクセスできる。一人持ちの弊害からの脱却。
- 例えばMovableTypeのテンプレとか、いきなりオンラインで弄らないでこれで管理するといいのでは?
1.準備(クライアントアプリのインストール) †
- WindowsはTortoiseSVN
- 下記URLより、本体、日本語パックをDLしてこの順にインストールする。
- http://tortoisesvn.net/downloads
- 本体は32bit Installer版を、
- 日本語パックがページ下方にあるので同じく32bit版をダウンロードする
- 【メニューの日本語化】
エクスプローラーで適当なファイルの上で右クリックし、[TortoiseSVN] -> [設定(英語)] で設定メニューを開いて言語として日本語を選択すればOK。
- 下記URLより、本体、日本語パックをDLしてこの順にインストールする。
- MacはSCPluginなど?!
- SCPluginなどが好評らしい(ちゃんと調べられてない)
http://ihara.vox.com/library/post/macのsubversion設定.html - 【課題】外部デザインスタッフのMacユーザは多いので、定番ソフトを選ぶ
- SCPluginなどが好評らしい(ちゃんと調べられてない)
2.基本の流れ(まず一人で使う場合から) †
2-1. プロジェクト開始時:リポジトリの作成、インポート †
- 我々(企画・デザイン部隊)は、既に存在するものと思って良い
※通常はシステム担当者が最初に設定して、URIを案内してくれる。
- 一人で使う場合は、ローカルPC上の適当な場所に(勉強会ではこの方式で進める)。
2-2. 開発中:作業の基本な流れ †
[SVNチェックアウト]ローカルPCにコピー ''これが[チェックアウト]'' ↓ 作業 <--------------------------+ ↓ | テスト環境などで確認 (繰り返し) ↓ | [SVNコミット]適当な区切りで ''これが[コミット]'' ----+ ↓ [OK] ↓ [レビューやリリース]本番環境にアップロード等
2-3. 一通りやってみよう †
- ローカルPC上に作業環境を作る
C:\・・\AさんのPCのつもり\work
- ここにチェックアウト (最新版がコピーされた) ->[SVNチェックアウト]メニュー
- corp.htmlをコミットしてみる。->[SVNコミット]メニュー
- hoge.htmlを新規作成して追加、コミットしてみる。 ->[追加]メニュー
- corp.htmlを編集して、元に戻す [元に戻す]メニュー
- hoge.htmlをproduct.htmlにリネーム、コミットする ->[名前の変更]メニュー
■最初に覚えるメニュー
TortoiseSVNのメニュー名 | 参考(コマンド) | できること |
SVNチェックアウト | svn checkout | SVNから最新バージョンのセットを取ってくる 以前のバージョンも取得可能 |
コミット | svn commit | ローカルのファイルをSVNにあげる(レビジョンが1つ上がる) |
追加・削除・名前の変更 | svn add/delete/move | ディレクトリやファイルを追加/削除/名前の変更(予約)する。 【注意】その後コミットして初めてSVNに反映される。 |
元に戻す | svn revert | チェックイン直後の状態に戻す。ローカル作業環境内の話。SVN側には影響しない。 |
変更をチェック | svn status | チェックアウト直後の状態からの、変更内容を表示する。 さらに [リポジトリをチェック]すると、最新バージョンとの差を表示する。 |
ログを表示 | svn log | ログ(変更履歴のメモ)を表示する |
3.チームで使う時 †
- 2人同時にコミットはできない。順番に。
- コミット時、作業箇所が異なる場合は自動マージされる
- 作業箇所がぶつかっている場合は、[SVN更新]。差分ファイルができているので、それを見ながら衝突箇所を調整後再コミット。
- 衝突箇所は、自分たちで調整する。Subversionは何かしてくれるわけではない。
- スタッフ間のコミュニケーションが大事。
- バッティングしないようにスタッフ間であらかじめ作業範囲の棲み分けする。
■チームで使う時に役立つメニュー
TortoiseSVNのメニュー名 | 参考(コマンド) | できること |
SVN更新 | ローカル作業環境上のレビジョンが古い場合に、最新レビジョンにする。自分が作業している間に、他の人がコミットしてレビジョンが上がったようなケースで使う。 [更新]→[コミット]の順に行う(更新後でないとコミットできない)。 |
3-2. やってみよう †
- Aさんの作業環境とは別に、Bさんのつもりで作業環境を作る。(本当は別のPCなんだけど、1マシンで説明する都合)
C:\・・\BさんのPCのつもり\work
- Bさんも作業しています。
- Aさんがcommon.cssを編集する。h1をyellowとかに。
- Bさんがcommon.cssを編集する。h1をgreenとかにして先にコミットしちゃった。
- Aさんコミット。ブブー(叱られる)。
- Aさん:差分ファイルができているので確認。修整して再コミット。
3-3. trunk, branch, tag †
- trunk(開発の本幹バージョン), branch(枝バージョン。さらにver.1.0, 2.0ごとに分けたりする), tags(あるタイミングのスナップショットみたいなもの?!)
- 社内ではどう使いわけしている?(進地さんから紹介)
- オープンソースでの開発とかでどんな風に使っているか見て見よう。
WordPress.orgを例に取り、[ToitoiseSVN]->[リポジトリブラウザ]メニューから覗いてみる。- http://svn.automattic.com/wordpress/trunk
- 同じものをtrac の svnビューワでみたらこんな感じ
http://trac.wordpress.org/browser
もっと機能はあるけど、今日はここまで。 †
今回は、やらなかったこと
- マージ(更新内容を、別のブランチにも反映させたり)
- リリースブランチでのバグ修正だとか
- trunk, branch, tagのちゃんとした話とか
- etc..
参考書籍 †
- 「入門Subversion―Windows/Linux対応」上平哲著
- 「Subversion実践入門~達人プログラマに学ぶバージョン管理~」Mike Mason著/でびあんぐる監訳