思路

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-NSURLConnection异步发送 HTTP请求

    - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { NSString *new = [searchBar.text stri ...

  2. DLT(Direct Linear Transform)算法

    1.DLT定义            DLT是一个 用于解决包含尺度问题的最小二乘问题 的算法.           DLT解决问题的标准形式为:                            ...

  3. python安装第三方的包

    转载自:http://blog.csdn.net/xyqzki/article/details/38414433 第一种基本安装方法 1 下载第三方包,解压 2 在命令提示符里输入cmd,然后用cd进 ...

  4. 用ExtentReports美化你的测试报告

    前言 在实际的自动化测试工作中经常会用到一些报告生成工具大概分为两类,一类是测试框架自带的报告生成工具如:JUnit+Ant.TestNG:另一类就是专用报告工具如ReportNG等.这些报告要么在U ...

  5. JS的BOM操作语法

    整理了一下JS的BOM操作语法,这里记录一下. <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

  6. poj1584(判断凸包+求点到线段的距离)

    题目链接:https://vjudge.net/problem/POJ-1584 题意:首先要判断凸包,然后判断圆是否在多边形中. 思路: 判断凸包利用叉积,判断圆在多边形首先要判断圆心是否在多边形中 ...

  7. Ctrl+Tab

    很好用的快捷键. 可以在浏览器中自由切换,也可以在编辑器中自由切换.

  8. Linux 时间以及时间间隔的简单处理.

    最近想知道自己的一个部署脚本的耗时, 中午时间看了一下最简单的Linux 时间函数的处理 我这里的处理非常简单, 仅仅是够用而已. 处理过程. 1. 获取当前时间: time1=`date` 或者是 ...

  9. go 相关资源

    网站guide 官方文档 国内镜像 包下载 Golang标准库文档 Release History Getting Start 安装 1.下载binrary包(zip 解压后需要配置gopath, m ...

  10. EasyUI 对话框弹出文件输入框

    目前用的EasyUI的dialog,要实现弹出文件输入框(或者其他输入框和对话框),我的实现方案是,首先写一个close的div,然后里面就是样式和输入框的一些代码和一个确定按钮,然后页面上一个按钮, ...