1

SVN には複数のブランチがあり、Hudson CI ジョブを使用してビルドを維持しています。アプリケーションのバージョン番号の一部として SVN リビジョン番号を使用します。問題は、Hudson ジョブがブランチの HEAD をチェックアウトするときに、そのブランチの最後にコミットされたリビジョンではない SVN の HEAD 番号を取得していることです。SVN はグローバルにリビジョン番号を管理していますが、特定のブランチの最後にコミットされた番号をバージョンに反映したいと考えています。

そのリビジョン番号を使用してそのブランチをチェックアウトできるように、Pythonスクリプトを使用してブランチの最後にコミットされたリビジョン番号を取得する方法はありますか? ハドソン自体でそれを行う方法があればもっと良いですか?

ありがとう。

4

2 に答える 2

1

Python を使用してパスの最後にコミットされたリビジョンを取得する:

from subprocess import check_output as run # >=2.7

path = './'
cmd = ['svn', '--username', XXXX, '--password', XXXX, '--non-interactive', 'info', path]
out = run(cmd).splitlines()
out = (i.split(':', 1) for i in out if i)
info = {k:v.strip() for k,v in out}

# you can access  the other svn info fields in a similar manner
rev = info['Last Changed Rev']

with open('.last-svn-commit', 'w') as fh:
    fh.write(rev)

SVN_URLSubversion scm プラグインが必要な情報を提供できるとは思いません (エクスポートSVN_REVISIONのみ)。「最終変更リビジョン」と HEAD リビジョンのチェックアウトに違いはないことに注意してください。どちらもブランチ内の同じコンテンツを参照しています。

ブランチごとに新しいジョブを使用することを検討することをお勧めします。このように、ビルドをトリガーするコミットは「最後に変更されたリビジョン」になります (自分でトリガーしない限り)。これは、トランク ジョブのクローンを作成してリポジトリの URL を変更することで手動で行うことができます。または、jenkins-autojobsなどのツールを使用して自動的に行うこともできます。

于 2013-04-26T21:23:44.430 に答える
0

またはを使用するsvn infoこともできます。svn log -q -l 1 URLsvn ls -v --depth empty URL

于 2013-04-27T16:56:57.023 に答える