SVN 通过Shell Bash 获取项目Reversion号码

  接上篇  Jenkins Vue项目自动构建以及构建后续操作

  在项目构建完成后,需要提供当前构建的一个唯一标识的东西,并告诉我们的上线系统,这个唯一标识的东西可以让我们在回退线上版本的时候变得很有用,比如当前上线的是版本1,上线后发现有bug,为了不影响用户的使用,需要临时回退到上一个版本,在上线系统中存在版本0和版本1,这时候我们只需要选择版本0(没bug的版本)重新上线一次就行。

  那么这个唯一标识用什么表示好呢?我们现在没有项目版本之说,比如当前版本V0.5.0,采用项目版本迭代管理是最好的,希望领导以后会用。想来想去,选择采用SVN默认提供的Reversion号码,我们可以知道当前构建版本跟SVN仓库有什么关系。

  问题来了?如何通过Shell脚本获取到当前项目的SVN Reversion号...在比较新的SVN上有命令  svnversion  可以搞定。在项目根目录执行:

$ svn info
svn: E155036: Please see the 'svn upgrade' command
svn: E155036: Working copy '/home/easwy/dev' is too old (format 10, created by Subversion 1.6)

  错误原因:当前工程副本的SVN版本(远程SVN仓库)比本机的SVN低导致的

  解决办法:在当前根目录执行命令  svn upgrade

$ svn upgrade

  然后在当前目录执行

$  svnversion
1161M

  1161:Reversion号  

  M:表示当前工作目录副本有修改

参考资料:

https://stackoverflow.com/questions/2299593/using-bash-to-get-revision-number-from-subversion

http://svnbook.red-bean.com/nightly/en/svn.ref.svnversion.re.html

原文地址:https://www.cnblogs.com/hanshuai/p/10481635.html