`
貌似掉线
  • 浏览: 260440 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

获取svn版本号并替换到AndroidManifest.xml

阅读更多
最近因为要对友盟中的错误分析定位到具体的源代码,由于代码会被修改,所以不好跟踪到是哪一个版本的文件,于是就想获取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会变为只读。至于为什么,我也不明白。希望知道的能留言指点一下。
0
1
分享到:
评论
5 楼 貌似掉线 2014-01-20  
scorpionfeng 写道
呵呵,兄弟 ,同道中人,我也在写这个,也写了几天

我这边是开发的代码会打标记,manifest用勾子触发

versionname 用于本地推包的时候使用
比你这个多一个读取的功能

我是这样的,想把版本号后面加个svn号。
比如以前的是1.2.3,但我想把svn版本号也加到里面来,变成如1.2.3(build-789),789是svn版本号。这样在通过bug回报,里面的软件版本中就可以看到对的是哪个版本的源文件了。
4 楼 貌似掉线 2014-01-20  
scorpionfeng 写道
呵呵,兄弟 ,同道中人,我也在写这个,也写了几天

我这边是开发的代码会打标记,manifest用勾子触发

versionname 用于本地推包的时候使用
比你这个多一个读取的功能

请教一下,开发的代码会打标记,manifest用勾子触发,这个是指?
比我这个多一个读取的功能是指?
3 楼 貌似掉线 2014-01-20  
scorpionfeng 写道
还有,你出现的只读,跟权限有关系

嗯,,我就是有点奇怪,为什么在Windows下,用这个命令它会修改文件的权限。在linux下也用过,但似乎没有这个问题。
2 楼 scorpionfeng 2013-12-13  
还有,你出现的只读,跟权限有关系
1 楼 scorpionfeng 2013-12-13  
呵呵,兄弟 ,同道中人,我也在写这个,也写了几天

我这边是开发的代码会打标记,manifest用勾子触发

versionname 用于本地推包的时候使用
比你这个多一个读取的功能

相关推荐

    VS2017 自动获取SVN版本控制号

    通过以上步骤,你已经成功配置了VS2017以自动获取SVN版本号并在编译时更新到代码中。这将使你的软件版本控制更加系统化,同时方便团队协作和维护。 提供的压缩包文件可能包含了详细的使用说明文档(可能是图文形式...

    AnkhSvn-2.1.7444.278.msi & AnkhSvn-2.1.8420.8.msi

    AnkhSvn的兼容性使得老版本的Visual Studio用户也能享受到现代版本控制的好处。 安装AnkhSvn时,你需要根据你的Visual Studio版本选择合适的msi文件。如果你不确定哪个版本适合,可以先尝试安装较新的版本,如果...

    自动获取svn版本号,修改指定dll,exe版本信息

    自动获取工程svn提交的版本号,然后修改指定dll,exe的版本信息。最好达到的效果是,每次提交完svn后重新编译代码,会将最后提交的版本号写到version里比如:2.0.0.64,;2.0是大版本号,手动修改资源信息即可,后两...

    获取svn最新版本号示例 以及svn常用命令

    本文将深入探讨如何获取svn的最新版本号,并介绍一些常用的svn命令。 首先,获取svn的最新版本号通常是为了确保你正在使用的代码是最新的,避免因版本过旧而遇到已解决的问题或错过新功能。有几种方法可以获取: 1...

    maven 简单实用的配置,打包,获取svn版本号

    maven 简单实用的配置,打包,获取svn版本号、仓库等等实用

    ant获取SVN版本信息的jar包xmltask以及安装,使用方法

    但是,由于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.27867版本带汉化包Tortoise(小乌龟)SVN 64位下载,v1.9.6....

    VS编译发布根据SVN自动更新版本号

    自定义的MSBuild任务可以修改这个文件,将从SVN获取的版本号替换到`[assembly: AssemblyVersion]`和`[assembly: AssemblyFileVersion]`属性中。 5. **配置编译事件**:在VS的项目属性中,你可以设置“预编译”和...

    Ubuntu自动编译Android版本并提交SVN版本

    本文旨在实现 linux 服务器完成 Android 开发过程中,软件版 本的自劢编译不发布,主要功能如下: A.) 自劢比较 Linux 服务器...M.) 自劢拷贝版本文件夹到 SVN 版本库并实现提交。 N.) Crontab 实现定时运行 shell 脚本

    svn-eclipse-site-1.6.10.zip

    安装过程通常涉及到将更新站点URL添加到Eclipse的“可用软件站点”列表,然后通过Eclipse的“帮助”->“安装新软件”功能来获取并安装插件。 在开发过程中,有效的版本控制至关重要,因为多人协作和代码历史追踪是...

    site-1.12.x.zip,eclipse svn离线插件,支持TortoiseSvn 1.9.x

    eclipse离线插件svn1.12.x对应TortoiseSvn 1.9.x, 对应的插件版本:subclipse_1.10.13 绿色安装版本,在eclipse安装目录下 创建文件夹eclipse_plugins,将zip文件解压至该目录; 创建文件夹dropins,新增文件site-...

    自动化运维之用Zabbix+mysql制作 监控SVN主从版本号是否一致的脚本.zip

    脚本可以使用SVN命令行工具(如`svn diff --xml`)获取版本信息,并通过比较结果来确定版本是否一致。如果版本不同,脚本应返回非零退出状态,以便Zabbix识别到异常。 4. **使用MySQL模板**:Zabbix提供了与MySQL...

    SVNKit获取SVN信息

    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+LanguagePack_1.14.1.29085-x64-zh_CN

    SVN-1.14.1.29085-x64-svn-1.14.1是Subversion的主程序安装文件,其中的版本号1.14.1表明这是该软件的一个稳定版本。这个版本可能包含了性能优化、新功能、修复的bug和其他改进。64位(x64)意味着它是专为64位操作...

    SVN版本控制系统中文版资料.doc

    SVN采用集中式的管理模式,意味着有一个中央服务器存储所有版本信息,而开发者则在本地进行工作并同步到服务器。 在SVN中,"工作桌面"是指开发人员在本地计算机上工作的副本,可以在这里修改源代码和文档。而"库"则...

    AnkhSVN-Daily-2.3.10509.1073

    标题中的"AnkhSVN-Daily-2.3.10509.1073"是一款名为AnkhSVN的每日构建版本,版本号为2.3.10509.1073。AnkhSVN是一款集成在Microsoft Visual Studio中的Subversion(SVN)客户端工具,它允许开发人员在Visual Studio...

    python获取SVN日志

    指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间时间 获取SVN日志指定区间...

    svn配置文件...............

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的历史版本。在本场景中,"svn配置文件"指的是用于配置SVN服务器的文件集合,这些文件通常包括服务器的设置、用户权限、仓库...

    java war包+tomcat+svn+pom.xml实现各开发环境自动化部署

    脚本可能包括`svn update`、`mvn clean package`、`cp`等命令,以实现从SVN获取最新代码、构建WAR包并将其部署到Tomcat服务器。 ### 第三步:部署测试 在完成上述步骤后,可以执行自动化部署脚本来测试整个流程。...

    SVN安装+拉取代码.mov.zip

    【标题】:“SVN安装+拉取代码.mov.zip”是一个包含有关版本控制系统Subversion(简称SVN)安装和代码获取过程的视频教程压缩文件。这个压缩包中的主要资源是名为“SVN安装+拉取代码.mov”的视频文件,很可能是以...

Global site tag (gtag.js) - Google Analytics