思路

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 验证工具 验证工具/validate 验证工具 Charles可以通过发送到W3C HTML验证器,W3C CSS验证器和W3C Feed验证器来验证记录的响应. 验证报告在 ...

  2. MMC.EXE应用程序错误 应用程序无法正常启动(0XC0000043)

    一.Windows+R 输入 regedit.exe ①打开注册表: HKEY_LOCAL_MACHINE“"SOFTWARE""Classes""C ...

  3. CMake生成VS2010工程相对路径和绝对路径问题说明

    CMake生成VS2010工程相对路径和绝对路径问题说明 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 主要是使用CMake生成的VS2010的工程,最好不 ...

  4. 综合练习1,划分vlan,单臂路由,DHCP服务及其限制网段、租期,设置根桥,OSPF路由通告综合练习

    实验要求: 1.在LSW1上分别给vlan10和vlan20做DHCP网段分别为192.168.10.0/24.192.168.20.0/24禁用192.168.10.200-253,192.168. ...

  5. [转帖]Oracle报错ORA-26563--当重命名表时碰到物化视图

    Oracle报错ORA-26563--当重命名表时碰到物化视图 https://www.toutiao.com/i6739137279115133447/ 原创 波波说运维 2019-09-26 00 ...

  6. python 脚本定时删除 elk索引

    脚本如下 一.python 脚本如下 #! /usr/bin/python # -*- coding=utf-8 -*- import urllib import urllib.request imp ...

  7. HTML 是什么?

    HTML 指的是超文本标记语言(英语:HyperText Markup Language),是用来描述网页的一种语言. HTML 不是一种编程语言,而是一种标记语言,它有一套标记标签 . HTML 使 ...

  8. Kubernetes对Pod调度指定Node以及Node的Taint 和 Toleration

    由于博客园不支持markdown,推荐以下url阅读: 原创url:https://blog.csdn.net/weixin_42495873/article/details/103364868 ## ...

  9. golang之面向对象编程

    1.Golang语言面向对象编程说明 1)Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言.所以我们说Golang支持面向对象编程特性是比较准确的. ...

  10. 22-MySQL DBA笔记-其他产品的选择

    第22章 其他产品的选择 本章将为读者介绍其他的数据库产品,主要是NoSQL产品的选择.读者在熟悉MySQL之外,也应该了解其他的数据库产品.本章的目的是给读者一个引导,如何选择一些NoSQL产品,而 ...