Subversionのすすめ
の編集
http://ehime-csr-new.sakura.ne.jp/csr/index.php?Subversion%E3%81%AE%E3%81%99%E3%81%99%E3%82%81
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(゜∀゜)
2007/04/01トップページ
2013年末うどんどんツアー
2013春合宿企画
ARK
ASP.NETを使って1行もコーディングせずに作る蔵書管理システム
AVRマイコンなページ
BracketName
C++STL解説
C++STL解説 part01 コンテナ
C.S.R.
C.S.R. OB会のページ
C.S.R. Wiki トップページ
C.S.R.%20Wiki%20%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8
C.S.R.の歴史
C.S.Rゲーム強化週間
CSRオリジナルパーカーをつくろう
CSRプログラミングコンテスト
CSRプロコン第1回
CSRポケモン大会
CSR海外旅行
CSR週末卓ゲー部(TRPG)
CSharp講座
CSharp講座第一回
CSharp講座第三回
CSharp講座第二回
CSharp講座第五回
CSharp講座第四回
C言語における文字列の扱いについて
C言語講座
C言語講座第ニ回
C言語講座第ニ回課題
C言語講座第一回
C言語講座第七回
C言語講座第三回
C言語講座第三回演習
C言語講座第三回演習 解答例
C言語講座第二回 解答例
C言語講座第五回
C言語講座第五回演習
C言語講座第六回
C言語講座第六回演習
C言語講座第六回演習 解答例
C言語講座第四回
D.T.M.
EJBの作成
Eclipseのインストール
Entityの作成
FAQ
FAST
FTP
FizzBuzz
FormatRule
FormattingRules
FrontPage
GlassFish(Ubuntu)
GlassFishの設定
HEAVENS KITCHEN
HIKKY_J
Hawke
Help
IRC
IS01のページ
InterWiki
InterWikiName
InterWikiSandBox
InterWikiテクニカル
JSF-Ajax
JSF-Faceletsの作成
JSF-ManagedBeanの作成
Java
Java EE
Java EEのプロジェクト
Java EEの開発環境
Java EEアプリケーションの実行
Java(Ubuntu)
Java2SDKのインストール
Jupe
KOUJI
KWGJ9
KY cafe
Kuma
LIC
Ledah
Link
Low
MARIKO
MIZUKAZE
Marishi Bank
Marishi Co. Ltd.
MenuBar
Merry X'mas
MySQL
MySQL(Ubuntu)
NAO
NAOのおしえてP・I・C(ぴーあいしー)
NOMAD
Nabe
NetBeansからMySQLに接続
NetBeansでHelloWorld
OB一覧
OpenCV
PCデポ
PHP
Plamo
Processing講座
Processing講座 第一回
Processing講座 第三回
Processing講座 第二回
Processing講座 第五回
Processing講座 第六回
Processing講座 第四回
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
QRコード
RecentDeleted
Rogi
Rupy
SEN
SandBox
Subversionのすすめ
TOM
TechTalk
TechTalk 運営委員会
Test
Toku
T村氏
UDとは?
UD導入ガイド
URALU
Ubuntu(VirtualBox)
VB-オブジェクトのプロパティ
Velxot
VirtualBox
WEB担当の仕事の仕方まとめ
WikiEngines
WikiName
WikiWikiWeb
Wikiって何?
XONY
Y
Yama
YukiWiki
ZECHS
appli
formula
ika
inatyu
iqm
iアプリエミュレータのインストール
justice
kei.K
kepa
maeda
misaki
mojyack(仮)
msnメッセンジャーを使おう
neko
newsky
nginx(Ubuntu)
rariru
rian
s-cat
skipjack
taka
takuto
tano
tanoさんbot
tetra
twitterをはじめよう
uraluさんbot
winbrem
zawawa
zoo
…
あっぴり
あるけい
いろはす
うえさん
うずしお
おかま
おかゆ
おっさん化現象
おんまく寿司
お店
お湯
お知らせ
お花見
かいりょう
かきべえ
かつてないほどてきとーなにくにく
かとそ
かなめ
かまどや
かんきつ
かんきつの好きな曲
がじら
がっきー
がんば亭
くら寿司
ぐぴー
ころん
こんちゃん
さくら
さらし孤
さらし狐
しおかぜ
しおかぜ旅行まとめ
しおかぜ98号
しゃどう
しゃも
じゃんけん(JSF)
すき家
すずっち
すぽんじ
ずんだくん
そのほかの人たち
たおる
たけぞう
だんだん茶屋
ちかさん
つぼ八
つむ
とあるけみすと
とある宴の酒池肉林
とっくん
ともぴー
とらねこ
とりかわ
どーなつ先輩の亡骸.JPG
なかじ
なめくじ
にくにく
にくにくテンプレfor幹事さん
にたも
にゃおぬあ
にゃー
はぃから亭
はいから亭
はいから亭 メニュー.txt
はいから邸
はかいり亭
はだかの王様
はにわ
はま寿司
はゐから亭
ひーこー
ふよごい
ぷりちーなマリシきゅんと何かしよう2008
ほいから亭
ほっかほっか亭
ほっともっと
まぁ
まっつん
まつい
まつい(仮)
まぴょそ
まりしきゅんのおうち
みったん
むしくん
もっとも単純なランレングス圧縮
もな
ゆめタウン
ゆーゆ
ゆーろー
よしすけ
よーむ
よーむ → MY
りふれ
ろぎ
ろくめいかん
わかば
わっさ家
ゑくれあ
アクアパッツァ大会
アザミ
アプライド
アラバスタ
アリオ倉敷
アルミ−
アーカイブ
イオン
イオンモール倉敷
イオンモール岡山
イチ
イブソン
イベント
エディオン
エミフルMASAKI
エルノーツ
エンケラドス
オッパオ
カシテル
カチコール
カーくん
ガスト
キャデン
キリン
クラスタ(GlassFish)
クロミル
ケンタッキー
ケーズデンキ
ゲーム一覧
ゲーム製作集会
ココス
コジマ
コメント/TechTalk
コメント/inatyu
コンパス
サークルK
ジュエリー・F・スミス
スカイ
スシロー
スマブラ大会
スライドパズル(JSF)
スーパー日東
セブンイレブン
セレイン
センチュリオン
タイマーに関係するレジスタ
タイマー・PWM
タックス
タマノ
タワーディフェンス リリィガーディアン
ダムダム Dame dam
ツゾ
テンプレート
ディスプレイ
デオデオ
デスラー
データ圧縮
ドスパラ
ドン・キホーテ
ニートの日
ネット
ハィカラ亭
ハイカラ亭
ハイ力ラ亭
ハッカソン的なものを企画したい。
バルサン
バースデイきっぷ
パイン
パクパク
パソコン講習
パソ工
パムパムくん
ビアガーデン
ファミリーマート
フク
フジ
フジグラン
プラグインのテスト
プラス
プログラミング
プログラム講習会
プーの森
ヘルプ
ベスト電器
ペンペンについて
マイコン勉強会
マクドナルド
マサ
マッキー
ママピス
マリシ
マリシとNAOのネット界の超時空スーパーアイドル(笑)を目指すページ
マリシライナー
マリシ容疑者(ジョーク)
ミカン
ミスタードーナツ
ミニクイズ(JSF)
メーリングリスト
モスバーガー
ヤマダ電機
ヤムキン
ユウ
ユウメ
ユースケ・サンタ
ラジオ会館
ラピュタガーデン
ランレングス圧縮
リズム天国(parody)
リッチドーナツ
リヨ
レイジ
ロッテリア
ロボット講座
ローグライクゲームを作ろう
ローゼ
ローソン
ローソン(コンビニ)
ワングー
ワールドキッチン
ヴィロット
一天張
一気コール
七厘や本店
七面鳥ぅ
万帳
両津
之達磨
企画/CSR Blog Rally
企画まとめ
個人で購入すべきパーツ
元帥
入力の使い方
入部希望の皆様へ
冷蔵庫
処分予定の雑誌リスト
初級シスアド
勝山協食
半塩
卒業生追い出しコンパ
協同ゲーム制作
単位取ったら負けかなと思ってる
単位取得率
合宿
合宿 2010/9
吉野家
喫茶マウンテンを現地指導
四国再発見きっぷネットワーク
四国再発見きっぷネットワーク(β)
四川飯店
回数券をみんなでわけて使おう
図書館のグループ学習室
圧縮を行うプログラムをつくるところについて思う所
坊ちゃん
坐・和民
埋蔵金
基数ソート
夏合宿
夏合宿の反省点2013
多恋人(だれと)
大宇宙拡大大帝国絶対永久皇帝大帝国大元帥★
大街道
大街道歯科
大阪行き移動案
学生祭2009
学生祭2012
学生祭2013
学生祭2014
学生祭2015
学生祭2016
学生祭2017
学祭
学祭2008まとめ
学祭2010
学祭2010作品
学祭2011作品
学祭2012作品
学祭2013作品
学祭2014作品
学祭2015作品
学祭2016作品
学祭2017作品
学祭用電光掲示板をつくろーの会
学際2011
宇和島の美味しいもの巡り旅
安価に旅行
定期購読雑誌
山田
島根県
市駅
幹部のおしごと
幻の春合宿
庄屋
忘年会
忠孝
情報処理技術者試験
情報処理試験
愛媛大学
手作業でやってみるエラトステネスの篩
振り子式車両傾斜角度計算
整形ルール
新入生M
新入生歓迎コンパ
新入生歓迎合宿
新勧ビラ-2009- 作成黒歴史
新年会
旅に出よう
明治ブルガリアヨーグルト
映画化アニメに対する一般人の認識
時間割表のひな形
晴れたり曇ったり
書式文字列について
書籍購入
村さ来大街道店
村さ来本店
松屋
松山−伊予上灘の時刻表
松山−大阪間の移動手段についての考察
松山市駅
松山駅
柚木
栗林公園
業務スーパー
歴代の役員
毀襲
汚物
沢庵
海洋堂ホビー館への旅
清まる
漣
炉談
焼きプリン
生協食堂
白木屋
白虎
神崎
簡易BBS
簡易BBS・過去ログ1
簡易BBS・過去ログ2
簡易BBS・過去ログ3
簡易BBS・過去ログ4
簡易BBS・過去ログ5
簡易BBS・過去ログ6
簡易BBS・過去ログ7
簡易BBS・過去ログ8
簡易BBS・過去ログ9
粋人
純歩
翔
能三食堂
自宅警備イン
自宅警備基金
自宅警備委員会
花いちもんめ
萬楽塩田屋
西条ビール工場・四国鉄道文化館の旅
要出典
説明会
講座一覧
讃岐うどんツアー
讃岐うどんツアー(高松市内コース)
豆蔵
資格をとろう
資格をとろう2006
軍曹
連絡船うどん
部則
部品のページ
部員のMSNアドレス
部員一覧
金曜日
銀
銀天街
鍵当番
関数ポインタ
青めがね
A.
JR栗林駅
O
SLやまぐち号と津和野
64
*プログラマ必見! バージョン管理システム『Subversion』のススメ [#x5ed1fb6] **バージョン管理システムの必要性 [#jc10373f] CSRのプログラマな皆さん、楽しくプログラミングしてますか?~ ソフトウェアを作るのは楽しいですが、ある程度の規模になるとバックアップを取る必要が生じたり、前回いじった箇所のメモや次やるべきことを管理したくなってきます。~ ~ 「バックアップは変更するたびに開発フォルダ全体を圧縮して・・・」~ 「変更点はテキストにメモしてバックアップと一緒に・・・」~ 「やることはTODOをコメントしとくか・・・」~ ~ なんてやろうとしてませんか?そんなのはHDDの無駄だし1日の作業の変更点なんかメモしきれない、TODOコメントも優先度を考慮しだすと管理仕切れませんよね。~ じゃあどうすりゃいいのさ?~ ~ つ Subversion~ ~ ※追記~ LICさんからツッコミをいただきました。ありがとうございます。~ ご指摘の通り''SubversionとTODO管理は無関係''です。~ 上記の問題点の例は私(formula)が今まで経験したもの例であり、一般的にも問題とされているものだと思います。~ 誤解を招きそうな書き方だとは思っていましたがTODO管理も重要な項目だと思いましたので、Subversionの紹介ページながらついでにチケットシステムにも触れてみました。~ このようなツッコミは大歓迎です。このページを読まれた方で他にツッコミがある場合は遠慮なく突っ込んでください。その場で編集していただいても結構です。~ スパム回避のためコメント欄は設置しておりません。ご了承ください。 **Subversionとは? [#l5c71004] Subversion(以下SVN)とは上記のような問題を解決するバージョン管理システムと呼ばれる部類のソフトです。バージョン管理システムとして有名なのはCVSなどがありますがSubversionはCVSの改良版で便利な機能が満載です。機能例を挙げると、~ ~ -いつどのファイルをどのように変更したかを記録する(差分も表示できる) -変更時にログメッセージを付けられる -変更後に変更前に戻したいと思ったら戻せる 等々、いろいろあります。~ SVNは本来複数人での開発を管理するためのソフトですが個人での利用でも非常に便利だと思います(複数人での開発の場合はむしろ必須と言って良い)。~ 皆さんも積極的に使って良いソフトを作りましょう!~ ~ **Subversionでの管理の仕方 [#qbbcfec4] SVNはサーバ・クライアント型のソフトです。データを一元管理するサーバに複数のクライアントがアクセスします。~ SVNでは一つの開発に関わるファイル群をリポジトリという単位で管理します。使い方は次のような流れになります。~ ~ ***準備 [#u1d1b9c0] +まずサーバにプロジェクトのリポジトリを作成します(空のリポジトリ) +クライアントからサーバのリポジトリにインポート(import)します(元となるデータを入れること。ディレクトリを指定し、その下にあるすべてのファイル・ディレクトリが対象になります)。またはすでにサーバにリポジトリが存在する場合はサーバからクライアントにチェックアウト(checkout)します。 +これでサーバ側にデータの入ったリポジトリ、クライアント側の手元に作業コピー(作業用にリポジトリからコピーされたデータ。SVNに管理される)が整いました。 ***利用 [#o93f2200] +クライアントは開発作業を始める前にサーバのリポジトリからデータを手元に更新(update)します。作業コピーは最新のものになります。 +クライアントは開発作業を進めます。作業コピーが変更されます。サーバ側のリポジトリは変化なし。 +クライアントの開発作業が終了したら今回の変更をサーバのリポジトリにコミット(変更を確定)(commit)します。リポジトリの内容が変更されます。 1〜3を繰り返して開発を進めます。変更点は差分で記録されるので丸ごとバックアップよりHDD効率がよく、いつどこを変更したか等が確実に記録されます。~ ~ 複数人での開発の場合は1つのファイルを同時に変更してしまう場合もありますが、それぞれの変更箇所が重ならない場合はうまく変更を統合(merge)してくれますし、各ユーザの更新の統計なんかも記録されます。~ ~ **無料で使えるの? [#b1f30bcc] サーバもクライアントも無料のものがあるのでそれを使いましょう。~ ~ まずはサーバです。私は自分のサーバマシンにインストールしましたがそれが困難な場合もあるので今回は外部サーバを使用することにします。~ 無料でそれなりに自由に使えそうなWebスペースを探したら↓のサイトが見つかりました。~ ~ http://www.assembla.com/~ ~ 暗号化通信は使えませんが1プロジェクトあたり200MBのスペースが無料で使えます。~ 登録が必要なのでさくっと登録してしまいましょう。~ ~ ***登録例 [#i46ae346] 一応、例をあげておきます。不要な方は読み飛ばしてください。~ ~ +まずはアカウントを取得します。サイトトップからオレンジ色の『REGISTER NOW』をクリック。 //#ref(001.jpg,nolink,center); +適当に項目を入力して『Register』をクリック。 //#ref(002.jpg,nolink,center); +登録したメールアドレスに確認メールが来るのでクリックすると↓の画面に。 //#ref(003.jpg,nolink,center);~ アカウントが作成されました。 +次にスペース(プロジェクト)を作成します。ページの下の方にある『CREATE A NEW SPACE』をクリック。 //#ref(004.jpg,nolink,center); +どういうサービスのスペースにするかを選択。SVNは1個目か4個目ですね。1個目はSVN+このサイト独自のサービス、4個目はSVNのみの利用になります。今回はせっかくなので1個目を選んでみました。 //#ref(005.jpg,nolink,center); +スペースの種類を選択。右側のフリーバージョンを選びます。 //#ref(006.jpg,nolink,center); +「フリーバージョンだと誰からでも見られちゃうよ?」と警告されますがページ下の方の設定で『Non-member access』を『View』にしておけば見られても勝手に編集はされないのでおk。ちなみに『Member access』を『Edit』にすると多人数開発向けになるのかな。以下、その他の欄の説明。 //#ref(007.jpg,nolink,center);~ -『Space name』: スペース名。VC++でいうソリューション名に相当。作るソフト名等を記入するといいでしょう。(画像は1発取りだったのでマズイ名前をつけてしまってます) -『URL name』: URLに使用するスペースに対応する名前。http://ドメイン/URL name/hogehoge のようになるのでスペース名を小文字にして適当に"_"でつなぐのが無難ですかね。(画像は1発(ry) -『Description』: スペースの説明。検索等で来た人が見るのでちゃんと書きましょう。 -『Tags』: タグ。カンマ区切りで複数指定可。空でも大丈夫みたいです。 記入が終わったら内容を確認して『Create the Space』をクリック。 8. スペースが作成され、管理ページに移動します。 SVN以外にもWiki・Tickets・Chatなどいろいろなツールが使えるみたいですね。 とりあえず『Source/SVN』のページに移動しましょう。 //#ref(008.jpg,nolink,center); 『SVN Url』が今回作ったリポジトリのURLになります。 ~ スペースは何個も作れるので作るソフトごと作ってもいいですが、関連したプロジェクトはリポジトリ内にプロジェクトのディレクトリを作成するといいでしょう。~ ~ **リポジトリにアクセスしてみよう [#e2694c1a] 次にクライアントです。上記のスペースを利用する場合は『Source/SVN』ページから『Browse your code repository』をクリックしてもアクセスできますが、あまり見やすくないし変更も加えにくいのでクライアントソフトをインストールしましょう。~ ~ CUI版の例: CollabNet Subversion Command-Line Client v1.5.4(http://www.collab.net/downloads/subversion/)~ GUI版の例: TortoiseSVN 1.5.5(http://tortoisesvn.net/downloads)~ ~ CUI版はNetBeansやEclipse等の統合開発環境(IDE)に組み込むときに便利です。(NetBeansはCollabNetのものがEclipseはSubclipseというのが対応しているようです。)~ GUI版のTortoiseSVNはWindows限定でエクスプローラを拡張するのでインスト後にPC再起動が必要だったりとちょっと面倒ですがGUIでリポジトリを操作できるので後は楽です。また、エクスプローラから操作するのでIDEがSVNのサポートしていなくても使用できます。~ ~ 今回はTortoiseSVNをインストールしてみましょう。~ +上記のダウンロードページから32bit用のTortoiseSVNのインストーラと日本語言語パックのインストーラをダウンロードします。 +TortoiseSVNをインストしたら再起動すると右クリックメニューが拡張されます。 +言語パックをインストし、設定から言語を日本語にすると準備完了です。 ではリポジトリにアクセスしてみましょう。 +エクスプローラの右クリックメニューから『TortoiseSVN』→『リポジトリブラウザ』をクリックします。 #ref(rp_brw.jpg,nolink,center); +リポジトリのURLを入力して『OK』。サーバに接続され、リポジトリの内容がツリー表示されます。必要に応じてユーザ名とパスワードを入力してください。(しばらくしてもつながらない場合はURLが正しいかどうかを確認してください。)(上記の例とリポジトリ名が違うのは気にしないでください。) #ref(009.jpg,nolink,center); ~ ちゃんとアクセスできましたか?と言っても作ったばかりで中身が空なのでよくわかりませんね。 次項から実際にリポジトリを使用してデータを管理してみます。~ ~ **インポートとチェックアウト [#ha7d0234] 管理したいファイルをまとめてリポジトリに入れるには『インポート』を使用します。~ まずは元となるデータを用意します。現在開発中のプロジェクトフォルダ等ですね。今回はVCで新たにHello,Worldプロジェクトを作り、そのフォルダを管理してみます。~ ~ プロジェクトフォルダ(.vcprojファイルが入っているフォルダ)の右クリックメニューから『TortoiseSVN』→『インポート』をクリックします。~ #ref(010.jpg,nolink,center); リポジトリのURLを選択し、ログメッセージを入力します。ログはずっと残るので変更内容がわかるような内容にしてください。~ ~ インポートが開始されるとサーバのリポジトリに無いファイルが追加されていきます。『完了』と表示されたら『OK』をクリックしてください。~ ~ これで手元のデータでリポジトリが更新できました。リポジトリブラウザで確認してみてください。~ ツリーにファイルが追加されていますね。右クリックして『ログを表示』をクリックしてみましょう。今までのリポジトリの変更(1回しかしてませんが)が表示されます。ログメッセージも表示されていますね。~ ~ 『リビジョン』とはリポジトリのバージョン番号です。これはリポジトリに変更が加えられるたびにインクリメントされます。リビジョンはリポジトリ全体に付けられるので、どのファイルが変更されても全体のリビジョンが更新されます。~ つまりリビジョンを指定することでリポジトリの過去の状態にアクセスすることができるのです。 ~ 次に手元にリポジトリの作業コピーを作りましょう。インポートしてもそのフォルダは作業コピーになりません。作業コピーを作るにはサーバから『チェックアウト』します。~ ~ プロジェクトフォルダ内で右クリックメニューから『チェックアウト』をクリックします。~ リポジトリURL・チェックアウトディレクトリ・リビジョンを確認して『OK』をクリック。リポジトリから情報が送られ、チェックアウトディレクトリが作業コピーになります。(作業コピーフォルダ及びその中のファイル・フォルダにはアイコンに印が付きます。)~ #ref(011.jpg,nolink,center); チェックマークはコミットする必要がないことを示しています。~ ~ **変更とコミット [#xf234da0] では適当に作業コピー内のファイルを変更してみましょう。アイコンのマークが『チェック』から『!』に変化します。『!』はファイルに何か変化があり、まだコミットされていないことを示しています。~ #ref(012.jpg,nolink,center); 『!』が付いているファイルまたはフォルダの右クリックメニューから『TortoiseSVN』→『変更をチェック』をクリックしてみましょう。変更があったファイル一覧が表示されます。~ ファイル一覧から変更したファイルをダブルクリックすると差分が表示されます。~ #ref(013.jpg,nolink,center); 変更を確定し、リポジトリを更新するには作業コピーフォルダの右クリックメニューから『SVNコミット』をクリックします。コミットが完了するとアイコンのマークが『チェック』に戻ると思います。~ 特定のファイルだけをコミットしたい場合はコミットしたいファイルの右クリックメニューからコミットしてください。~ ~ **別の場所での変更と更新 [#tc3dabf4] 開発作業は常に同じ場所で行われるとは限りません。家ではデスクトップPCで開発、出先ではノートPCで開発、といったことはよくあることです。また、複数人での開発では同じPCでは同時に開発できませんね。~ ~ そんなわけで異なる場所に複数の作業コピーが作られることは自然です。そのような場合には作業コピーに変更を加える前に更新(update)しましょう。更新するとリポジトリのファイルより古いファイルが更新されます。つまり作業コピーを最新の状態にするわけですね。~ ~ どこで開発しようと作業前に更新、作業後にコミットすることでどこでも開発可能、しかも変更されたファイルだけ更新されるのでプロジェクト全体をやり取りするより効率的です。~ ~ また、複数人開発ではファイルが同時に更新されることもあります。例えばAさんとBさんがそれぞれhoge.cというファイルに変更を加えた場合、Aさんがコミットした後、Bさんがコミットしようとすると衝突が起こります。もちろんBさんが上書きなんてしてしまうとAさんの作業結果が消されてしまいますね。~ ~ SVNでは変更ファイルの衝突があった場合、変更箇所が互いに影響しない場合は自動的にマージされます。互いに影響がある場合は競合といい、自分で解消(A,Bどちらの変更を優先するか選択)する必要があります。~ ~ **その他の事項 [#h1586cfc] TortoiseSVNの詳しい使い方は説明書を読んでください。SVN自体の説明も結構書いてます。~ ~ また、最初にTODOに関する話題を少し出しました。SVNのログメッセージを使えばちょっとしたTODOのメモはできますがあまりオススメできません。~ 1つのTODOは、~ -いつできたTODOか -いつまでにしなければならないのか -優先度は? といった情報が必要です。そのようなTODOを管理するにはチケットシステムを利用すると良いでしょう。~ SVN自体にはチケット機能はありませんが上記のサイト(http://www.assembla.com/)等ではチケットシステムを始め、いろいろなサービスが利用できます。~ ~ **まとめ [#mc276547] ソフトウェア開発では変更点の記録、複数の場所での同期などが問題になります。バージョン管理システムやその他の便利なサービスを利用して効率良くプロジェクトを管理し、一歩進んだソフトウェア開発ができるようになりましょう。~ ~
タイムスタンプを変更しない
*プログラマ必見! バージョン管理システム『Subversion』のススメ [#x5ed1fb6] **バージョン管理システムの必要性 [#jc10373f] CSRのプログラマな皆さん、楽しくプログラミングしてますか?~ ソフトウェアを作るのは楽しいですが、ある程度の規模になるとバックアップを取る必要が生じたり、前回いじった箇所のメモや次やるべきことを管理したくなってきます。~ ~ 「バックアップは変更するたびに開発フォルダ全体を圧縮して・・・」~ 「変更点はテキストにメモしてバックアップと一緒に・・・」~ 「やることはTODOをコメントしとくか・・・」~ ~ なんてやろうとしてませんか?そんなのはHDDの無駄だし1日の作業の変更点なんかメモしきれない、TODOコメントも優先度を考慮しだすと管理仕切れませんよね。~ じゃあどうすりゃいいのさ?~ ~ つ Subversion~ ~ ※追記~ LICさんからツッコミをいただきました。ありがとうございます。~ ご指摘の通り''SubversionとTODO管理は無関係''です。~ 上記の問題点の例は私(formula)が今まで経験したもの例であり、一般的にも問題とされているものだと思います。~ 誤解を招きそうな書き方だとは思っていましたがTODO管理も重要な項目だと思いましたので、Subversionの紹介ページながらついでにチケットシステムにも触れてみました。~ このようなツッコミは大歓迎です。このページを読まれた方で他にツッコミがある場合は遠慮なく突っ込んでください。その場で編集していただいても結構です。~ スパム回避のためコメント欄は設置しておりません。ご了承ください。 **Subversionとは? [#l5c71004] Subversion(以下SVN)とは上記のような問題を解決するバージョン管理システムと呼ばれる部類のソフトです。バージョン管理システムとして有名なのはCVSなどがありますがSubversionはCVSの改良版で便利な機能が満載です。機能例を挙げると、~ ~ -いつどのファイルをどのように変更したかを記録する(差分も表示できる) -変更時にログメッセージを付けられる -変更後に変更前に戻したいと思ったら戻せる 等々、いろいろあります。~ SVNは本来複数人での開発を管理するためのソフトですが個人での利用でも非常に便利だと思います(複数人での開発の場合はむしろ必須と言って良い)。~ 皆さんも積極的に使って良いソフトを作りましょう!~ ~ **Subversionでの管理の仕方 [#qbbcfec4] SVNはサーバ・クライアント型のソフトです。データを一元管理するサーバに複数のクライアントがアクセスします。~ SVNでは一つの開発に関わるファイル群をリポジトリという単位で管理します。使い方は次のような流れになります。~ ~ ***準備 [#u1d1b9c0] +まずサーバにプロジェクトのリポジトリを作成します(空のリポジトリ) +クライアントからサーバのリポジトリにインポート(import)します(元となるデータを入れること。ディレクトリを指定し、その下にあるすべてのファイル・ディレクトリが対象になります)。またはすでにサーバにリポジトリが存在する場合はサーバからクライアントにチェックアウト(checkout)します。 +これでサーバ側にデータの入ったリポジトリ、クライアント側の手元に作業コピー(作業用にリポジトリからコピーされたデータ。SVNに管理される)が整いました。 ***利用 [#o93f2200] +クライアントは開発作業を始める前にサーバのリポジトリからデータを手元に更新(update)します。作業コピーは最新のものになります。 +クライアントは開発作業を進めます。作業コピーが変更されます。サーバ側のリポジトリは変化なし。 +クライアントの開発作業が終了したら今回の変更をサーバのリポジトリにコミット(変更を確定)(commit)します。リポジトリの内容が変更されます。 1〜3を繰り返して開発を進めます。変更点は差分で記録されるので丸ごとバックアップよりHDD効率がよく、いつどこを変更したか等が確実に記録されます。~ ~ 複数人での開発の場合は1つのファイルを同時に変更してしまう場合もありますが、それぞれの変更箇所が重ならない場合はうまく変更を統合(merge)してくれますし、各ユーザの更新の統計なんかも記録されます。~ ~ **無料で使えるの? [#b1f30bcc] サーバもクライアントも無料のものがあるのでそれを使いましょう。~ ~ まずはサーバです。私は自分のサーバマシンにインストールしましたがそれが困難な場合もあるので今回は外部サーバを使用することにします。~ 無料でそれなりに自由に使えそうなWebスペースを探したら↓のサイトが見つかりました。~ ~ http://www.assembla.com/~ ~ 暗号化通信は使えませんが1プロジェクトあたり200MBのスペースが無料で使えます。~ 登録が必要なのでさくっと登録してしまいましょう。~ ~ ***登録例 [#i46ae346] 一応、例をあげておきます。不要な方は読み飛ばしてください。~ ~ +まずはアカウントを取得します。サイトトップからオレンジ色の『REGISTER NOW』をクリック。 //#ref(001.jpg,nolink,center); +適当に項目を入力して『Register』をクリック。 //#ref(002.jpg,nolink,center); +登録したメールアドレスに確認メールが来るのでクリックすると↓の画面に。 //#ref(003.jpg,nolink,center);~ アカウントが作成されました。 +次にスペース(プロジェクト)を作成します。ページの下の方にある『CREATE A NEW SPACE』をクリック。 //#ref(004.jpg,nolink,center); +どういうサービスのスペースにするかを選択。SVNは1個目か4個目ですね。1個目はSVN+このサイト独自のサービス、4個目はSVNのみの利用になります。今回はせっかくなので1個目を選んでみました。 //#ref(005.jpg,nolink,center); +スペースの種類を選択。右側のフリーバージョンを選びます。 //#ref(006.jpg,nolink,center); +「フリーバージョンだと誰からでも見られちゃうよ?」と警告されますがページ下の方の設定で『Non-member access』を『View』にしておけば見られても勝手に編集はされないのでおk。ちなみに『Member access』を『Edit』にすると多人数開発向けになるのかな。以下、その他の欄の説明。 //#ref(007.jpg,nolink,center);~ -『Space name』: スペース名。VC++でいうソリューション名に相当。作るソフト名等を記入するといいでしょう。(画像は1発取りだったのでマズイ名前をつけてしまってます) -『URL name』: URLに使用するスペースに対応する名前。http://ドメイン/URL name/hogehoge のようになるのでスペース名を小文字にして適当に"_"でつなぐのが無難ですかね。(画像は1発(ry) -『Description』: スペースの説明。検索等で来た人が見るのでちゃんと書きましょう。 -『Tags』: タグ。カンマ区切りで複数指定可。空でも大丈夫みたいです。 記入が終わったら内容を確認して『Create the Space』をクリック。 8. スペースが作成され、管理ページに移動します。 SVN以外にもWiki・Tickets・Chatなどいろいろなツールが使えるみたいですね。 とりあえず『Source/SVN』のページに移動しましょう。 //#ref(008.jpg,nolink,center); 『SVN Url』が今回作ったリポジトリのURLになります。 ~ スペースは何個も作れるので作るソフトごと作ってもいいですが、関連したプロジェクトはリポジトリ内にプロジェクトのディレクトリを作成するといいでしょう。~ ~ **リポジトリにアクセスしてみよう [#e2694c1a] 次にクライアントです。上記のスペースを利用する場合は『Source/SVN』ページから『Browse your code repository』をクリックしてもアクセスできますが、あまり見やすくないし変更も加えにくいのでクライアントソフトをインストールしましょう。~ ~ CUI版の例: CollabNet Subversion Command-Line Client v1.5.4(http://www.collab.net/downloads/subversion/)~ GUI版の例: TortoiseSVN 1.5.5(http://tortoisesvn.net/downloads)~ ~ CUI版はNetBeansやEclipse等の統合開発環境(IDE)に組み込むときに便利です。(NetBeansはCollabNetのものがEclipseはSubclipseというのが対応しているようです。)~ GUI版のTortoiseSVNはWindows限定でエクスプローラを拡張するのでインスト後にPC再起動が必要だったりとちょっと面倒ですがGUIでリポジトリを操作できるので後は楽です。また、エクスプローラから操作するのでIDEがSVNのサポートしていなくても使用できます。~ ~ 今回はTortoiseSVNをインストールしてみましょう。~ +上記のダウンロードページから32bit用のTortoiseSVNのインストーラと日本語言語パックのインストーラをダウンロードします。 +TortoiseSVNをインストしたら再起動すると右クリックメニューが拡張されます。 +言語パックをインストし、設定から言語を日本語にすると準備完了です。 ではリポジトリにアクセスしてみましょう。 +エクスプローラの右クリックメニューから『TortoiseSVN』→『リポジトリブラウザ』をクリックします。 #ref(rp_brw.jpg,nolink,center); +リポジトリのURLを入力して『OK』。サーバに接続され、リポジトリの内容がツリー表示されます。必要に応じてユーザ名とパスワードを入力してください。(しばらくしてもつながらない場合はURLが正しいかどうかを確認してください。)(上記の例とリポジトリ名が違うのは気にしないでください。) #ref(009.jpg,nolink,center); ~ ちゃんとアクセスできましたか?と言っても作ったばかりで中身が空なのでよくわかりませんね。 次項から実際にリポジトリを使用してデータを管理してみます。~ ~ **インポートとチェックアウト [#ha7d0234] 管理したいファイルをまとめてリポジトリに入れるには『インポート』を使用します。~ まずは元となるデータを用意します。現在開発中のプロジェクトフォルダ等ですね。今回はVCで新たにHello,Worldプロジェクトを作り、そのフォルダを管理してみます。~ ~ プロジェクトフォルダ(.vcprojファイルが入っているフォルダ)の右クリックメニューから『TortoiseSVN』→『インポート』をクリックします。~ #ref(010.jpg,nolink,center); リポジトリのURLを選択し、ログメッセージを入力します。ログはずっと残るので変更内容がわかるような内容にしてください。~ ~ インポートが開始されるとサーバのリポジトリに無いファイルが追加されていきます。『完了』と表示されたら『OK』をクリックしてください。~ ~ これで手元のデータでリポジトリが更新できました。リポジトリブラウザで確認してみてください。~ ツリーにファイルが追加されていますね。右クリックして『ログを表示』をクリックしてみましょう。今までのリポジトリの変更(1回しかしてませんが)が表示されます。ログメッセージも表示されていますね。~ ~ 『リビジョン』とはリポジトリのバージョン番号です。これはリポジトリに変更が加えられるたびにインクリメントされます。リビジョンはリポジトリ全体に付けられるので、どのファイルが変更されても全体のリビジョンが更新されます。~ つまりリビジョンを指定することでリポジトリの過去の状態にアクセスすることができるのです。 ~ 次に手元にリポジトリの作業コピーを作りましょう。インポートしてもそのフォルダは作業コピーになりません。作業コピーを作るにはサーバから『チェックアウト』します。~ ~ プロジェクトフォルダ内で右クリックメニューから『チェックアウト』をクリックします。~ リポジトリURL・チェックアウトディレクトリ・リビジョンを確認して『OK』をクリック。リポジトリから情報が送られ、チェックアウトディレクトリが作業コピーになります。(作業コピーフォルダ及びその中のファイル・フォルダにはアイコンに印が付きます。)~ #ref(011.jpg,nolink,center); チェックマークはコミットする必要がないことを示しています。~ ~ **変更とコミット [#xf234da0] では適当に作業コピー内のファイルを変更してみましょう。アイコンのマークが『チェック』から『!』に変化します。『!』はファイルに何か変化があり、まだコミットされていないことを示しています。~ #ref(012.jpg,nolink,center); 『!』が付いているファイルまたはフォルダの右クリックメニューから『TortoiseSVN』→『変更をチェック』をクリックしてみましょう。変更があったファイル一覧が表示されます。~ ファイル一覧から変更したファイルをダブルクリックすると差分が表示されます。~ #ref(013.jpg,nolink,center); 変更を確定し、リポジトリを更新するには作業コピーフォルダの右クリックメニューから『SVNコミット』をクリックします。コミットが完了するとアイコンのマークが『チェック』に戻ると思います。~ 特定のファイルだけをコミットしたい場合はコミットしたいファイルの右クリックメニューからコミットしてください。~ ~ **別の場所での変更と更新 [#tc3dabf4] 開発作業は常に同じ場所で行われるとは限りません。家ではデスクトップPCで開発、出先ではノートPCで開発、といったことはよくあることです。また、複数人での開発では同じPCでは同時に開発できませんね。~ ~ そんなわけで異なる場所に複数の作業コピーが作られることは自然です。そのような場合には作業コピーに変更を加える前に更新(update)しましょう。更新するとリポジトリのファイルより古いファイルが更新されます。つまり作業コピーを最新の状態にするわけですね。~ ~ どこで開発しようと作業前に更新、作業後にコミットすることでどこでも開発可能、しかも変更されたファイルだけ更新されるのでプロジェクト全体をやり取りするより効率的です。~ ~ また、複数人開発ではファイルが同時に更新されることもあります。例えばAさんとBさんがそれぞれhoge.cというファイルに変更を加えた場合、Aさんがコミットした後、Bさんがコミットしようとすると衝突が起こります。もちろんBさんが上書きなんてしてしまうとAさんの作業結果が消されてしまいますね。~ ~ SVNでは変更ファイルの衝突があった場合、変更箇所が互いに影響しない場合は自動的にマージされます。互いに影響がある場合は競合といい、自分で解消(A,Bどちらの変更を優先するか選択)する必要があります。~ ~ **その他の事項 [#h1586cfc] TortoiseSVNの詳しい使い方は説明書を読んでください。SVN自体の説明も結構書いてます。~ ~ また、最初にTODOに関する話題を少し出しました。SVNのログメッセージを使えばちょっとしたTODOのメモはできますがあまりオススメできません。~ 1つのTODOは、~ -いつできたTODOか -いつまでにしなければならないのか -優先度は? といった情報が必要です。そのようなTODOを管理するにはチケットシステムを利用すると良いでしょう。~ SVN自体にはチケット機能はありませんが上記のサイト(http://www.assembla.com/)等ではチケットシステムを始め、いろいろなサービスが利用できます。~ ~ **まとめ [#mc276547] ソフトウェア開発では変更点の記録、複数の場所での同期などが問題になります。バージョン管理システムやその他の便利なサービスを利用して効率良くプロジェクトを管理し、一歩進んだソフトウェア開発ができるようになりましょう。~ ~
テキスト整形のルールを表示する