ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Subversionコミュのsvnコミット時のチェック

  • mixiチェック
  • このエントリーをはてなブックマークに追加

OS:Windows XP Home
SVNサーバ: version 1.6.13 (r1002816)

で環境を構築しています。

質問なのですが、
コミット時(pre-commitまで)に文字コード/改行コードをチェックする方法はありますか??
(ex,javaソースはS-JIS+CRLF以外はコミット不可、
xmlはUTF-8+LF以外はコミット不可,,,など)
(コマンド/フックスクリプトは問いません)


できれば、クライアントには手を加えず
サーバのみで対応ができたらいいかなと思ってます。

コミット時は、まだリビジョンなどもついてないから無理でしょうか??

コミット後に、強制的に文字コード/.改行コードを変換...というなら
できるかなとは思いますが...

コメント(12)

そういったチェックは、Pre-commitフックが一番活躍できる場面ではないでしょうか。
行いたいチェックを実現するスクリプトが作成できれば、commit予定の内容をそのスクリプトに渡すことは簡単かと思います。

ただ、自分には実現されたいチェック内容が、かなり難しく感じられます。。。
>なかじまゆうじ さん

返答ありがとうございます。
たしかに、Pre-commitフックが一番活躍できる場面なのですが...

いかんせん、コミットトランザクションからは、
ファイルの実体を抽出できないから
ファイルの[中身]をチェックするのは難しいんですよね

理想は

svn export -t xxx 〜 (tはトランザクション名)

のような機能があるといいんですけどね..
(残念ながらリビジョン指定しかできない...ようですね...)

post-commitに文字コード/改行コードをチェックして、
NGの場合には
登録した人にメールを...とかなら何とかなりそうですけど...
(リビジョンが更新されてしまうし、スマートではないかな...と)

何か面白そうな方法がありましたら、ご教授ください。
svnlook cat で実体を抽出できませんでしょうか…?
気になったので探してみました。
ここが参考になると思います。
http://wordaligned.org/articles/a-subversion-pre-commit-hook


>Kawai さん

ありがとうございます。

http://d.hatena.ne.jp/sotarok/20090302/1235988820

たしか、この辺で
一時ファイルを取り出して、チェックしているのを思い出しました。
個人的には、リダイレクトで出力する必要があるので
改行コード/文字コードはOSに依存してしまうのかなと思ってましたf^^;

一度確認してみる必要はありますね..

>マクセル-323Fさん

ありがとうございます..
サイトを拝見すると、Pre-hookスクリプトに関することが
記述されてるようですね..
英語なので、理解には時間かかりそうですが...(苦笑)

ありがとうございます

基本的には同じ事が書いてありますね。

改行コードに関しては、「cr」なのか「cr+lf」なのかは検索すれば判りますが、
文字コードに関しては、コメントなどで決まった文字列が入っている箇所があって、
そこコードがどのように置き換わっているか確認しないと判定が難しいように思います。

文字コードは、icu でファイル全体を変換してみればわかと思います。python でやりたければ PYTHONIOENCODING を適切にセットして変換すれば大丈夫かと。

>マクセル-323Fさん

文字コードに関しては、nkf..exeやnkf.dllで判断させればよいかなとf^^;
むしろ、改行コードが苦戦ですね...
CrLfで、登録OKでLfコードでコミットされた場合...とか?
(1行ごとにチェックしなくてはいけないので、時間がかかってしまう...)

まぁ、のんびり考えてみます。

>Kawaiさん

ファイルの変換はnkf もしくは iconvくらいしか知らず、
icuなんてのもあるんですね (話はずれてますが...f^^;)

基本は.windows+VBSで実現可能な範囲でやっていますf^^;
改行コードが「CrLf」の場合と「Lf」と混在することは無いので、
「CrLf」という連続コードがなく、「Lf」があれば、改行コードは「Lf」で良いのでは?


改行文字についてはsvn:eol-style、設定ファイルでの[auto-props]での設定で何とかなりませんか?

>マクセル-323Fさん

普通にやってれば、混在することはないんですけど...

ex)
改行コードLFのファイルを作成する test1.txt
改行コードCrLfのファイルを作成する test2.txt

test1.txtの中身をtest2.txtにコピペして、test2.txtを上書きする

ということをやると、混在したものができるんですよねf^^;
(こういうのもチェックできると、なおさら面白い...ですね
xx行目の改行コードが不正です..とか?)

>tacaさん

アドバイス、ありがとうございます。
えっと、コミットされた際にauto-propsとかで強制的に
変更してしまうことは可能かと思います。

(その運用は間違ってないとも思います。)

できれば、サーバーで変換するのではなく、
クライアントからコミットされたときに[チェックして、
NGならば、はじく]ことが大事なんですよね...

いろいろと難しいものです 。。。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Subversion 更新情報

Subversionのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング