無為空間
むいむい(´ω`*)
Entries
- bzr 2.0.4
- bzr-rebase 0.5.4
- bzr-svn 1.0.0
で確認。
rebaseが使えると、Subversionで
$ svn checkout http://example.com/svn/tags/version1 # 安定版を落としてくる ……いろいろ編集する…… ……いろいろ編集する……(ローカルの版管理どうしよう……(~_~;)) $ svn switch http://example.com/svn/tags/version2 # 安定版が新しくリリースされたのでチェックアウトをそちらにswitchする
とかやっていたところを
$ bzr branch http://example.com/svn/tags/version1 # 安定版からローカルブランチを作成 ……いろいろ編集する…… $ bzr commit # 編集をローカルブランチにコミットする ……いろいろ編集する…… $ bzr commit # 編集をローカルブランチにコミットする $ bzr rebase http://example.com/svn/tags/version2 # 安定版が新しくリリースされたのでローカルブランチをそちらにrebaseする
こうできるので非常にありがたい。
RedmineとSubversionのパスワードを一元管理する方法を探していたところ、こんなものが用意されていたことを今更ながら知った。
Repositories access control with apache, mod_dav_svn and mod_perlRedmine.pmを特定の場所に置き、Apacheの設定を行うことで、Redmineの設定でSubversionの要求を認証・認可できるようになる。
公式の例はDebian/Ubuntu。CentOSなら「How To Install Redmine on Centos 5.2 Update」あたりが参考になる。
このモジュールの主な特徴は以下の通り。
- URL中の「リポジトリ名」と思われる部分を「プロジェクト識別子」と判断してプロジェクトを識別する
- Redmineのログイン名とパスワードで認証する
- ユーザーがプロジェクトに対して「リポジトリの閲覧」権限を持っていればリポジトリの読み込みを許可する
- ユーザーがプロジェクトに対して「コミットの閲覧」権限を持っていればリポジトリへの書き込みを許可する
- 公開プロジェクトの読み込みは認証なしで許可する
- AnonymousとNon memberの権限は無視される
注意しなければならない点は
- リポジトリ名とプロジェクト識別子を一致させなければならない
- プロジェクトを識別できないと認可が一切通らない
- プロジェクト設定のリポジトリURLはなんの意味もなさない
- 公開プロジェクトの読み込みには認証を掛けられない
- Anonymousに「リポジトリの閲覧」権限がなかろうが関係ない
といったあたり。
Hudson 1.351のビルド手順の1種「Windowsバッチコマンドの実行」はテキストをバッチファイルとして実行するが、そのバッチファイルの最後には「exit 0」という行が追加される。
そうとは知らずにこのようなテキストを書いてビルドすると、
CALL :COPY "foo\foo.dll" CALL :COPY "bar\bar.dll" CALL :COPY "baz\baz.exe" GOTO :EOF :COPY COPY %1 artifacts IF EXIST "%~dpn1.pdb" COPY "%~dpn1.pdb" artifacts
CALL :COPY
してからEOFに辿り着くまでの間に exit 0
が実行されることになるため、 CALL
から戻ることなくバッチ処理が終了してしまう。
ユーザーanonymousが実行 マスターでビルドします。 [workspace] $ cmd /c call C:\DOCUME~1\IDLYSP~1\LOCALS~1\Temp\hudson2823170059005737540.bat C:\hudson\jobs\test\workspace>CALL :COPY "foo\foo.dll" C:\hudson\jobs\test\workspace>COPY "foo\foo.dll" artifacts 1 個のファイルをコピーしました。 C:\hudson\jobs\test\workspace>IF EXIST "C:\hudson\jobs\test\workspace\foo\foo.pdb" COPY "C:\hudson\jobs\test\workspace\foo\foo.pdb" artifacts C:\hudson\jobs\test\workspace>exit 0 Finished: SUCCESS
よって末尾で不要に思えても GOTO :EOF
を欠かしてはならない。
CALL :COPY "foo\foo.dll" CALL :COPY "bar\bar.dll" CALL :COPY "baz\baz.exe" GOTO :EXIT :COPY COPY %1 artifacts IF EXIST "%~dpn1.pdb" COPY "%~dpn1.pdb" artifacts GOTO :EOF :EXIT
また、「Windowsバッチコマンドの実行」が生成するバッチファイルは改行コードが「CRLF」ではなく「LF」になっている。
2バイト文字を使っていると実行時に一部の文字が消失してしまうことになるのでその点も注意が必要。
Warnings Plugin 3.2
http://wiki.hudson-ci.org/display/HUDSON/Warnings+Plugin
Static Analysis Utilitiesを使ったStatic Code Analysis Plug-insの1つ。
プロジェクトの「設定」で「コンパイラの警告の集計」にチェックを入れておくと、ビルドごとにコンソールログ等を解析し、警告(エラー含む)の集計を行う。
コンソールログだけの状態より警告の概観がずっと楽になる。
以下、使っていて気付いたあれこれ。
- マルチ構成プロジェクトでは、一度「設定の再読み込み」かHudsonの再起動を行うと構成各々に推移グラフが表示されるようになる
- コンパイラの警告ビューは遷移がこなれていないので、ブラウザの「戻る」で戻りたい状態に戻れると思わない方がいい
- 診断テキストはフルパスを使用するようにした方が、対応するソースファイルの警告行を表示する上で都合が良い
- デフォルトエンコーディングの指定はビルドログとソースコードで共用となる
Subversion Plugin 1.11
http://wiki.hudson-ci.org/display/HUDSON/Subversion+Plugin
Subversionのリポジトリからファイルをチェックアウトしたり、ビルドに使用したリビジョンに「タグを設定」するプラグイン。
「タグを設定」したビルドは「ビルド履歴」で一望できる。
便利な機能だが、
- 「タグを設定」時に平常時と異なる認証情報を使うことができるが、この認証が成功した試しがない
- 「タグを設定」のコメントに日本語を含めると文字化けする
といった問題がある。
Promoted Builds Simple Plugin 1.11
http://wiki.hudson-ci.org/display/HUDSON/Promoted+Builds+Simple+Plugin
- 成功ビルドを手動で「昇進」させる
- 昇進にはレベルがあり、レベルごとに任意のアイコンを表示できる(ただしこの設定は全プロジェクト共用)
- 昇進させたものを後から降格できる
- マルチ構成プロジェクトではマスタービルドだけでなくサブビルドも昇進できる
- 昇進させたビルドは自動的に「保存」される(サブビルド含め)
- プラグインを有効にしていなかった時期のビルドは昇進の対象外
- Promoted Builds Pluginとは違い、失敗ビルドは昇進させられない
- Promoted Builds Pluginと併用可能
昇進とか考えず、単に「成功ビルドを保存しつつアイコンを付けるプラグイン」と考えると良い。
VCBuild.exeは/Mオプションを使うことでソリューション内の複数のプロジェクトを並行ビルドできる。
C:\temp>VCBuild.exe /M2 test.sln
並行ビルドでは複数のビルドプロセスの診断メッセージが入り交じることになるので、そのメッセージがどのプロセスに属するものかを識別するために、診断メッセージの先頭にはビルドプロセス番号が記される。
1>ビルド 開始: プロジェクト: Hoge、構成: Debug|Win32 2>ビルド 開始: プロジェクト: Fuga、構成: Debug|Win32 1>コンパイルしています... 2>コンパイルしています... 1>hoge.cpp 2>fuga.cpp 1>c:\temp\hoge\hoge.cpp(15) : warning C6386: バッファ オーバーランです: 1>c:\temp\hoge\hoge.cpp(24) : warning C6386: バッファ オーバーランです: 1>c:\temp\hoge\hoge.cpp(34) : warning C6386: バッファ オーバーランです: 1>c:\temp\hoge\hoge.cpp(35) : warning C6386: バッファ オーバーランです: 2>c:\temp\fuga\fuga.cpp(13) : warning C6386: バッファ オーバーランです: 2>c:\temp\fuga\fuga.cpp(36) : warning C6385: 無効なデータです:
しかるにHudson Warnings Plugin 3.2のMSBuildパーサはこのビルドプロセス番号を含む表記に正しく対応しておらず、コンパイラの警告ビューの詳細タブからソースコードを表示させようとしても
Caused by: java.io.FileNotFoundException: 1>c:\temp\hoge\hoge.cpp (No such file or directory)
とエラーになってしまう。
原因はMSBuildパーサがビルドプロセス番号までファイルパスの一部と認識しているからなので、MsBuildParser.javaの正規表現の先頭部分
private static final String MS_BUILD_WARNING_PATTERN = "(?:(?:
にビルドプロセス番号を無視する記述を加えて
private static final String MS_BUILD_WARNING_PATTERN = "(?:\\d+>)?(?:(?:
こうすれば表示できるようになる。