&pgid();

**はじめに [#ie4ed06f]
アークウェブでは、システム陣は以前からプログラムのバージョン管理にSubversionを使っています。しかし、企画やデザイン陣は開発プロセスの中にチームとしてのバージョン管理スキームを持っておらず、個々人がそれぞれのやり方で管理している状態でした。

-社内のプロジェクト管理システムがPukiWikiからtracに移行しはじめていること、
-デザインとシステムが一緒に開発する案件が増えていること、
-外部スタッフを含め複数のデザイナで仕事をする機会が多いこと

などの状況を踏まえて、
''企画・デザインスタッフの開発過程にもSubversionを取り入れてみようよ''ということで、WindowsのSubversionクライアントアプリである「TortoiseSVN」での具体的な使い方の勉強会をしました。

Subversion自体のインストールやリポジトリの作成はすでに準備されている前提で、利用者としての立場に必要な機能を中心に学びました。

**目次 [#m48ee130]
#contents();

#blikimore

**0.Subversionで何ができる? [#s47b7fdd]
-チームで作業する時のバージョン管理ができる(もちろん一人で使っても良い)
-「やっちまったー」時のロールバック(作業開始時へ、あるいは特定のリビジョンへ戻せたり)
- 複数スタッフによる同時並行作業での衝突を管理できる(ただしSVNが勝手に自動調整してくれるわけではない。そこはスタッフ間で調整する。)
- リリース直前でソースを固定したい状況下でも、そのリリースバージョンに影響なく第2フェーズの別機能開発などを進められる(trunc, branch, tags)。
-バージョン間の差分が取れる(ASCIIファイル限定)。

***企画やデザインのスタッフが使うメリットはあるの? [#e35cfee9]
- HTML, CSS, JavaScriptコードなどのテキストファイルは、メリットを全面享受できる。
-- バージョン管理、バックアップ
-- メンバー間の作業衝突回避
- パワポとか画像などのバイナリファイルは、差分を取ったりはできない。
- でも、デザインやドキュメントのバージョン管理ツールとして使えるんでね?
-- 更新履歴の記録とチーム間共有
-- [wireframe08xxxx.pps]式ファイル名(日付を含めたりverNoを入れたり...)による管理からの脱却
-- 最新版ドキュメントにみんながアクセスできる。一人持ちの弊害からの脱却。
-例えばMovableTypeのテンプレとか、いきなりオンラインで弄らないでこれで管理するといいのでは?


**1.準備(クライアントアプリのインストール) [#q9c91395]

:WindowsはTortoiseSVN|
>
-下記URLより、本体、日本語パックをDLしてこの順にインストールする。
--http://tortoisesvn.net/downloads
-- 本体は32bit Installer版を、
-- 日本語パックがページ下方にあるので同じく32bit版をダウンロードする
-【メニューの日本語化】
エクスプローラーで適当なファイルの上で右クリックし、[TortoiseSVN] -> [設定(英語)] で設定メニューを開いて言語として日本語を選択すればOK。
<

:MacはSCPluginなど?!|
>
-SCPluginなどが好評らしい(ちゃんと調べられてない)
http://ihara.vox.com/library/post/macのsubversion設定.html
-【課題】外部デザインスタッフのMacユーザは多いので、定番ソフトを選ぶ
<


**2.基本の流れ [#uae8631e]
***2-1. プロジェクト開始時:リポジトリの作成、インポート [#x4ead3fd]
-我々(企画・デザイン部隊)は、既に存在するものと思って良い
 ※通常はシステム担当者が最初に設定して、URIを案内してくれる。
-一人で使う場合は、ローカルPC上に適当に(勉強会ではこの方式で進める)。

***2-2. 開発中:作業の基本な流れ [#s2806776]

   [SVN]ローカルPCに ''これが[チェックアウト]''
   ↓
   作業              <--------------------------+
   ↓                                           |
   テスト環境などで確認                         |
   ↓                                           |
   [SVN]適当な区切りで ''これが[コミット]'' ----+
   ↓
   [OK]
   ↓
   [レビューやリリース]本番環境にアップロード等


***2-3. 一通りやってみよう [#i3c036ab]
- ローカルPC上に作業環境を作る
 C:\・・\AさんのPCのつもり\work
- ここにチェックアウト (最新版がコピーされた) ->''[SVNチェックアウト]''メニュー
- corp.htmlをコミットしてみる。->''[SVNコミット]''メニュー
- hoge.htmlを新規作成して追加、コミットしてみる。 ->''[追加]''メニュー
- corp.htmlを編集して、元に戻す ''[元に戻す]''メニュー
- hoge.htmlをproduct.htmlにリネーム、コミットする ->''[名前の変更]''メニュー
 

''■最初に覚えるメニュー''
|TortoiseSVNのメニュー名|参考(コマンド)|できること|h
|SVNチェックアウト|svn checkout|SVNから最新バージョンのセットを取ってくる&br;以前のバージョンも取得可能|
|コミット|svn commit|ローカルのファイルをSVNにあげる(レビジョンが1つ上がる)|
|追加・削除・名前の変更|svn add/delete/move|ディレクトリやファイルを追加/削除/名前の変更(予約)する。&br;【注意】その後コミットして初めてSVNに反映される。|
|元に戻す|svn revert|チェックイン直後の状態に戻す。ローカル作業環境内の話。SVN側には影響しない。|
|変更をチェック|svn status|チェックアウト直後の状態からの、変更内容を表示する。&br;さらに [リポジトリをチェック]すると、最新バージョンとの差を表示する。|
|ログを表示|svn log|ログ(変更履歴のメモ)を表示する|

**3.チームで使う時 [#d3103223]
- 2人同時にコミットはできない。
- コミット時、作業箇所が異なる場合は自動マージされる
- 作業箇所がぶつかっている場合は、[SVN更新]。差分ファイルができているので、それを見ながら衝突箇所を調整後再コミット。
-- 衝突箇所は、自分たちで調整する。Subversionは何かしてくれるわけではない。
-- スタッフ間のコミュニケーションが大事。
-- バッティングしないようにスタッフ間であらかじめ作業範囲の棲み分けする。


''■チームで使う時に役立つメニュー''
|TortoiseSVNのメニュー名|参考(コマンド)|できること|h
|SVN更新||ローカル作業環境上のレビジョンが古い場合に、最新レビジョンにする。自分が作業している間に、他の人がコミットしてレビジョンが上がったようなケースで使う。&br;[更新]→[コミット]の順に行う(更新後でないとコミットできない)。|


***3-2. やってみよう [#r81f1746]
- Aさんの作業環境とは別に、Bさんのつもりで作業環境を作る。(本当は別のPCなんだけど、1マシンで説明する都合)
 C:\・・\BさんのPCのつもり\work

- Bさんも作業しています。
- Aさんがcommon.cssを編集する。h1をyellowとかに。
- Bさんがcommon.cssを編集する。h1をgreenとかにして先にコミットしちゃった。
- Aさんコミット。ブブー(叱られる)。
- Aさん:差分ファイルができているので確認。修整して再コミット。

***3-3. trunc, branch, tag [#i8d40555]
-trunc(開発の本幹バージョン), branch(枝バージョン。さらにver.1.0, 2.0ごとに分けたりする), tags(あるタイミングのスナップショットみたいなもの?!)

- 社内ではどう使いわけしている?(進地さんから紹介)
- オープンソースでの開発とかでどんな風に使っているか見て見よう。
WordPress.orgを例に取り、[ToitoiseSVN]->[リポジトリブラウザ]メニューから覗いてみる。
--http://svn.automattic.com/wordpress/trunk
--同じものをtrac の svnビューワでみたらこんな感じ
http://trac.wordpress.org/browser

 
**もっと機能はあるけど、今日はここまで。 [#ja25dac0]
今回は、やらなかったこと
- マージ: 更新内容を、別のブランチにも反映させる。
- trunk, branch, tagの話とか
- mergeリリースブランチでのバグ修正


#blikifooter(八木)

tag: [[SubVersion>tag/SubVersion]],[[プロジェクト管理>tag/プロジェクト管理]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

アークウェブのサービスやソリューションはこちら