Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

bzr rebaseはSubversionリポジトリのブランチでも使える

タグ: Bazaar Subversion
  • 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の認証を行う

タグ: Redmine

RedmineとSubversionのパスワードを一元管理する方法を探していたところ、こんなものが用意されていたことを今更ながら知った。

Repositories access control with apache, mod_dav_svn and mod_perl

Redmine.pmを特定の場所に置き、Apacheの設定を行うことで、Redmineの設定でSubversionの要求を認証・認可できるようになる。
公式の例はDebian/Ubuntu。CentOSなら「How To Install Redmine on Centos 5.2 Update」あたりが参考になる。

このモジュールの主な特徴は以下の通り。

  • URL中の「リポジトリ名」と思われる部分を「プロジェクト識別子」と判断してプロジェクトを識別する
  • Redmineのログイン名とパスワードで認証する
  • ユーザーがプロジェクトに対して「リポジトリの閲覧」権限を持っていればリポジトリの読み込みを許可する
  • ユーザーがプロジェクトに対して「コミットの閲覧」権限を持っていればリポジトリへの書き込みを許可する
  • 公開プロジェクトの読み込みは認証なしで許可する
  • AnonymousとNon memberの権限は無視される

注意しなければならない点は

  • リポジトリ名とプロジェクト識別子を一致させなければならない
    • プロジェクトを識別できないと認可が一切通らない
    • プロジェクト設定のリポジトリURLはなんの意味もなさない
  • 公開プロジェクトの読み込みには認証を掛けられない
    • Anonymousに「リポジトリの閲覧」権限がなかろうが関係ない

といったあたり。

HudsonとWindowsバッチコマンドの実行

タグ: Hudson

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バイト文字を使っていると実行時に一部の文字が消失してしまうことになるのでその点も注意が必要。

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。