svnsync試してみた

svnsync は subversion repository の replication ツール。Subversion 1.4 から使える。よくバックアップって紹介されたりするけどバックアップと replication はなんか違うような気がする。RAID とバックアップが違うのと同じ感じかなぁ。

目的は忘れました

なんでこんなことをしようと思っていたか忘れました。なんかでも以下のようなことを考えていたような。

  1. Capistrano は rsync による deploy もできるけど repository から取ってくるのがやっぱ王道?
  2. でも普段の commit 作業はローカルのサーバの方が速いし快適だし
  3. svnsync 使えばいいの?

実際にやってみた

意外に準備が面倒。

  1. sync 先を svnadmin で作る
  2. sync 先の repository を手作業で sync 先として準備(後述)
  3. sync 先の repository を svnsync init DEST SRC で準備

※ sync 元の repository へは当然 read only アクセスしかできなくても問題ない。

ここまでくれば

svnsync sync

で ok.

2 の手作業っていうのは pre-revprop-change フックの作成のことで、素の repository を例に取るとこんな感じになる。

REPOSITORY/
|-- README.txt
|-- conf/
|-- db/
|-- format
|-- hooks/
|   |-- post-commit.tmpl
|   |-- post-lock.tmpl
|   |-- post-revprop-change.tmpl
|   |-- post-unlock.tmpl
|   |-- pre-commit.tmpl
|   |-- pre-lock.tmpl
|   |-- pre-revprop-change*      <-- これ
|   |-- pre-revprop-change.tmpl
|   |-- pre-unlock.tmpl
|   `-- start-commit.tmpl
`-- locks/

内容は

#! /bin/sh
exit 0

で、いいらしいんだけどこのことは残念ながら svnbook には書いてないんだよなー。hook がありさえすればいいっていうのはナゼか、とかも分からない。「そういうもの」として書かれていてなんか気持ち悪い。

一部だけsyncしてみた

あと、できるんじゃないかと思ったけど

  • 一部だけ sync もできる
    • svnなのでURLに詳細なパスを指定すればよいだけ
  • ただし revision は全部コピーされる
    • sync 対象以外の path は空 commit のような扱いになる(repository の db の中身を見るとすぐ分かる)

ということなので、でっかい repository を全部 replication しなくちゃいけないわけじゃないです。目的別に replica を作ってうまく使えるかも。

※ Subversion 1.5+ だと partial mirror は許可しないって書いてありました

忘れ物

自動化するには svn の repository の中の hooks の中の

post-commit

スクリプトに実行ビット立てて

svnsync sync URL

を叩いてやる必要があります。

XHTML + CSS スキルセットは超重要

IT戦記 - マークアップエンジニアはどこへ向かうべきか(を考えてたらカッとなって LL の資料公開)

まぁ「それだけ」だとお仕事的に困るかもなとは思うんだけど、そんな話を非マークアップエンジニアが語るのは余計なお世話だろう。

で、それとは別に実際問題このスキルセットは極めて重要で、これらをちゃんと理解してる人がどれだけ Web プログラマに居るのかというと結構疑問だったりする。

Web に関ろうという人は XHTML + CSS のスキルはまずきちんと習得した方がいいと思う。正しい HTML じゃないとブラウザ間の挙動の揺れが読めない。これは JavaScript を使っていなくてもそう。マークアップをバカにするやつはマークアップに泣くよ。そのくせテストの工数がーとか言い訳ばっかうまくなったりする。そういうのは自分も周りも不幸にする。「とほほ」眺めて分かった気になってるようなやつは廊下で立ってろ。

例えて言えば Web アプリをやるうえで HTML がよく分からないっていうのは、ファイルにデータを書き出す方法がちゃんと分かってないとか、データベースへのアクセスがよく分かってないとか、そういうのと同じわけですよ。サーバサイドのプログラムにとっては、どういう風にデータを受け取って、どういう風にデータを出力するのか、っつー話なわけだから。(もちろん HTML だけ分かっても HTTP が分からないと話にならないんだけど。)

CSS もきちっとやっておかないと、DOM をどういじるのが効果的かということを理解しきれないです。CSS の継承を利用すれば最小限のコードで最大限の効果を生むことができるんだけど、これが分かってないとメタメタな HTML を JavaScript でむりくり操作しまくって、とても分かりにくいうえに遅くて使いものにならないとか、HTML をちょっと変更したら全然動かなくなるコードを生み出したりします。で、動かなくなるから HTML の変更禁止とか本末転倒な現象が起きる。これはもはやアルゴリズムもデータ構造も分からないまま我流で突き進んじゃう、なんちゃってプログラマと同じです。百害あって一利なし。

マークアップエンジニアの行く末なんか心配してるヒマはないよ。マークアップエンジニアとタメ張れるくらいに勉強しないと。みんなが勉強してるんだったら、いよいよ行く末が心配になるかもしれない。逆に、心配している(ようにはあんまり見えないけど、リンク先の)彼らは本当に理解して使いこなせているってことなんだろう。

まぁでも HTML 5 だっけ? あれが実装されたらまたしばらく混乱が起きて、カリスママークアッパーとか出てくるんじゃないかな。なんかそんな感じ。

Leopard プレビューなわけですが

Apple のサイトを見ていたんだけど、

なんだこの Spaces っての。

仮想デスクトップまで標準で入るのか。なんかさすがに追加機能が地味になってきたな。まぁ嬉しいからいいんだけど。TimeMachine とか。

で、これ 32bit PPC でも動くんだよね? さすがに Leopard 出たら Panther はもう見捨てられるだろうからなぁ。Fink が対応したら移行って感じか。

Rails on OS X !? - Ruby on Rails、MacOS X Leopardに搭載へ (MYCOMジャーナル)

Rails まで載っちゃうんだ。うーん。でも標準で載るとアップデートのポリシーを Apple に握られちゃうからなぁ。ちょっと微妙な気も。

screen on Debian で backspace

2002/05/25 Ctrl-h≠\010: Debianの怪

3年ぶりにやはり fdclone で不便を感じたので設定を修正

..screenrc に

bindkey -k kb stuff ^H

でよかった。

Locomotive なんて素敵なものが

Locomotive

Rails の OSX 用のパッケージがあった。Lighttpd 付き。よーしじゃあ XAMPP ステステ。

PHP

/usr/ports/lang/php4-extensions

内で

make clean config

すると自由に設定を変更できるので、これでうまく build できる設定を探せと。ちゅーか php4-mbstring を独立させてほしいなぁ。PHP のインストールっていつになったら楽に確実になるんだろ。野良 build がいちばん確実ってんじゃ ports のありがたみないものねぇ。

参考 http://www.fkimura.com/php4-1.html

Zebedee

FreeBSD 4.10R ではなぜか

detached false

でないとうまくいかないっぽい。これはデフォルトの動作じゃないので注意。2.4.1 は野良ではなく 4.9R 以前用の ports の skelton を使って入れた。しかし 2.5.2 が出たのがすでに1年前なわけだし、そろそろ Windows クライアントなども含めて 2.5.2 を視野に入れておいた方がいいのかも。

About

例によって個人のなんちゃらです