にっき

2007/09/06 16:28:14

ふっくせんちょ


こみっとろぐのこめんとを空っぽとか短すぎてよくわかんなかったりが多かったから
こんなときはたぶんきっと hook すくりぷとで制限できるはず☆
なんて思いながら調べてみたけど・・・
さんぷるすくりぷとって pyton や ruby ばっかりにう(つx;【みかん
なんとなくで解読できたけどやっぱりもうちょっと読めるようにならないとかにゃぁ・・・
ってこのさ〜ば ruby は入ってないはずだけど・・・ (´ω`;【みかん



とりあえず hooks でぃれくとりに
start-commit
 →とらんざくしょん開始前に起動
  引数は[りぽじとりのぱす,ゆ〜ざ名]
  0 以外を返すととらんざくしょんを中断
  標準えら〜出力に投げたで〜たはくらいあんとに送信される
pre-commit
 →とらんざくしょん完了後でこみっと開始前に起動
  引数は[りぽじとりのぱす,とらんざくしょん名]
  0 以外を返すとこみっとを中断してなかったことに
  標準えら〜出力に投げたで〜たはくらいあんとに送信される
post-commit
 →こみっと完了後に起動
  引数は[りぽじとりのぱす,りびぢょん番号]
pre-revprop-change
 →りびぢょん属性変更前に起動
  引数は[りぽじとりのぱす,りびぢょん番号,ゆ〜ざ名,属性名]
  っていうか属性変更は戻せないからこのすくりぷとがないと変更不可なのでちうい
post-revprop-change
 →りびぢょん属性変更完了後に起動
  引数は[りぽじとりのぱす,りびぢょん番号,ゆ〜ざ名,属性名]
  これだけあっても pre-revprop-change がないと起動しないからちうい
pre-lock
 →ふぁいるろっく前に起動
  引数は[りぽじとりのぱす,ろっくふぁいるのぱす,ゆ〜ざ名]
  0 以外を返すとろっくを中断してなかったことに
post-lock
 →ふぁいるろっく完了後に起動
  引数は[りぽじとりのぱす,ゆ〜ざ名]
  標準入力にろっくされたぱすが入ってる
pre-unlock
 →ふぁいるのろっく解除前に起動
  引数は[りぽじとりのぱす,ろっくふぁいるのぱす,ゆ〜ざ名]
  0 以外を返すとろっく解除を中断してなかったことに
post-unlock
 →ふぁいるのろっく解除完了後に起動
  引数は[りぽじとりのぱす,ゆ〜ざ名]
  標準入力にろっく解除したぱすが入ってる

って名前の実行可能ふぁいる(svnserve が x できるぱ〜みっしょん持ってるもの)を置くだけでおっけぃ☆
xinetd 経由のときは svnserve を起動してるひとの権限で動くからそのゆ〜ざに実行権限(766?)を
svn+ssh のときはこみっとするひとの権限で動くからこみっとするひとの所属するぐる〜ぷに実行権限(776?)を
でいちおうすくりぷとを実行してくれるっぽいのにう...〆(・x・。【みかん

今回はこみっとする時のこめんとをちぇっくして中断したいから pre-commit を・・・
python や ruby はちゃんといぢれる自信ないし bash は標準えら〜に投げる方法がわかんないし・・・
ってことで php で実装してみたにう☆ヾ(・ω・。【みかん
#!/usr/bin/php
<?php

// set environment values
define('SVNLOOK','/usr/bin/svnlook');
define('REPOS',isset($argv[1]) ? $argv[1] : '');
define('TXN',isset($argv[2]) ? $argv[2] : '');

// get comment strings
$comments = array_filter(
    explode(
        "\n",
        shell_exec(
            sprintf(
                '%s log -t "%s" "%s"',
                SVNLOOK,
                escapeshellcmd(TXN),
                escapeshellcmd(REPOS)
            )
        )
    ),
    create_function('$v','return strlen(trim($v)) > 0;')
);

// empty comment check
if(count($comments) == 0)
{
    fwrite(STDERR,'Empty comment is not allowed.');
    exit(1);
}

// simplest comment check
if(count($comments) == 1 && preg_match('/^\w+(\s+\w+)?$/',trim($comments[0])))
{
    fwrite(STDERR,'Simplest comment is not allowed.');
    exit(1);
}

?>

こんなかんじで空白+すてきにしんぷるなこめんとはかっとできるのかなぁ?
全角ちぇっくもしたかったけど・・・
この方法で取得するときにはなんだか変な変換がかかってるのか全部 ASCII 文字になってて識別不能だったにう(つx;【みかん

今回のぽいんとはぷろぐらむが起動するときには環境変数が空っぽになってるのにちういと
こめんとの取得は
svnlook log -t {とらんざくしょん番号} {りぽじとりのぱす}

なかんじで svnlook を通してげっとしないとってとこかなぁ?
# svnlook help log
log: 使用方法: svnlook log <リポジトリパス>

ログメッセージを表示します。

有効なオプション:
  -r [--revision] <引数> : リビジョン番号を <引数> と指定します
  -t [--transaction] <引数> : トランザクション名を <引数> と指定します

ってことで post-commit のときは -r おぷしょんでりびぢょん番号から取得すればおっけぃにう?
ふみゅ・・・
がんばってちぇっくすれば同じこめんと連続もはじけるかなぁ?
目的と手段が反対になりそうだから今回はぱすしとくけど・・・


こめんと

こめんとする?



 
投稿された内容の著作権はこめんとの投稿者に帰属するっぽいです☆
また,現在 IE6 以下で Sleipnir,Lunascape,Donut じゃないゆ〜ざえ〜じぇんとからの描き込みを制限してますです☆
該当しちゃうかたはてきとうにゆ〜ざえ〜じぇんとを偽装しちゃってくださいです(´ω`;【みかん
さぶこんてんつ
前月 2024年 11月 翌月
          1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
             
  • あじ あじ
  • ED ED
  • えでん えでん
  • えれふぃ えれふぃ
  • ぐらぶれ ぐらぶれ
  • etc etc
  • にっき にっき

あわせて読みたい

先頭に戻る
めにう 先頭に戻る