タイトル/名前 | 更新者 | 更新日 |
---|---|---|
画像/2009/06/07/182106/svn_repo_version2.jpg | msakamoto-sf | 2009-06-07 18:21:16 |
画像/2009/06/07/182025/svn_repo_version1.jpg | msakamoto-sf | 2009-06-07 18:20:54 |
PHP/cgi.force_redirectの詳細 | msakamoto-sf | 2009-06-03 00:01:05 |
日記/2009/05/30/svnserver.confの設定メモ | msakamoto-sf | 2009-05-30 14:00:33 |
日記/2009/05/18/Redmineインストールメモ | msakamoto-sf | 2009-05-18 06:55:12 |
日記/2009/05/10/vimの色づけとTeraTerm, netrw | msakamoto-sf | 2009-05-10 11:12:40 |
日記/2009/05/09/vimの色づけ | msakamoto-sf | 2009-05-10 11:02:32 |
技術/shell/".bash_profile"と".bashrc"の使い分け | msakamoto-sf | 2009-05-09 03:01:54 |
日記/2009/05/06/coderepos, vmware-time(メモ) | msakamoto-sf | 2009-05-06 20:51:12 |
日記/2009/05/06/OpenBSD4.5でGNU fileutilsのglsでカラー表示ls | msakamoto-sf | 2009-05-06 17:48:56 |
昔自分で書いたはてダへのリンクです。
PHPの実装コードまで言及しておきながら、書いた本人が忘れてました。はてなスターを貰って思い出しました。
PHPをCGIで動かすことは、昨今は滅多にないと思います。
とはいえ、もしCGIで動かす時は、ネットで出てきた記事を安易に信じて cgi.force_redirect をoffにしないよう注意しましょう。
普段は file:// だったり http(s):// 経由でSVNにアクセスしていますが、svn:// 経由のアクセスを行う場合も時々あります。その時は svnserve.conf を調整してユーザー認証を設定できますが、少し嵌った事もあり、メモ。なお以下の説明はSubversionの1.5.6ベース(TortoiseSVNなら1.5系列)。
svnadmin createでリポジトリを作成された、conf/ディレクトリの中は
conf/ svnserve.conf passwd authz
のようになっています。svnserve.conf が、svnserveによる svn:// 経由でのアクセスで使われる設定ファイルになります。passwd はユーザ一覧, passwd はアクセス許可設定ファイルになります。
svnserver.confのユーザ認証周りで今回のメモに関連する項目は、生成直後は次のようになっています。
[general] ... # anon-access = read # auth-access = write ... ### Uncomment the line below to use the default password file. # password-db = passwd ... ### Uncomment the line below to use the default authorization file. # authz-db = authz ...
分かりづらいのですが、anon-access と auth-access はコメントアウトされているものがデフォルト値になっています。
逆に、password-dbとauthz-dbは、"Uncomment..." とあるようにコメントアウトされていれば未設定として扱われます。
今回嵌ったのは、password-dbとauthz-dbはコメントアウトを外さないと適用されない事に気づかず、コメントアウトしたまま、passwdやauthzファイルを弄くり回し、「おかしい・・・checkoutはできるのに、checkinでどうしても認証に失敗する・・・」と悩んでいたわけです。
svnserve.conf :
[general] ... # anon-access = read # auth-access = write ... ### Uncomment the line below to use the default password file. password-db = passwd
となります。「checkoutは誰でもOK、checkinは認証されたユーザだけ。」というのは、anon-accessとauth-accessのコメントアウトされているデフォルト値で実現されていますので、後は、認証するユーザ一覧のpasswdファイルをpassword-dbに設定して、コメントアウトを外すだけです。
password-dbにはフルパス指定も出来るので、複数リポジトリでユーザを一元化したい場合はどこか共通のpasswdファイルをフルパスで指定することで対応できると思います。
svnserve.conf :
[general] ... anon-access = none # auth-access = write ... ### Uncomment the line below to use the default password file. password-db = passwd
"anon-access" を none にすることで、認証ユーザのみcheckoutできるようになります。
svnserve.conf :
[general] ... # anon-access = read # auth-access = write ... ### Uncomment the line below to use the default password file. password-db = passwd ... ### Uncomment the line below to use the default authorization file. authz-db = authz
authz-dbをコメントアウトし、authzファイルを指定します。
リポジトリディレクトリ毎のconf/svnserve.confではなく、svnserve全体で設定を統一したい場合は、svnserveの起動時にsvnserve.confを指定します。
例:
$ svnserve -d -r /opt/SVNREPOS --config-file /opt/.svnserve/svnserve.conf
こうしておけばpassword-dbとauthz-dbも自然と全リポジトリ共通の設定となりますので、ユーザ管理(password-db)とアクセス制御(authz-db)も一元管理が可能となります。
チケット本文やコメントのバージョン番号やチケットIDが、Tracだとプロジェクトをまたいでリンクできないのが非常に不便。というのも、今入っている現場では、一つの大きなプロジェクトの中に、リポジトリを分けてWebモジュールやAPIモジュールを入れている。これだと、WebとAPIに跨いだり、そもそも共通部分だったり、全般的に直しが必要なものなどをチケット登録するのが分かりづらいし、また、WebとAPIの両方に修正が必要な場合のリビジョン番号の自然なリンクが出来ない。
ぶっちゃけ、これが為にTracを活用できていない。
というわけでRedmineを試してみようとインストールしたメモ。
ざっと流すと、
SQLite3のgemインストールの参考:
sqlite3用のdatabase.yml:
production: adapter: sqlite3 dbfile: db/production.db
※demoというのがsqlite3用だったので、そのままコピペしてdbfileを直しただけ。
日記/2009/05/09/vimの色づけ で無事色が付いたのだけれど、TeraTermで見ると明るい黄色が多用されていたりして、かなり見づらい。
putty使えば?という所なのだけれど、実は現在のお仕事でTeraTerm上で FreeBSD のvim7を使っており、そちらでは「見やすい」色づけになっている。
釈然としないので、TeraTermでどうにかしようと、色々とTeraTermの設定を弄ってみるが、上手く行かない。
TeraTerm自身も、4.49 -> 4.62 に入れ直したのだが駄目。
ということで、試しに TERATERM.INI を削除して、設定をまっさらにして見たら直った。
昔のTeraTermの設定が色々入り組んで悪さしてたのかもしれない。
で、TERATERM.INIが無くなってメニューが全部英語になってしまった。これを日本語に直そうというわけで、
http://slashdot.jp/~ribbon/journal/406315
を参考に teraterm.ini に
UILanguageFile=lang\japanese.lng
を設定して解決。
あと、vim の Netrw Directory Listing で正体不明の現象。
" ============================================================================ " Netrw Directory Listing (netrw v132) ... e../ e.ssh/ ehelloworld.c ^ この頭の"e"って何?
とりあえず .vimrc から以下をコメントアウトしたら直った。
if &encoding !=# 'utf-8' set encoding=japan set fileencoding=japan endif
最新のnetrwではどうなるかは不明。とりあえずOpenBSD4.5のpackageから入れたvim7.2(nox)だとこうなった。
謎。
あと、netrw は .vimrc が無いと動かないみたい。 実験中、 .vimrc を削除して "vim ." とかすると".はファイルじゃありません"みたいに怒られた。空っぽの.vimrcをtouchで作ったらちゃんと動いた。これも謎。
以下のURLを参考に、TERM環境変数に"xterm-256color"を設定してみたらどうにか "syntax on" で色がついた。
"xterm-color"でもOK.
bash_profile, bashrcの基本的な知識のメモ。bashの日本語manページより抜粋&まとめ。
bashが対話的なログインシェルとして起動されるか、 --login オプション付きの非対話的シェルとして起動されると、/etc/profile からコマンドを読み込んで実行した後、以下の順番でファイルを探し、最初に見つかった読み込み可能なファイルからコマンドを実行する。
ログインシェルでない対話的シェルとして起動されると、~/.bashrc ファイルがあれば、 bash はここからコマンドを読み込み、実行する。
以下のように、 .bash_profile 内で .bashrc を読み込ませる。こうしておけば、ログインシェルか否かにかかわらず .bashrc を読み込んでくれる。従って、日常的なシェル環境の設定は .bashrc の方に書いておけば良い。
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
PS1="[\u@\h \W]\$ " export PS1 alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' ...
codereposを漁っていたら、VMware上での時間遅れを補正するC言語のツールを見つけた。
http://coderepos.org/share/browser/lang/c/misc/vmware-time
を参考に作られたようだ。
以前VM Serverを使っていた現場で、ゲストOSの時刻が大幅に遅れて困っていた現場があった。
もしかしたら効果があるかも知れない。
Linuxみたいな色づけlsをしたかったので、調べてみました。
によると3種類のカラー表示があるようです。
今回はgnulsを使ったカラー表示を試してみました。portsを触ってみたかったのもあります。
ports.tar.gz をFTPの4.5ディレクトリよりダウンロードして、/usr/以下で展開します。
その後、
# cd /usr/ports
して、
# make search key=gnuls Port: gnuls-4.1p0 Path: misc/fileutils,-ls Info: colorized GNU ls Maint: The OpenBSD ports mailing-list <ports@openbsd.org> Index: misc L-deps: iconv.>=4::converters/libiconv intl.>=4:gettext->=0.10.38:devel/gettext B-deps: :devel/gmake gettext->=0.17:devel/gettext R-deps: gettext->=0.10.38:devel/gettext Archs: any
とすると、misc/fileutils に含まれていることが判明したので、そこにcdしてmake, make installとして入れました。make時に依存関係でgmakeもコンパイル・インストールされました。
・・・後で気づいたのですが、既にpackagesでfileutilsが提供されていて、これを使うだけで良かったようです。
前掲のURLでは"gnuls"でしたが、OpenBSD4.5時点でのバイナリ名は"gls"になっているようです。
あとは(bashユーザなので)~/.bash_profileで
LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01: \ or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:\ *.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:\ *.i386.rpm=01;31:*.src.rpm=01;30:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.ppm=01;35:\ *.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.png=01;35:' export LS_COLORS alias ls='gls --color=auto -NF --show-control-chars'
として、ちゃんと色づけlsが動きました。
ちなみにLS_COLORSについては適当なLinuxマシンからのパクリです。