最近因为要对友盟中的错误分析定位到具体的源代码,由于代码会被修改,所以不好跟踪到是哪一个版本的文件,于是就想获取svn版本号,并输出到AndroidManifest.xml里的versionName里面。琢磨了许多,经过无数次尝试与失败,终于搞定了。
项目是在windows环境下的,由于我安装了git客户端,所以可以在git bash里面执行grep, sed, xargs等等命令,于是写下以下脚本,以自动获取svn版本号。其中第二行与第四行仅是为了输出,可以去掉。
svnv=`svnversion |sed 's/^.*://' |sed 's/[A-Z]*$//'`
echo $svnv
sed -i s/versionName="\(.*build-\)[0-9]*"/versionName="\1$svnv"/ AndroidManifest.xml
cat AndroidManifest.xml |grep versionName
说明几点情况。
1.为什么用svnversion而不是用svn info获取版本号?
说实话,如果是用svn info来获取的话,我昨晚就可以解决了。但是因为我提交文件时,有时是对子目录进行提交的,所以有些子目录的版本可能是项目的base dir目录版本要高,用svn info获取的不是所有文件的最新版本。
那为什么不在svn info前用svn up更新一下?
因为我这里svn服务器是在学校里面的,对外带宽很小,svn up会比较久,对我来说,我只想要快速地获取版本号
2.为什么几行命令写了这么久?
首先因为对sed命令的不熟悉,如何替换文本,使用正则表达式,要不要用引号,用单引号还是双引号,要加什么参数等等各种问题在困扰着我。
其次是对这个命令用得少,及对grep命令的不熟悉。因为用svnversion获取的版本号可能是像"2001"这样子的一个数字(如果你在提交之后有svn up之后),或者是"1998:2001M"(你在1998版本后有提交过但没有在base dir下svn up)。所以一开始想的是如何从这个结果当中提取最后一串数字,甚至想用grep判断是否有":",如果有冒号就获取第二个版本号,否则直接获取整个结果,当然也没成功。
最后是看到网上一条sed命令,用于替换掉前面某些字符串,才想起来可以先替换掉冒号及前面的字符串,再替换掉后面的字母。
3.使用该命令后AndroidManifest.xml变为只读?
我发现在使用该命令后,AndroidManifest.xml会变为只读。至于为什么,我也不明白。希望知道的能留言指点一下。
分享到:
相关推荐
通过以上步骤,你已经成功配置了VS2017以自动获取SVN版本号并在编译时更新到代码中。这将使你的软件版本控制更加系统化,同时方便团队协作和维护。 提供的压缩包文件可能包含了详细的使用说明文档(可能是图文形式...
AnkhSvn的兼容性使得老版本的Visual Studio用户也能享受到现代版本控制的好处。 安装AnkhSvn时,你需要根据你的Visual Studio版本选择合适的msi文件。如果你不确定哪个版本适合,可以先尝试安装较新的版本,如果...
自动获取工程svn提交的版本号,然后修改指定dll,exe的版本信息。最好达到的效果是,每次提交完svn后重新编译代码,会将最后提交的版本号写到version里比如:2.0.0.64,;2.0是大版本号,手动修改资源信息即可,后两...
本文将深入探讨如何获取svn的最新版本号,并介绍一些常用的svn命令。 首先,获取svn的最新版本号通常是为了确保你正在使用的代码是最新的,避免因版本过旧而遇到已解决的问题或错过新功能。有几种方法可以获取: 1...
maven 简单实用的配置,打包,获取svn版本号、仓库等等实用
但是,由于XMLTask主要是用来操作XML,因此我们可能需要先用其他方式获取SVN的版本日志,然后使用XMLTask来处理这些数据。 假设我们已经得到了一个包含版本日志的XML文件,可以使用XMLTask来提取特定的信息。以下是...
Tortoise(小乌龟)SVN 64位下载,v1.9.6.27867版本带汉化包.Tortoise(小乌龟)SVN 64位下载,v1.9.6.27867版本带汉化包Tortoise(小乌龟)SVN 64位下载,v1.9.6.27867版本带汉化包Tortoise(小乌龟)SVN 64位下载,v1.9.6....
自定义的MSBuild任务可以修改这个文件,将从SVN获取的版本号替换到`[assembly: AssemblyVersion]`和`[assembly: AssemblyFileVersion]`属性中。 5. **配置编译事件**:在VS的项目属性中,你可以设置“预编译”和...
本文旨在实现 linux 服务器完成 Android 开发过程中,软件版 本的自劢编译不发布,主要功能如下: A.) 自劢比较 Linux 服务器...M.) 自劢拷贝版本文件夹到 SVN 版本库并实现提交。 N.) Crontab 实现定时运行 shell 脚本
安装过程通常涉及到将更新站点URL添加到Eclipse的“可用软件站点”列表,然后通过Eclipse的“帮助”->“安装新软件”功能来获取并安装插件。 在开发过程中,有效的版本控制至关重要,因为多人协作和代码历史追踪是...
eclipse离线插件svn1.12.x对应TortoiseSvn 1.9.x, 对应的插件版本:subclipse_1.10.13 绿色安装版本,在eclipse安装目录下 创建文件夹eclipse_plugins,将zip文件解压至该目录; 创建文件夹dropins,新增文件site-...
脚本可以使用SVN命令行工具(如`svn diff --xml`)获取版本信息,并通过比较结果来确定版本是否一致。如果版本不同,脚本应返回非零退出状态,以便Zabbix识别到异常。 4. **使用MySQL模板**:Zabbix提供了与MySQL...
import org.tmatesoft.svn.core.SVNClientManager; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.wc2.SvnOperationFactory; public class SvnInfoFetcher { public static void main...
SVN-1.14.1.29085-x64-svn-1.14.1是Subversion的主程序安装文件,其中的版本号1.14.1表明这是该软件的一个稳定版本。这个版本可能包含了性能优化、新功能、修复的bug和其他改进。64位(x64)意味着它是专为64位操作...
SVN采用集中式的管理模式,意味着有一个中央服务器存储所有版本信息,而开发者则在本地进行工作并同步到服务器。 在SVN中,"工作桌面"是指开发人员在本地计算机上工作的副本,可以在这里修改源代码和文档。而"库"则...
标题中的"AnkhSVN-Daily-2.3.10509.1073"是一款名为AnkhSVN的每日构建版本,版本号为2.3.10509.1073。AnkhSVN是一款集成在Microsoft Visual Studio中的Subversion(SVN)客户端工具,它允许开发人员在Visual Studio...
指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间...
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的历史版本。在本场景中,"svn配置文件"指的是用于配置SVN服务器的文件集合,这些文件通常包括服务器的设置、用户权限、仓库...
脚本可能包括`svn update`、`mvn clean package`、`cp`等命令,以实现从SVN获取最新代码、构建WAR包并将其部署到Tomcat服务器。 ### 第三步:部署测试 在完成上述步骤后,可以执行自动化部署脚本来测试整个流程。...
【标题】:“SVN安装+拉取代码.mov.zip”是一个包含有关版本控制系统Subversion(简称SVN)安装和代码获取过程的视频教程压缩文件。这个压缩包中的主要资源是名为“SVN安装+拉取代码.mov”的视频文件,很可能是以...