背景
最近在看Git,那么看了之后就需要用Git来解决一些工作中遇到的问题,学了不能用在工作中,等于白学。

这次遇到的问题是打包升级的问题,我们公司目前还处于最原始的手工打更新包的状况,每次打包都要找开发要更新的内容,非常非常的麻烦,于是我就想用学习的Git来解决这个问题。

目的
我们的环境有两个,一个是开发环境、另一个是测试环境,那么我希望每次在开发环境都能自动把一个周期内开发改动的内容自动打包出来。我只要down下来用ftp上传到测试环境就行了。

开始
当然,两个环境都需要装上Git。装完之后我需要让两个环境的数据同步。所以要先手工处理一次,然后在两个环境打上相同的Tag。以后,不管开发提交了几次改动,我只要和我上次使用的Tag做比对,就能知道开发做了哪些改动

自动打包
自动打包有两个工作要做,第一步要把改动的文件抓出来,第二步要把他们打包。

抓出改动的文件
我使用的是diff命令,Git中自带了这个功能。

git diff <原来的版本> <现在的版本> --only-name

这条命令就能抓出两个版本中不同的内容。

README.MD
TestTools/mobile/adb.py
TestTools/mobile/adbconfig.py
TestTools/urls.py
TestTools/views.py
static/bootstrap/bootstrap.min.css
static/img/bodyBg.jpg
static/img/bodyBg2.jpg
static/img/bodyBg3.jpg
static/img/test1.jpg
static/img/test2.jpg
static/js/androidbaseinfo.js
static/js/bootstrap.min.js
static/js/bug.js
static/js/commonfunction.js
static/js/jquery-3.0.0.min.js
templates/TestTools/base.html
templates/TestTools/mobileTest/baseinfo.html

比如某次我的工具箱的改动就是这些。

自动打包
在Linux中,打包的命令是tar。

tar -cvf + <文件名> + <打包的文件名>就可以把文件打包出来了,那么,我们第一步的操作,不就是把改动的文件名输出出来么?

通过管道符连接两个句子
Linux中神奇的管道符可谓功能多多。完整的句子如下:

git diff fff3e56 0685a03 --name-only | xargs tar -cvf update.tar

这样当前目录就会多出一个update.tar的压缩包。解压缩出来就是这次改动的更新包了。

最后
我们的环境是Windows的,所以还要研究一下怎么去跑自动化。如果是Linux的,那就非常简单了,写一个shell脚本就能很轻松的实现自动化更新了。

Git结合tar自动打升级包的更多相关文章

  1. [Git]08 如何自动补全命令

     [Git]08如何自动补全命令 如果你用的是 Bash shell,可以试试看 Git 提供的自动完成脚本.下载 Git 的源代码,进入 contrib/completion 目录,会看到一个g ...

  2. ahk实现git图床自动预览以及转换markdown格式

    ahk实现git图床自动预览以及转换markdown格式 软件地址 https://gitee.com/layty/pic/tree/master/app 软件功能: 检测剪切板,如果剪切板有非文本信 ...

  3. Git中crlf自动转换的坑

    新上手一个项目,克隆了代码下来搭环境,一路坑.其中一个sh脚本执行不了,报IOException,java日志除了"找不到文件或文件夹"之外看不出任何信息,手动运行脚本才发现是脚本 ...

  4. jenkins+maven+git+tomcat+salt自动构建

    jenkins 安装步骤 环境: centos7,jdk1.8.0,jenkins2.165,maven3.5.2 一. 安装配置java环境   JDK1.8下载地址:http://www.orac ...

  5. GIt+jenkins代码自动上线

    代码自动上线功能 企业部署代码上线是件比较麻烦的事情,还好我们有jenkins这个持续集成的软件可以帮助我们做很多的事情,现在我们就 来测试用jenkins推送代码上线. 我们这里测试的是一个html ...

  6. 【转载】一种git commit前自动格式化的方式

    查看原文 简介 这个系列为了解决一个问题:自动化的去管理代码风格和格式 前提:Linux,C语言,Clang 如何在每次commit的时候,将代码风格自动格式化后再提交commit,且格式化的内容必须 ...

  7. 使用 Git Hooks 实现自动项目部署

    最近在某服务器上面搭建 git 开发和部署环境,git 开发环境很简单,按照 ProGit 一书的相关知识就可以轻松搞定,实现了类似 Github 的使用 SSH + 私有 Clone 的方式. 关于 ...

  8. git管理和自动部署项目

    当一个项目需要纳入到版本控制的时候,选择的工具还是比较多的,最常见的就是工具有CVS,SVN,GIT等.在平时的开发中视情况而定,从来就没有最好的版本控制工具,只有最适合的工具.在这里我习惯用git来 ...

  9. putty完全使用手册--多窗口---git提交---连接数据库--自动日志显示

    01 putty dev 192.168.3.38 02 cd /home/gongfu/tripb/cranedev02.1 git status git add git commit git pu ...

随机推荐

  1. 将input或textarea设置为disabled的样式问题

    input:disabled{ -webkit-text-fill-color: #333;//是用来做填充色使用的 -webkit-opacity: 1; color: #333; } textar ...

  2. 今天才知道原来我还没弄清楚js中全局变量和局部变量的定义...

    查资料看到这段还不错,来源:原文:https://blog.csdn.net/czh500/article/details/80429133 粘过来记录一下... 1.使用var声明变量,在方法内部是 ...

  3. BZOJ1823 [JSOI2010]满汉全席 2-sat

    原文链接http://www.cnblogs.com/zhouzhendong/p/8125944.html 题目传送门 - BZOJ1823 题意概括 有n道菜,分别可以做成满式和汉式(每道菜只能做 ...

  4. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集之安装Tomcat+Nginx反向代理Tomcat集群】

    1,安装Tomcat:和在windows下安装是一样的. 安装tomcat:上传后解压: tar -zxvf apache-tomcat-7.0.88.tar.gz -z:代表.gz格式的压缩包,-x ...

  5. Spring-1-(简介及HelloWord)

    一:Spring简介 Spring 框架宗旨:不重新发明技术,让原有技术使用起来更加方便. Spring核心功能: 1.AOP:面向切面编程 2.Ioc/Di:控制反转/依赖注入 3.声明式事务 Sp ...

  6. 使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件

    使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件 前期准备: 安装 python:https://www ...

  7. webstrom中如何将npm菜单调出?

    在package.json文件上点击右键>>>点击show npm scripts就可以了.如图:

  8. linux学习笔记 less命令

    空格 或者 ctrl+f  前进一屏     ctrl+b  后退一屏幕 回车 前进一行 /string                  查找含有string字符串的页 ?string        ...

  9. [OC] Delegate的使用

    建立两个页面 A 和 B,我们假设他们的文件名为ControllerA,ControllerB 由A页面,点击跳转到B页面.在B页面中,进行一些操作,并得到一个值,并将这个值传回给A页面,并在A页面上 ...

  10. DataGridView获取或者设置当前单元格的内容

    当前单元格指的是DataGridView焦点所在的单元格,它可以通过DataGridView对象的CurrentCell属性取得.如果当前单元格不存在的时候,返回null. 取得当前单元格的内容: o ...