思路

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. charles 白名单

    本文参考:charles 白名单 charles 白名单 白名单工具,允许您阻止除选定位置之外的所有请求. 注意:如果一个请求与"黑名单"和"白名单"同时匹配成 ...

  2. upw,c#,启用后台播放控件

    uwp音视频app,启用后台播放控件. 启用控件 SystemMediaTransportControls systemMedia_TransportControls = SystemMediaTra ...

  3. (模板)poj1113(graham扫描法求凸包)

    题目链接:https://vjudge.net/problem/POJ-1113 题意:简化下题意即求凸包的周长+2×PI×r. 思路:用graham求凸包,模板是kuangbin的. AC code ...

  4. iOS开发支付篇——内购(IAP)详解

    1 <em>内购所需要的资料整理总结,史上最完整的,哈哈哈哈哈哈</em> 思维导图 重点总结: 1 2 3 4 5 6 7 8 9 10 11 12 13 1.获取内购列表( ...

  5. python学习-49 json模块

    json模块 --------将任何类型都转换为json字符串 方法dumps import json dic={"name":"abc"} data = js ...

  6. ubuntu maven jdk

    https://blog.csdn.net/zrgood123/article/details/82894447 这里是将环境变量配置在etc/profile,即为所有用户配置JDK环境. 使用命令打 ...

  7. django 浅谈索引(转)

    https://blog.csdn.net/qq_37049050/article/details/80749381

  8. hdu 4857 反向拓扑问题

    尤其要注意拓扑的分层问题 不难理解 就是不怎么好想到 拓扑的思路这里就不累述了 #include <iostream> #include <cstdio> #include & ...

  9. docker网络相关

    1.网卡有namespace的概念,不同的俩个namesp之间的网卡不能直接通信 为了俩个namespace的网卡相互通信,可以通过veth pair(一对)来实现.不同容器之间,便是通过veth p ...

  10. C# 关于爬取网站数据遇到csrf-token的分析与解决

    需求 某航空公司物流单信息查询,是一个post请求.通过后台模拟POST HTTP请求发现无法获取页面数据,通过查看航空公司网站后,发现网站使用避免CSRF攻击机制,直接发挥40X错误. 关于CSRF ...