思路

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. iOS-NSdata 与 NSString,Byte数组,UIImage 的相互转换

    IOS---NSdata 与 NSString,Byte数组,UIImage 的相互转换 1. NSData 与 NSString NSData-> NSString NSString *aSt ...

  2. Egret入门学习日记 --- 第二十篇(书中 9.1~9.3 节 内容 组件篇)

    第二十篇(书中 9.1~9.3 节 内容 组件篇) 第八章中的内容. 以上都是基本的Js知识,我就不录入了. 直接来看 第9章. 开始 9.1节. 以上内容告诉你,Egret官方舍弃了GUI,使用了E ...

  3. 解决 Ceph v14.2.1 RGW使能压缩时遇到不生效的问

    根据常规方法部署Ceph(14.2.1 or 14.2.2)集群+rgw后,通过命令“radosgw-admin zone placement modify --rgw-zone=default -- ...

  4. linux服务器常用密令

    1. 什么是linux服务器load average? Load是用来度量服务器工作量的大小,即计算机cpu任务执行队列的长度,值越大,表明包括正在运行和待运行的进程数越多.参考资料:http://e ...

  5. electron node.js 在 vscode 设置 调试 Debug

    在当前工程下,添加一个 .vscode/launch.json 文件 { // Use IntelliSense to learn about possible attributes. // Hove ...

  6. POJ2449 【第k短路/A*】

    题目链接:http://poj.org/problem?id=2449 题目大意: 给出n个点,m条有向边,最后一行给出起点到终点的第k短路.求长度. 题解思路: 这是我第一道第k短路题以及A*算法的 ...

  7. 如何保持人际关系zz

    作者:Faaany链接:https://www.zhihu.com/question/35590289/answer/63675007来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  8. Layui 上传图片到磁盘上 + Tomcat 配置虚拟路径

    Layui 上传图片到磁盘上 + Tomcat 配置虚拟路径 Tomcat 配置虚拟路径 找到 eclipse 中 tomcat 下面的 server.xml 文件,在 Host 标签里面添加 < ...

  9. LC 21. Merge Two Sorted Lists

    题目描述 Merge two sorted linked lists and return it as a new list. The new list should be made by splic ...

  10. 编写python高质量python代码的59个有效方法

    第1条:确认自己的python版本 第2条:遵循PEP8的风格 1.空格 对于 占据多行的长表达式来说, 除了首行之外的其余各行都应该在通常的缩进级别上再加4个空格. 每行字符数不应该超过79. 2. ...