思路

1.首先是要获取项目的差异文件列表,实现方式是通过cmd 执行git 命令。

git pull   拉取最新代码

git log   查看git签入记录  ,使用参数 --pretty=format:" + h,+ an,+ cd,+ s\" 格式化输出格式为   hash,作者,日期,备注

git diff  查看某次签入到现在的差异

git show  查看某次前入的详情

#coding:utf8
import json
import os
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
class Git(object):
branch = ''
def __init__(self):
print('git init')
'''
git 签入记录
'''
def log(self,path,after = None,before = None,no_merges = False):
#isMerges = True
result = []
cmd = []
#'cd %s & git log --merges --pretty=format:" + h,+ an,+ cd,+ s\" --date=local & exit'%('D://git//kdfafa_solution//src//Kdfafa.Cts')
cmd.append("cd %s &"%(path))
cmd.append("git log")
if len(self.branch)>0:
cmd.append("develop")#分支
if(no_merges):
cmd.append("--no-merges")
cmd.append('--pretty=format:+h,+an,+cd,+s'.replace("+","%"))
cmd.append('--date=local')
if(after):
cmd.append('--after="%s"'%(after))
if(before):
cmd.append('--before="%s"'%(before))
#print(cmd)
cmd_str =' '.join(cmd)
print(cmd_str) p = os.popen(cmd_str) #执行 cmd
#txt = p.read()
txt = p.read().decode('utf8') #s.decode('utf8').encode('gb2312').decode('utf8')
#print(txt)
for line in txt.splitlines():
col = line.split(',')
log = {'hash':col[0].strip(),'author':col[1].strip(),'date':col[2].strip(),'remark':col[3].strip()}
result.append(log)
#print(log)
return result '''
git 选中分支与现在文件的差异列表
'''
def diff(self,path,hash, src_path = None):
result = []
cmd = []
#'cd /d {0} & git diff {1} --name-only & exit path
cmd.append("cd %s &"%(path))
cmd.append("git diff %s"%(hash))
cmd.append("--name-only")#分支
cmd_str =' '.join(cmd)
#cmd = cmd.replace("+","%")
print(cmd_str) print('----------------') p = os.popen(cmd_str)
#txt = p.read()
txt = p.read().decode('utf8') #s.decode('utf8').encode('gb2312').decode('utf8').encode('utf8') if src_path:
src_path = src_path.replace('/','\\').replace('//','\\') for line in txt.splitlines():
line = line.replace('/','\\')
#print(line)
if src_path is None or line.find(src_path) > -1:
result.append(line) return result '''
git 查看某个分支的变更
'''
def show(self,path,hash):
#print(msg)
result = [] cmd = []
#'cd /d {0} & git diff {1} --name-only & exit path
cmd.append("cd %s &"%(path))
cmd.append('git show --stat {0}'.format(hash))
cmd_str = ' '.join(cmd)
print(cmd_str)
p = os.popen(cmd_str)
txt = p.read().decode('utf8')
#txt = p.read()
for line in txt.splitlines():
result.append(line) return result def pull(self,path):
#print(msg)
result = [] cmd = []
#'cd /d {0} & git diff {1} --name-only & exit path
cmd.append("cd %s &"%(path))
cmd.append('git pull')
cmd_str = ' '.join(cmd)
print(cmd_str)
p = os.popen(cmd_str)
txt = p.read().decode('utf8')
#txt = p.read()
for line in txt.splitlines():
result.append(line) return result

2.接下来是文件挑拣

过滤规则:1.包含后缀 2.排除文件 3.排除文件夹

3.打包文件

4.上传,支持配置多个上传地址

IIS 自动化发布工具实现-Manager【二】的更多相关文章

  1. IIS 自动化发布工具实现【一】

    [持续更新中啦] 过去一年,有在尝试做.net 这块的开发运维工作.基于现在的开发场景,写了一套差异发布工具.后面用python重写了一套,现学现卖. 主要功能: 差异打包.自动发布.自动回滚 实现架 ...

  2. netcore编程之后面对不习惯的xshell黑屏部署,是时候使用jenkins自动化发布工具了

     在很久之前net还只能在windows上部署的时候,或许很多创业公司的朋友发布项目还都是人肉部署,反正windows都是可视化的界面,拖拖拉拉,开开关关还不 是特别麻烦...现如今你的项目需要在li ...

  3. 前端自动化构建工具webpack (二)之css和插件加载总结

    1.  webpack只识别js文件,其他文件都需要转换成js文件.所有文件都是模块; 2. css解析      css需要css-loader  --->style-loader ----- ...

  4. windows server自动化发布——技术积累与整理

    文章:应用在Windows系统中的自动化部署实践 博主大概讲解了一遍如何摸索实现自动化部署.不过内容不详细,很多具体细节需要自己摸索. 标题:windows server 部署服务(WDS) 地址:h ...

  5. 自动发布工具版本从python2升级成python3后遇到的种种问题(涉及paramiko,Crypto,zipfile等等)

    从在公司实习到正式入职,一直还在被同事使用的是我写的一个自动发布工具.该工具的主要功能是:开发人员给出需要更新的代码包(zip格式),测试人员将该代码包部署到测服,这些代码包和JIRA数据库里的项目信 ...

  6. 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问

    中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

  7. gulp自动化部署:gulp发布express项目(二)

    原文:https://my.oschina.net/songzhu/blog/610337 一.服务器准备 服务器ip地址为:172.16.70.174 1.安装 Node.js 参考:http:// ...

  8. 使用 Gitlab CI/CD 实现自动化发布站点到 IIS

    说明 这里先介绍下两个东西 CI/CD.GitLab Runner,当然在此之前你需要对 git 有所了解,关于 git 这里不做说明,可以自行百度. 首先介绍 CI/CD :随着我们开发方式的转变, ...

  9. 简析GeoServer服务的内部文件组织以及GeoServer自动化服务发布工具的开发思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 通过GeoServer发布的服务,在GeoServer内部有 ...

随机推荐

  1. pytest文档20-pytest-html报告优化(添加Description)

    前言 pytest-html测试报告默认是不展示用例描述Description内容,之前用unittest生成的报告是可以展示用例的描述,也就是test开头的用例下三个引号里面的注释(docstrin ...

  2. 100/200/400GE高速以太网:Autoneg & Link Training 自适应及链路学习相关姿势介绍

    2019-10-31 08:29:22 先写个目录,陆续补齐 PAM4模式下50GE,100GE,200GE,400GE以太网为什么需要AN & LT功能?AN .Autoneg自适应功能介绍 ...

  3. C语言 班级档案管理系统实现

    代码地址:github地址 班级档案管理系统 原题目要求是对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入. 显示.修改.删除.保存等操作的管理. 由于个人需要,我单独将项目改造为 ...

  4. 软件测试开发人员需要掌握的一些基本数据结构算法(php编写)

    一:冒泡排序算法    冒泡排序(Bubble Sort)算法是一种典型的交换排序算法,通过两两数据交换进行排序.如果有n个数,则要进行n-1趟比较,在第1趟比较中要进行n-1次两两比较,在第j趟比较 ...

  5. alertmanager的web页面显示UTC时间的问题

    1.http://192.168.1.144:9093/#/alerts 显示的告警时间是UTC时间 2.脚本的变量 {"status":"success"}[ ...

  6. Java 文件下载工具类

    Java 文件下载工具类 import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static Logger logger = ...

  7. canvas与svg的区别

    1.历史: canvas是html5提供的新元素. 而svg存在的历史要比canvas久远,已经有十几年了.svg并不是html5专有的标签,最初svg是用xml技术(超文本扩展语言,可以自定义标签或 ...

  8. Longest Line of Consecutive One in Matrix

    Given a 01 matrix, find the longest line of consecutive 1 in the matrix. The line could be horizonta ...

  9. JVM —— 类文件结构(下)

    简介 Java虚拟机的指令由一个字节长度的.代表着某种特定操作含义的操作码(opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(operand)所构成 虚拟机中许多指令并不包含操作数.只有 ...

  10. 在Yii2中集成Markdown编辑器

    安装命令: composer require ijackua/yii2-lepture-markdown-editor-widget:dev-master 可能会遇到的问题 如果在下载依赖包的过程中出 ...