読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

ワーキングコピーのリビジョンが欲しい・その2

Subversion

昨日の続き。
とりあえず目的のものはできたので、夜にでも書こうと思ったら寝てしまった。。。


なんだかコメントが盛り上がって置いてけぼり感が(笑)

結果

で、まずは結果。
Python でこんなコードを作った。

import pysvn

client = pysvn.Client()
client.update( '.' )
entry = client.info( '.' )
f = file( './repos.h', 'w' )

f.write( '#ifndef REPO_H_INCLUDE\n' )
f.write( '#define REPO_H_INCLUDE\n' )
f.write( '\n' )

f.write( '#define REPO_REV\t\t'+ str( entry.revision.number ) + '\n' )
f.write( '#define REPO_REV_STR\t\"'+ str( entry.revision.number ) + '\"\n' )

f.write( '\n' )
f.write( '#endif // #ifndef REPO_H_INCLUDE\n' )
f.write( '// EOF\n' )


こいつをワーキングコピーのフォルダに置いて実行すると、こんなヘッダができる(C言語

#ifndef REPO_H_INCLUDE
#define REPO_H_INCLUDE

#define REPO_REV		156
#define REPO_REV_STR	"156"

#endif // #ifndef REPO_H_INCLUDE
// EOF


あとはお好きにどうぞ:)

必要なもの

手順

ソースを見てのとおりだけど、

client = pysvn.Client()
entry = client.info( '.' )
entry.revision.number

で、リビジョン番号が取れた。
SVN やら XML の操作やらってことで、スクリプトかなと思って、ここは流れ的に Python だろと思って、調べたらいいのがあるじゃないですか > pysvn
使用方法はこちらから。


調べても意外とマイナー(なのかな??)のようなのでご紹介も兼ねて。。。
少し使ってみた感触は pysvn はとても簡単。
SVN 操作のお供にドウゾ^^

他の方法

discypus さんから教えていただいた svnversion が一発な上に、特にスクリプトも書かなくてよさそうなので使おうと思ったけど、
"リビジョン番号" という風にダブルクォテーションで括る方法がわからないので今のところ保留。
こういう出力がほしい → 「#define REPO_REV_STR "156"」
コマンドプロンプトでやってるけど、これは動かない・・・

echo ^"> rev.txt
svnversion -n >> rev.txt
echo ^">> rev.txt


他にコメントでもらった方法も一通り試してみます。