使用SVN号发布软件版本

约定不等于承诺〃 2021-12-04 08:47 535阅读 0赞

在软件开发过程中,每次对一个软件产品的release,都要处理该软件版本号。有的版本号是人为定的,有些是自动生成的,本文介绍在使用SVN版本管理软件的情况下,利用SVN的一个命令来自动生成对应svn修改版本的版本号。

所以前提是你的开发机需要确认安装了SVN的客户端,并且你本机的代码是SVN上down下来的,也就是代码需要是一个working copy。

官方给出解释:

https://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev.html

列出可用的命令行开关

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1X19qaWE_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1X19qaWE_size_16_color_FFFFFF_t_70 1

可用关键字列表

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1X19qaWE_size_16_color_FFFFFF_t_70 2

关键字例子

  1. // Test file for SubWCRev
  2. char *Revision = "$WCREV$";
  3. char *Revision16 = "$WCREV&0xFF$";
  4. char *Revisionp100 = "$WCREV+100$";
  5. char *Revisionm100 = "$WCREV-100$";
  6. char *Modified = "$WCMODS?Modified:Not modified$";
  7. char *Unversioned = "$WCUNVER?Unversioned items found:no unversioned items$";
  8. char *Date = "$WCDATE$";
  9. char *CustDate = "$WCDATE=%a, %d %B %Y$";
  10. char *DateUTC = "$WCDATEUTC$";
  11. char *CustDateUTC = "$WCDATEUTC=%a, %d %B %Y$";
  12. char *TimeNow = "$WCNOW$";
  13. char *TimeNowUTC = "$WCNOWUTC$";
  14. char *RevRange = "$WCRANGE$";
  15. char *Mixed = "$WCMIXED?Mixed revision WC:Not mixed$";
  16. char *ExtAllFixed = "$WCEXTALLFIXED?All externals fixed:Not all externals fixed$";
  17. char *IsTagged = "$WCISTAGGED?Tagged:Not tagged$";
  18. char *URL = "$WCURL$";
  19. char *isInSVN = "$WCINSVN?versioned:not versioned$";
  20. char *needslck = "$WCNEEDSLOCK?TRUE:FALSE$";
  21. char *islocked = "$WCISLOCKED?locked:not locked$";
  22. char *lockdateutc = "$WCLOCKDATEUTC$";
  23. char *lockdate = "$WCLOCKDATE$";
  24. char *lockcustutc = "$WCLOCKDATEUTC=%a, %d %B %Y$";
  25. char *lockcust = "$WCLOCKDATE=%a, %d %B %Y$";
  26. char *lockown = "$WCLOCKOWNER$";
  27. char *lockcmt = "$WCLOCKCOMMENT$";
  28. #if $WCMODS?1:0$
  29. #error Source is modified
  30. #endif
  31. // End of file

After running SubWCRev.exe path\to\workingcopy testfile.tmpl testfile.txt, the output file testfile.txt would looks like this:

  1. // Test file for SubWCRev
  2. char *Revision = "22837";
  3. char *Revision16 = "53";
  4. char *Revisionp100 = "22937";
  5. char *Revisionm100 = "22737";
  6. char *Modified = "Modified";
  7. char *Unversioned = "no unversioned items";
  8. char *Date = "2012/04/26 18:47:57";
  9. char *CustDate = "Thu, 26 April 2012";
  10. char *DateUTC = "2012/04/26 16:47:57";
  11. char *CustDateUTC = "Thu, 26 April 2012";
  12. char *TimeNow = "2012/04/26 20:51:17";
  13. char *TimeNowUTC = "2012/04/26 18:51:17";
  14. char *RevRange = "22836:22837";
  15. char *Mixed = "Mixed revision WC";
  16. char *ExtAllFixed = "All externals fixed";
  17. char *IsTagged = "Not tagged";
  18. char *URL = "https://svn.code.sf.net/p/tortoisesvn/code/trunk";
  19. char *isInSVN = "versioned";
  20. char *needslck = "FALSE";
  21. char *islocked = "not locked";
  22. char *lockdateutc = "1970/01/01 00:00:00";
  23. char *lockdate = "1970/01/01 01:00:00";
  24. char *lockcustutc = "Thu, 01 January 1970";
  25. char *lockcust = "Thu, 01 January 1970";
  26. char *lockown = "";
  27. char *lockcmt = "";
  28. #if 1
  29. #error Source is modified
  30. #endif
  31. // End of file

我做的列子:

SubWCRev.exe 软件路径:

C:\Program Files\TortoiseSVN\bin\SubWCRev.exe

我的SVN安装目录是:C:\Program Files\TortoiseSVN,

建立处理文件如 SystemCommon.h:

#define SW_VERSION_L_ ((1.0.+$WCREV+1$)

制作Bat文件,在程序编译之前处理:

“C:\Program Files\TortoiseSVN\bin\SubWCRev.exe” “../../../“ “../../document/SystemCommon.h” “../../common/SystemCommon/SystemCommon.h”

发表评论

表情:
评论列表 (有 0 条评论,535人围观)

还没有评论,来说两句吧...

相关阅读