ラベル Subversion の投稿を表示しています。 すべての投稿を表示
ラベル Subversion の投稿を表示しています。 すべての投稿を表示

2007年3月29日木曜日

Subversionのキーワード置換とかのクライアント設定全般

キーワード置換やらの設定をクライアント側で設定する。覚書。

クライアントの設定については、
configファイルとserversファイルにて管理されます。
この二つのファイルはテキストファイルで、テキストエディタにて書き換えることが可能。
(レジストリのHKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion以下に格納することも可能です。)

Windowsをクライアントに使用している場合、一番初めにSVNをコマンドラインにて
実行した時に、ユーザーのホームディレクトリのApplication Data配下に、
Subversionというフォルダが作成され、
その配下に、configとserversのファイルが作成されます。
(C:\Documents and Settings\xxxx\Application Data\Subversionという感じ)
これらのファイルはINIファイル形式にて記述されます。

serversファイルですが、
ProxyやSSLを使用する場合の記述をこのファイルに書き込めます。
今回のさくらでSubversionを使用する場合は、SSLもProxyを使用していないので記述の変更なし。

次にconfigファイルの設定変更。
[miscellany]セクションの変更

  1. enable-auto-props
    最初にインポートしたときにSubversionとしての属性を自動的に変更するかの設定。
    初期値はnoです。
    enable-auto-props = yes
    に書き換える。
    キーワード置換などは、インポートしたファイルの属性となるので、yesにして自動的に変更されるようにする。
  2. global-ignores
    svnコマンドで無視するファイルを設定できる。
    ログファイルやEclipseの設定ファイルはバージョン管理する必要がないので、ここに加えて無視するようにする。
    *.o *.lo *.la #*# .*~ *~ .#* .DS_Store はデフォルトの設定
    global-ignores = *.o *.lo *.la #*# .*~ *~ .#* .DS_Store *.log .*.html .*.htm .project .includepath

    「.*.html」と「.*.htm」はAptanaの生成するファイル、
    「.project」と「.includepath」はEclipseの設定ファイル。
[auto-props]セクション
様々な属性(プロパティ)を設定するセクション
  1. キーワード置換用の設定値(svn:keywords)
    コミット、インポート時に、時間やファイル名、リビジョンなどの動的な情報についてを、指定のキーワードと置換してくれるようになります。
    *.cgi = svn:keywords=Id Date Author Rev URL
    *.pm = svn:keywords=Id Date Author Rev URL
    *.html = svn:keywords=Id Date Author Rev URL
    *.htm = svn:keywords=Id Date Author Rev URL
    *.txt = svn:keywords=Id Date Author Rev URL
    *.js = svn:keywords=Id Date Author Rev URL
    *.css = svn:keywords=Id Date Author Rev URL
    *.sql = svn:keywords=Id Date Author Rev URL

    該当のファイルに対してどのキーワードを置換するか設定する。
    Date Author Rev URL*.sql = svn:keywords=Id Date Author Rev URL
    だと、「$Id$」、「$Date$」、「$Author$」、「$Rev」、「$URL$」の5つのキーワードを
    該当する値へ置換してくれる。
    PerlのPMファイルだとこんな風に使ってます。

    package Logger;
    =head1 NAME Logger
       $Id$
    =head1 SYNOPSIS
       For test use module.
    =head1 DESCRIPTION
    Release Date : $Date$
    Revision : $Revision$
    Author : $Author$
     Description :
    =cut
    が一番最初にインポートしたときに↓のように展開され、今後、コミットする度に新しく置換キーワードが展開されるようになる。
    package Logger;
    =head1 NAME Logger
       $Id: Logger.pm 16 2007-03-12 01:59:39Z myways $
    =head1 SYNOPSIS
       For test use module.
    =head1 DESCRIPTION
    Release Date : $Date: 2007-03-12 10:59:39 +0900 (月, 12 3 2007) $
    Revision : $Revision: 16 $
    Author : $Author: myways $
     Description :
    =cut
    もし、HTMLなら開発中はファイルの末尾にでも、コメントアウトして、
    $Id$
    とか入れておけばOK。

  2. MIMEタイプの設定(svn:mime-type)
    Subversionで見るMIMEタイプの設定
    非テキスト系のMIMEタイプを設定しておくとバイナリファイルとして扱われるようになる。
    さくらのsvn+sshでは関係ないけど、ブラウザ上からリポジトリにアクセスする場合にも
    ここで設定した値からファイルを開くアプリ等を決定する。
    *.png = svn:mime-type=image/png
    *.jpg = svn:mime-type=image/jpeg
    *.xls = svn:mime-type=application/vnd.ms-excel
    *.xlsx = svn:mime-type=application/vnd.ms-excel
    *.ppt = svn:mime-type=application/vnd.ms-powerpoint
    *.pptx = svn:mime-type=application/vnd.ms-powerpoint
    *.zip = svn:mime-type=application/zip
    *.mp3 = svn:mime-type=audio/mpeg
    このような感じで設定。
  3. EOF、改行の設定(svn:eol-style)
    コミット後にEOF、改行の扱いが重要になる場合に設定が必要。
    複数のOSによって開発を行う場合、改行コード(EOLマーカ)の扱いが異なるために、
    そこの修正などによって、差分が発生してしまい面倒なことになってしまうことがあります。
    そこで、さくらのサーバにSSHでログインしていじってインポート、コミットするファイルについて
    設定を行います。

    *.sh = svn:eol-style=native;svn:executable

このような感じで設定すれば、クライアント側の設定がすべて完了。

2007年3月21日水曜日

即席リリーススクリプトを作成した

そろそろ、上げれるものが出来てきたので、リリーススクリプトが必要になってきた。
Subversionを使用しているのに、毎回チェックアウトorエクスポートしてFTP経由でサーバーに上げるのもナンセンスなので、サーバー上で動くリリーススクリプトを作成した。

とりあえず思いついた実装内容は、

  1. Subversionリポジトリから、指定のバージョンやタグのApacheのルート部分からごっそりExportする。
  2. CGIのパスを「c:/perl/bin/perl」から、「/usr/local/bin/perl」に書き換える
  3. MySQLの設定をローカルの物から、サーバー用に置き換える。
  4. 指定したディレクトリ(Apacheが外部に公開しているディレクトリ=/home/myways/www配下)へExportしたディレクトリを置き換えるor更新されている部分だけを上書きする。
複数あるローカルの環境はWindowsなので、2番は便利になる。
3番目も、ローカルの設定は同じなので便利になる。
サーバー上でSubversionからExportするには、

/home/myways/local/bin

にパスを通して、(.bashrcで通してある)

svn export --force file:///home/myways/var/svn/myway/trunk/htroot /home/myways/work/rel/

のコマンドで、
/home/myways/var/svn/myway/trunk/htrootから/home/myways/work/rel/へエクスポートが出来る。
シェルスクリプトを作成して、引数でSubversionのディレクトリと、Export先のディレクトリを設定できるようにする。
このコマンドを、

svn export --force /home/myways/var/svn/myway/$1 $2

とすれば、
第1引数で、Subversion上のディレクトリ、第2引数でExport先のディレクトリを指定できる。
Exportしたディレクトリ、ファイルに対して、
CGIのパスと、MySQLの設定を書き換え、置き換えするスクリプトを書くのですが、
シェルスクリプトで書くよりPerlで書いた方が楽だったので、Perlで該当の処理を記述。

長くなるので、コードは割愛して、
内容は、$1と$2を引数で与えて、$1から$2へディレクトリを作成しつつ、コピーをして、
ファイルの場合コピーをする際に、拡張子を見て、「.cgi」なら、
正規表現を使って、Perlのパスを書き換える。
MySQLの設定が記述されたファイルなら、これもまた書き換えるといった内容。
コマンドはこんな感じで実行。
/usr/local/bin/perl release.cgi $3 $2 >> release.log

出来上がったシェルスクリプトは、

#!/bin/sh

LOGFILE=release.log
SVNDIR=$1
EXPORTDIR=$2
TARGETDIR=$3

rm -r $EXPORTDIR
mkdir $EXPORTDIR
svn export --force file:///home/myways/var/svn/myway/$SVNDIR
$EXPORTDIR > $LOGFILE
if [$4 = "clean"]; then rm -r $TARGETDIR fi
perl
release.cgi $TARGETDIR $EXPORTDIR >> $LOGFILE
すべて絶対パスで記述。
第1引数 Subversion上のExportするディレクトリ
第2引数 ExportするWorkディレクトリ
第3引数 Exportしたファイルを配置するディレクトリ
第4引数 cleanなら第3引数のディレクトリを一回削除してから、コピーする
即席なのでこんなもんかな・・・
ログファイルのローテイトと、ディレクトリの確認ぐらいはすればよかったかな。

これを「.bashc」に使いそうなバージョンをaliasで登録しておけばOK。
alias mwyrel="/home/myways/work/rel/release.sh trunk/htroot
/home/myways/work/rel/svn /home/myways/www"

とかしようかなw
パターンが増えてきたらrelease用にsourceするファイルを作成する。

最後にサーバ上のシェルスクリプトのパーミッションの変更を忘れずにする。
chmod 700 /home/myways/work/rel/release.sh
chmod 700 /home/myways/work/rel/release.cgi

これで、FTPは用なしです。

2007年3月7日水曜日

TortoiseSVNの簡単な使い方

TortoiseSVNの簡単な使い方。
エクスプローラーベースで操作が出来るので、楽チンです。
設定については、Subversion クライアントの設定(TortoiseSVN)

簡単な用語として、
リポジトリとは:

リポジトリは情報をファイルシステムツリー —一般的なファイルとディレクトリの階層構造—の形で格納します(引用元)
チェックアウトとは:

リポジトリーに登録されたファイルをダウンロードしてくること
コミットとは:


作業結果をリポジトリに登録すること

今回、使う用語はこんぐらい。詳しくはSubversion によるバージョン管理を参照のこと。

まず、Subversionのリポジトリーからファイルをチェックアウトしてくる、 フォルダを決める。
例えば、「D:\tmp」とする。
そのフォルダで右クリックすると、

↑のように、「SVNチェックアウト」とういう項目がある。
「SVNチェックアウト」を選択すると、↓のウィンドウが出てきて、
どこのURLから、どこのフォルダにチェックアウトするのか選択させられる。



今回は、正しくURLを入力して「OK」を押すと、リポジトリーからダウンロードが始まる。
ダウンロードが完了すると、↓のような感じになる。


フォルダとか、ファイルのアイコンについている、緑のチェックマークは、
このフォルダ、ファイルはリポジトリーの最新バージョンを同じですよ。ってこと。
(チェックアウトしてきたばっかなので最新バージョンと同じ状態)
例えば、ファイルをいじったりすると、↓のように、赤のびっくりマークがつきます。


赤のびっくりマークのファイルは、リポジトリの状態から変更されているってことなので、
この変更したファイルを、リポジトリーに登録します。これをコミットといいいます。
コミットすれば、他の人がリポジトリから最新版を取得した際に、変更したファイルを取得できます。
(Subversionはフォルダをコミットするが出来ます。)
該当のファイルを右クリックすると、↓のTortoiseSVN関連のメニューはこんな感じになります。



「SVNコミット」を選択すると、コミット刷るための↓のウィンドウが開きます。
メッセージを入力して、下の変更されたファイルの中から、コミットするファイルにチェックを入れて、
OKを押せば、コミットが実行されます。
(コミット時のメッセージは必ず入力しましょう。後で、バージョンを追う事になった時に、あるとないでは違います。)



コミット処理が終了すると↓のウィンドウが開き処理の結果や現在のバージョンを表示してくれます。



コミットが完了すると、また、↓の画面のように、緑のチェック印が付いたアイコンに戻ります。

このような感じで、変更→コミット→変更を繰り返して、
適時、リポジトリと同期化をかけていけばOKです。

リポジトリから他の人が変更したファイルの最新バージョンを取得したい場合には、
該当のフォルダやファイルで右クリックして、「SVN更新」を選択すればOKです。

注)
コミットするときの指標は、CaseByCaseで違うと思いますが、
動かないものや、作りかけで他に影響を与えるものはコミットしてはいけません。
リリースするときもリポジトリからチェックアウトするなり、エクスポートするなりして、リリースすることを考えるとリポジトリにあるソースやファイルで、作成しているものが動作する状況に保全していくことが好ましいです。

2007年3月6日火曜日

Subversion クライアントの設定(svn+sshでSubclipse)

EclipseプラグインのSubclipseでsvn+sshでリポジトリにアクセスする設定。
このサイトを参考 にさせて頂きました。

  1. えせSEの1日1Hack : EclipseでsubversionにSSHアクセス
  2. 公開鍵暗号を利用した認証 (PuTTY)
PuTTYを使って、鍵認証でアクセスできるようにする。
PuTTY Download Pageから、下記の2つのファイルを準備する。
(Subversion クライアントの設定(TortoiseSVN) で鍵は作ってる前提で話を進めます。
作ってない場合は、もう一個、puttygen.exeっていうのを落としてきて、秘密鍵と公開鍵を作成する)
  1. plink.exe
  2. pageant.exe
最初に、pageant.exeに秘密鍵のフルパスを与えて起動する。
たぶん、一番早いのは、参考にもあるように、ショートカットの作成。
右クリックでショートカットを作成して、プロパティからリンク先の所に、秘密鍵のフルパスを加える。
"D:\Program Files\putty\pageant.exe" "秘密鍵のパス"
こんな感じで起動させると、タスクバーに常駐します。
タスクバーのアイコンをダブルクリックすると、
登録されている鍵の一覧が見えるので、登録されているか確認できます。

次にWindowsの環境変数に、
「SVN_SSH」という、変数を登録します。
(WinXPなら環境変数は、「マイコンピューター」を右クリック、「詳細設定」のタブから設定できる。)
環境変数「SVN_SSH」の値は、上記でダウンロードしてきた、
plink.exeのパスを設定する。
変数名 SVN_SSH
変数値 D:/Program Files/putty/plink.exe

こんな感じ。
システム環境変数でも、今ログインしているユーザー環境変数でも、用途に合わせて設定する。
次は、Subclipse。
Subclipseのインストール方法(Eclipseは3.2で、LanguagePack適用済み前提)
更新サイトを使ってインストールする。
  1. Eclipseを起動する。
  2. 「ヘルプ」>「ソフトウェア更新」>「検索およびインストール」を選択
  3. 新しく開いたウィンドウで「新規リモート・サイト」を選択
  4. 名前は適当に「Subclipse1.2」とでもする
  5. URLは「http://subclipse.tigris.org/update_1.2.x」を入力する。
  6. 仕様許諾の確認など、指示に従ってインストールを行う。
これで、再起動後、Subclipseのインストールは完了。
インストール後、メニューの「ウィンドウ」>「パースペクティブを開く」に
「SVNリポジトリー・エクスプローラー」が追加されているので、
「SVNリポジトリー・エクスプローラー」パースペクティブを開く。

「SVNリポジトリ」のウィンドウで右クリックし、
「新規」>「リポジトリー・ロケーション」を選択する。
URLを聞かれるので、
svn+ssh://ユーザー名@ホスト名/リポジトリの絶対パス
例)svn+ssh://myways@myways.sakura.ne.jp/home/myways/var/svn/myway

を入力する。
これで、ツリーを展開して閲覧することが出来たらすべて完了!
Subclipseだけじゃなくて、Subversiveでも同じ手順で出来た。
Subversive
更新サイトURL:http://www.polarion.org/projects/subversive/download/1.1/update-site/

ツリーを展開していく度に、pageantのコンソールが開くのがうっとおしい。
けど、そこは我慢しよう。
追記:
PuTTY β 0.58 ごった煮版に含まれる、plinkw.exeを使うことで、
コンソールが毎回開かなくなる。感謝。
これで、格段便利&ストレスを感じなくなった。

2007年3月5日月曜日

Subversion クライアントの設定(TortoiseSVN)

Subversionをインストールして、リポジトリも作成したので、
クライアントをインストールする。

参考
  1. さくらインターネットにTracを構築する - WeekbuildのHack倉庫
  2. Subversion/TortoiseSVNのインストール - ピノキヲ IT Wiki
  3. さくらインターネットでSubversion (SaikyoLine.jp)
↑ のサイトを参考にさせて頂いて、インストールします。
  1. http://tortoisesvn.net/downloadsからパッケージ版のダウンロード。
    Subversion/TortoiseSVNのインストール - ピノキヲ IT Wikiを参考にすれば、問題なくインストールできるはず。
  2. sshを使って繋ぐために、鍵を生成する。
    PuTTYのputtygenを使用して、鍵を生成してSSHでつなげるようにします。
    puttygen.exeはPuTTY Download Pageからダウンロードしてください。
    さくらインターネットにTracを構築する - WeekbuildのHack倉庫より引用

    puttygen.exeを起動して、Generateボタンを押してください(空白エリアの中でマウスを動かせと表示されます。グリグリ動かしましょう)。
    表示されるテキストエリア(Puglib key for pasting into OpenSSH authorized_keys
    file)の中身をコピーし、メモ帳でテキストファイルに保存してください。
    そのファイルをauthorized_keysというファイル名(拡張子な
    し)に変更してください。
    そのままSave private
    keyボタンを押して秘密鍵を適当なフォルダに適当な名前で保存してください(私は忘れないようにToritoiseSVNのインストールフォルダ/binにおきました)。
    authorized_keysをFTPで$HOME/.ssh/に置いてください。
    さくらインターネットにTelnetで接続して、パーミッションを変更してください。
    あと、.cshrcを書き換えて$HOME/local/binにPATHを通しておくことも忘れずに(2.(1)で既にやってあれば大丈夫)。
    cd
    chmod 700 .ssh
    cd .ssh
    chmod 600 authorized_keys
  3. ToritoiseSVNを設定(SSH編)
    これもさくらインターネットにTracを構築する - WeekbuildのHack倉庫を参考に。

    エクスプローラで適当なフォルダを選び右クリック→ToriseSVN→setting(設定))
    画面左のツリーからNetwork(またはネットワーク)を選び、SSHクライアント欄にTortoiseSVNのインストールディレクトリ\binにあるTortoisePlink.exeのフルパスを指定してください。引数は
    「-l アカウント名」と「-i 4.(2).5で作成した秘密鍵のパス」を指定してください。
    例:秘密鍵id_rsa.ppkをTortoisePlink.exeと同じフォルダに置いた場合。XXXはさくらインターネットのユーザID
    "C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" -l XXX -i "C:\Program
    Files\TortoiseSVN\bin\id_rsa.ppk"
    これで、SSH関係の設定は完了。
  4. ToritoiseSVNを設定(キーワード置換編)
    非常にないと困る機能、キーワード置換の設定を、クライアントで行う。
    ファイル内の$Id$キーワードや$Date$キーワードを展開する為に、
    C:\Documents and Settings\xxx\Application Data\Subversion\config
    を編集する。(Windowsのユーザーのホームディレクトリ配下のApplication Data\Subversion\config)
    enable-auto-props = yes
    のコメントをはずすのと、
    [auto-props]の下に、キーワード置換するファイルの設定を拡張子単位で行う。
    バイナリファイルをキーワード置換したら大変なことになっちゃう気がするし。(未確認)

    [auto-props]
    *.cgi = svn:keywords=Id Date Author Rev URL
    *.pm = svn:keywords=Id Date Author Rev URL
    *.pl = svn:keywords=Id Date Author Rev URL
    *.hmtl = svn:keywords=Id Date Author Rev URL
    *.htm = svn:keywords=Id Date Author Rev URL
    *.txt = svn:keywords=Id Date Author Rev URL
    *.js = svn:keywords=Id Date Author Rev URL
    *.css = svn:keywords=Id Date Author Rev URL
    *.sql = svn:keywords=Id Date Author Rev URL
    これで、↑の各々のファイルのインポートの際に、「$Id$」と「$Date$」と「$Author$」と「$Rev$」と「$URL$」キーワード置換が有効になる。
  5. 繋ぐでみる
    エクスプローラーを開き、適当な場所で右クリックして、「TortoiseSVN」→「Repo-Browser」を選択。
    URLを聞かれるので、入力する。
    svn+ssh://myways.sakura.ne.jp/home/myways/var/svn/myway
    これでつながるはずです。
    なんか、英語で色々聞かれるけど、OKを押す!(キャッシュらしい)
    ツリーを展開できたら、万事OK。

Subversionのリポジトリを作成する

Subversionのインストールが終了したので、リポジトリを作成する。

$ cd
$ mkdir var
$ cd var
$ mkdir svn
$ svnadmin create --fs-type fsfs
/home/myways/var/svn/myway


これでリポジトリmywayの作成が完了


$ ls -la /home/myways/var/svn/myway


で、結果が


-rw-r--r-- 1 myways users 229 Mar 5 14:25
README.txt
drwxr-xr-x 2 myways users 512 Mar 5 14:25
conf
drwxr-xr-x 2 myways users 512 Mar 5 14:25 dav
drwxr-sr-x 5 myways users 512 Mar 5 14:25 db
-r--r--r-- 1 myways users 2 Mar 5 14:25
format
drwxr-xr-x 2 myways users 512 Mar 5 14:25
hooks
drwxr-xr-x 2 myways users 512 Mar 5 14:25
locks

ができてれば作成完了。
まず、trunkとbranchesとtagsのディレクトリをインポートして、作成しておく。

$ mkdir $HOME/tmp
$ cd $HOME/tmp
$ mkdir mywaysvn
$ cd mywaysvn
$ mkdir trunk branches tags
$ cd ..
$ svn import mywaysvn file:///$HOME/var/svn/myway -m "First"
$ rm -r mywaysvn


これで、リポジトリの作成は完了。
次はクライアントの設定で、Subversionを確認する。

Subversion1.4.3をさくらにいれる

悩んだ末、調べてみたら、ソースコードから入れなきゃいけないらしい。

まず、Subversionのインストールを流し読み。
SaikyoLine.jpを参考に、
とりあえず、1.4.3を入れよう。
ソースコードのある場所




$ mkdir -p $HOME/local/src
$ cd $HOME/local/src
$ wget http://subversion.tigris.org/downloads/subversion-1.4.3.tar.bz2
$ tar jxf subversion-1.4.3.tar.bz2
$ cd subversion-1.4.3
$ ./configure --prefix=$HOME/local

とりあえず、バージョンを変えてまんまやってみる。
さっそく、こけた。




configure: error: no suitable apr found

APRがないらしい。
もう一回ググってみる。

http://nyarla.net/blog/subversion1 で見つけた。
一緒にTracも入れてみたいと思いついたので、その為の設定も一緒にやってみた。
SWIGをインストールして、APRをインストールしきゃいけないらしい。
SWIGはここ、APRはここにある。

SWIGのインストールを参考にSWIGのインストール




$ cd $HOME/local/srcwget http://jaist.dl.sourceforge.net/sourceforge/swig/swig-1.3.31.tar.gz
$ tar zxvf swig-1.3.31.tar.gz
$ cd ./swig-1.3.31
$ ./configure --prefix=$HOME/local --with-python=/usr/local/bin/python
$ make
$ make install


無事、インストール完了。
次はAPR1.2.8のインストールをした。



$ cd $HOME/local/src
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-1.2.8.tar.gz
$ tar zxvf apr-1.2.8.tar.gz
$ cd ./apr-1.2.8
$ ./configure --prefix=$HOME/local --disable-static
$ make
$ make install


APRも無事完了。
次はAPR-Utilも入れなきゃいけないのかな?
とりあえず、入れておく。



$ cd $HOME/local/src
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.2.8.tar.gz
$ tar zxvf apr-util-1.2.8.tar.gz
$ cd ./apr-util-1.2.8
$ ./configure --prefix=$HOME/local --with-apr=$HOME/local
--with-expat=/usr/local --with-iconv=/usr/local --disable-static
$ make
$ make install


APR-Utilも無事、完了。
再度、Subversionのインストールを試みる。


$ cd $HOME/local/src/subversion-1.4.3$ ./configure --prefix=$HOME/local
--with-neon=$HOME/local --without-berkeley-db --enable-swig-bindings=perl
--with-swig=$HOME/local/bin/swig --with-apr=$HOME/local/bin/apr-1-config
--with-apr-util=$HOME/local/bin/apu-1-config --disable-static
$ make
$ make install


で無事インストール完了。
だと思う。
まだ、いじってないので、よくわからんけどw