实习日志(第三周2)

来源:互联网 发布:centos配置本地yum源 编辑:程序博客网 时间:2024/04/30 02:56

任务:编写脚本完成git日志以及svn日志的拉取

解决思路:

git日志拉取
  1. 安装GitBash
  2. 将Pycharm中的git设置关联GitBash.exe
  3. 安装os模块
import osprint os.system('git clone "https://github.com/521xueweihan/git-tips"')#使用os.system(git clone“url”)命令拉取GitHub上的git
import osprint os system('git log>log.txt')#拉取本地git日志并将其保存到log.txt文档中
svn日志拉取
  1. 安装visual svn,部署svn服务器
  2. 安装TortoiseSVN,部署svn客户端
  3. 将Pycharm中的Subversion关联svn.exe
import osos.system('svn log>log.txt')#拉取本地svn日志并将其保存到log.txt文档中

python脚本总的代码

#!/usr/bin/env python# -*- coding:gbk -*-# Need to have git and svn configuration environment can runimport osimport _winregimport clickdef get_desktop():  # 获取桌面路径    key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,                          r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')    return _winreg.QueryValueEx(key, "Desktop")[0]def determine_save_path(save_path):    if not os.path.isdir(save_path):        os.makedirs(save_path)  # 在桌面生成保存提取日志的get_log文件夹,如果已经存在则跳过def fetch_local_git_log(url, save_path):    os.chdir(url)    os.system('git log>{}/local_git_log.txt'.format(save_path))def fetch_server_git_log(url, save_path):    os.chdir(save_path)    os.system('git clone ' + url)  # 先克隆'github'上的git到本地计算机然后查看日志    url_new = eval(url)    git_path = os.path.basename(url_new)    os.chdir(save_path + '/' + git_path)    os.system('git log>{}/server_git_log.txt'.format(save_path))def fetch_local_svn_log(url, save_path):    os.chdir(url)    os.system('svn log>{}/local_svn_log.txt'.format(save_path))def fetch_server_svn_log(url, save_path):    os.chdir(save_path)    os.system('svn checkout ' + url)  # 先检出svn服务器上的svn到本地计算机然后拉取日志    git_path = url.split('/')[-2]    os.chdir(save_path + '/' + git_path)    os.system('svn log>{}/server_svn_log.txt'.format(save_path))@click.command()  # 装饰一个函数,使之成为命令行接口@click.option('--url', prompt='请输入你要拉取的日志地址', type=str,              help='本地日志地址输入格式:url;远程日志地址输入格式:"url" ')def fetch_log(url):    save_path = get_desktop()+'\get_log'    determine_save_path(save_path)    if os.path.exists(url+'\.git'):  # 判断是否是git版本库        fetch_local_git_log(url, save_path)        print 1    elif os.path.exists(url+'\.svn'):  # 判断是否是svn版本库        fetch_local_svn_log(url, save_path)    elif 'github' in url:  # 判断是否是'github'路径        fetch_server_git_log(url, save_path)    elif 'svn' in url:  # 判断是否是svn服务器路径        fetch_server_svn_log(url, save_path)    else:        click.echo("输入指令有误,请重新输入")    # raw_input("提取日志成功,输入ctrl+C退出")if __name__ == '__main__':    fetch_log()

运行效果
git_log1.png
地址输入错误则会报错。
日志保存在桌面生成的get_log文件夹下
git_log2