背景
最近在看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. PHP加密解密方法,使用openssl加密解密

    /** * des 加密算法 */ function do_mencrypt($input, $key) { if (!function_exists("mcrypt_module_open ...

  2. 扩展中国剩余定理 (exCRT) 的证明与练习

    原文链接https://www.cnblogs.com/zhouzhendong/p/exCRT.html 扩展中国剩余定理 (exCRT) 的证明与练习 问题模型 给定同余方程组 $$\begin{ ...

  3. spring security学习

    https://www.cnblogs.com/leihenqianshang/articles/5313159.html

  4. git branch & checkout fetch 的使用和冲突解决

    git branch & checkout fetch 的使用和冲突解决 branch git branch 查看本地分支 git branch -v    查看本地分支的具体信息(commi ...

  5. java中可以对时间进行加减处理,有时候不用在sql语句中处理

    String ssny = (String) pd.get("ssny");   SimpleDateFormat simpleDateFormat=new SimpleDateF ...

  6. Java 之 JQuery

    1.JQuery a.定义:jQuery 是一个 JavaScript 库 b.作用:极大地简化了 JavaScript 编程 c.引入: <script src="jquery.js ...

  7. ES2018正则表达式更新

    如果你是一个初学者,这篇文章可以拓展你对正则表达式用法的理解,不过建议你先阅读一些正则表达式入门文章,比如经典的<正则表达式30分钟入门教程>.如果你对正则表达式有一定的认识,那么这篇文章 ...

  8. SparkException: Could not find CoarseGrainedScheduler or it has been stopped.

    org.apache.spark.SparkException: Could not find CoarseGrainedScheduler or it has been stopped. at or ...

  9. javascript基础的查缺补漏

    对象转基本类型 let a = { valueOf() { return 0; }, toString() { return '1'; }, [Symbol.toPrimitive]() { retu ...

  10. DRF的视图

    DRF的视图 APIView 我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们两个有什么不同呢~~~ urlpatterns = [    ...