SVNのリビジョンを返す関数の作成
手荒ですが、他に思いつかなかったので。
手荒ですが、他に思いつかなかったので。
SubWCRev.exeをサブプロセスで開き、revisionナンバーをgetします。
windows,TortoiseSVNの場合を公開しますが、
svnコマンドが普通に使えるlinuxなら同じようにできるでしょう。
svnコマンドが普通に使えるlinuxなら同じようにできるでしょう。
import subprocess def getSvnRevision(): path = 'C:/home/pathToTheDir' #get revision cmd = ['C:/Program Files/TortoiseSVN/bin/SubWCRev.exe', path] p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) (stdouterr, stdin) = (p.stdout, p.stdin) #print res revision = 0 while True: line = stdouterr.readline() if not line: break lineSplitted=line.rstrip().split() if lineSplitted[0]=='Last': revision = int(lineSplitted[-1]) break ret = p.wait() return revision
埋め込む
revision = 1
とだけ書いたファイルrevision.pyを用意します。
これをコードから呼び出す。
from revision import *
#これで変数revisionが普通に使えます。
print '(rev: '+ str(revision)+')'
更新する
自分の場合は最終配布はpy2exeで考えてるので、以下のコードをsetup.pyの頭に入れておけば、ビルド時に最新のリビジョンナンバーがコードに埋め込まれるわけです。
自分の場合は最終配布はpy2exeで考えてるので、以下のコードをsetup.pyの頭に入れておけば、ビルド時に最新のリビジョンナンバーがコードに埋め込まれるわけです。
先ほどの関数を呼び出し、最新のリビジョンをintでget,revision.pyに上書きします。
import getSvnRevision rev = getSvnRevision.getSvnRevision() o = open('src/revision.py','w') o.write('revision = ' + str(rev)) o.close()
すごい馬鹿なことをしてるかもですが、このコードは、配布exeには残らないので
まぁ動けばいいです。
まぁ動けばいいです。
このwikiの更新情報RSS