svn根据版本号取代码,svn获取指定版本代码

  svn根据版本号取代码,svn获取指定版本代码

  Tsvn附带一个命令行程序,subwcrev.exe。您可以对指定的文件执行一些宏替换,例如,用当前版本号替换WCREV。这是最有用的。

  详见http://tortoisesvn.net/docs/nightly/tortoisesvn _ zh _ cn/tsvn-sub crev-keywords . html。

  以vc6为例,文件的版本信息保存在rc文件中,编译成RES。

  文件,然后将其与其他对象链接。现在的想法是。编辑rc文件并将版本号(如2.2.4.0)更改为2.2.4。$WCREV$。每次

  在链接之前,首先使用subwcrev.exe处理rc文件并替换宏。然后调用rc.exe编译替换的新文件。生成res后,一起

  链接。修改rc文件的versioninfo部分,如下所示:

  # ifdef _自动版本

  文件版本2,2,4,$WCREV$

  产品版本2,2,4,$WCREV$

  #否则

  文件版本2,2,4,0

  产品版本2,2,4,0

  #endif

  …

  # ifdef _自动版本

  值文件版本, 2,2,4,$WCREV$

  值产品版本, 2,2,4,$WCREV$

  #否则

  值文件版本, 2,2,4,0

  值产品版本, 2,2,4,0

  #endif

  事实上,添加了条件编译。默认情况下,它是未定义的

  _AUTOVERSION,使用原始文件版本productversion。如果定义了_AUTOVERSION,

  使用新版本信息。

  在项目属性中找到预链接页面。添加:

  subwcrevsubwcrev.exe。myprogram.rc myprogram.rc_

  rc.exe/l 0804/fo release my program . RES /d _ AUTOVERSION /d _ afx dll

  myprogram.rc_

  第一个命令处理myprogram.rc以生成myprogram.rc_

  第二个命令将myprogram.rc_编译为myprogram.res,注意它的路径。这里是发布版本的默认路径。

  原理是这里生成的res替换原来的res文件。

  按f7,构建。现在版本信息已经刷新。该版本将在每次提交给svn时更新。

  但是我们可以更进一步。写版本信息,编译时间等。进入“关于”对话框。

  其实关键是预链接。用以下内容创建一个文件buildtime.cpp:

  const char * szBuildTime= Build on $ WC now $ ;

  const char * szFullVersion= my program

  2.2.4.$WCREV$$WCMODS?$$WCMIXED?#:$;在OnInitDialog()的“关于”对话框中,添加:

  extern const char * szBuildTime

  extern const char * szFullVersion

  SetDlgItemText(IDC_BUILDTIME,szBuildTime);

  SetDlgItemText(IDC_VERSION,szFullVersion);在预链接中再添加两个项目:

  subwcrevsubwcrev.exe。buildtime.cpp buildtime_。卡片打印处理机(Card Print Processor的缩写)

  cl/c/no logo/forelesabuildtime . obj/MT build time _。卡片打印处理机(Card Print Processor的缩写)

  原理和rc文件一样。先替换,再编译。还要确保生成的

  Build.obj覆盖原始的buildtime.obj

  你完了。

  但是,需要注意的是,每次编辑资源时,都会重新生成. vc6的资源编辑器。

  Rc文件。也就是说会删除我们对rc的修改。目前还没有找到好的解决方案,现在只需要在每次资源编辑后手动添加条件编译部分。建议在项目中输入beta。

  然后添加版本信息。因为这个时候节目的资源一般不会变。另外,这里虽然以vc6为例,但也可以应用于vc2003。

  vc2005等编译环境。

  后记:也可以考虑用程序自动修改。查找文件版本,

  用FILEVERSION 2,2,4,$WCREV$替换后面的版本,再用subwcrev替换,然后用rc编译。这个还不需要定义。

  _AUTOVERSION宏。

svn根据版本号取代码,svn获取指定版本代码