9. 多人协作和版本管理

知识基础

学习目标

  • 用Git进行自动化脚本的版本管理
  • 用Git保证团队报告自动化脚本的版本同步

1. 文档结构调整

在多人协作时,我们要尽保持模板的同步,同时每个人对模板的完善都能集合在一起,而具体工作的内容不应该产生干扰。所以对于变动频繁的文件,我们可以集合起来然后进行同步时忽略处理。
对于第8章的文档结构,会常发生变动的有:

  • report 自动化报告的工作目录
    • main.ipynb 文件的主执行和调试文件,每次执行都会变化
    • data
      • dynamic_data.csv
      • static_data.csv
    • image 存放生成的图片文件
    • report 存放生成的报告
    • configs.py 设置报告的参数,比如作者,日期,数据源等等,每次使用时可以仅仅修改设置便生成不同报告

而这些我们可以打包在一起放入report文件夹,把文档结构调整为:

  • report 自动化报告的工作目录
    • ... 其他文件不动
    • configs.py 在此需要添加设置报告的编号,且报告编号需要唯一
    • main.ipynb 文件的主执行和调试文件,不会执行,仅仅作为母版
    • data
      • static_data.csv
    • reports 存放生成的报告
      • report1 报告1
      • report2 报告2
        • main.ipynb 从上上级文件夹复制,每次执行时都会变化
        • configs.py 基于上上级文件夹中的configs.py文件生成,作为此报告设置的记录
        • data
          • dynamic_data.csv
        • image 存放生成的图片文件

注意:

在文档结构调整后,我们还需要添加辅助用的小脚本,用途为:

  1. 基于configs.pyreports文件夹生成制作报告用的文件夹,并生成如下的目录结构
    • report1 报告1
      • main.ipynb 从上上级文件夹复制,每次执行时都会变化
      • configs.py 基于上上级文件夹中的configs.py文件生成,作为此报告设置的记录
      • data
      • image 存放生成的图片文件
  2. 检查reports文件夹中的目录结构是否正确

检查目录的小例子:

更复杂和完善的请根据报告形式自行编写

import os
import logging
logging.info("当前目录 : {}".format(os.getcwd()))
def check_folder(folder_name):
    if os.path.exists(folder_name):
        logging.info("文件夹已创立:{}".format(folder_name))
    else:
        logging.warning("文件夹未创立:{}".format(folder_name))
        os.makedirs(folder_name)
        logging.info("文件夹创立完毕:{}".format(folder_name))
check_folder("./Example_2")
# 修改当前工作目录
os.chdir("./Example_2")
logging.info("当前目录 : {}".format(os.getcwd()))
import configs
check_folder(configs.report_name)
WARNING:root:文件夹未创立:Report1
# 创建文件夹
for folder in ['data', 'image']:
    check_folder(r"./reports/{}/{}".format(configs.report_name, folder))
# 复制文件
import shutil
for filename in ['main.ipynb', 'configs.py']:  
    if os.path.exists(r"./reports/{}/{}".format(configs.report_name, filename)):
        logging.warning("文件未添加:./reports/{}/{}".format(configs.report_name, filename))
    else:
        shutil.copy(filename, r"./reports/{}/{}".format(configs.report_name, filename))
        logging.info("已复制文件:{}".format(filename))
WARNING:root:文件未添加:./reports/Report1/main.ipynb
WARNING:root:文件未添加:./reports/Report1/configs.py

2. main.ipynb的拆分

这里分为两种情况:

  1. 报告尚未完全自动化,还需要人工干涉
    由于main.ipynb在每次执行时结果会不同,变动时无法保持同步,所以可以对其内容进行拆分,分为方法部分和人工设置部分,以实现方法部分通用,人工设置部分每篇报告都输入不同。
  2. 报告已经完全自动化
    这时候main.ipynb仅仅是作为一个调试工具,把其中的方法保存为main.py,之后直接执行main.py即可

TODO :
具体拆分方法和main.ipynb的组织方式会在之后补充。

3. 设置git添加时的忽略文件

所以对于生成报告所用的公用文件,我们用Git进行版本控制,而每次报告都会不同的设置或者数据,以及生成文件,我们需要让Git忽略掉它们,但是还要保证文件的组成结构没有变化。

比如对于调整前的文档结构,.gitignore的文件内容添加如下

\__pycache__
*.pyc
.ipynb_checkpoints
data/data.csv
image/*
report/*

分别忽略了:

  • python导入模块时的生成文件 \__pycache__、*.pyc
  • ipynb的历史记录文件 .ipynb_checkpoints
  • 每份报告都会

而对于调整后的文档结构,.gitignore的文件内容可改为添加如下

\__pycache__
*.pyc
.ipynb_checkpoints
report/*

进行修改后的结果请参照Example_3


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,175评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,674评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,151评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,597评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,505评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,969评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,455评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,118评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,227评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,213评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,214评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,928评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,512评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,616评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,848评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,228评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,772评论 2 339

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,559评论 18 139
  • 知识基础 代码可参照Example_3 学习目标 可以基于报告内容和形式组织报告自动化脚本的文档结构 在编写不同报...
    数据成长之路阅读 700评论 0 0
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,706评论 6 342
  • 关于抱怨: 我曾也是一个遇事就喜欢抱怨的人,久而久之,抱怨多了,别人也不再搭理你,自己也觉得无趣。慢慢的,你开始明...
    文小辉cool阅读 135评论 0 0
  • 新的iMac安装pod遇到了很多的问题,一直失败,网上查找的各种方法貌似都过时了。经过努力,最终安装成功。 安装要...
    NapoleonY阅读 708评论 0 2