场景

现如今有点规模的公司都使用GitFlow模式进行分支管理、虽然插件给我们带来了非常大的方便,但切换分支、找分支、起分支还是那么的麻烦

需求

在社会主次国家,每个生活在底层的劳动人民,他们默默的工作着,各种996、多线程的工作着

  beta
dev
develop
effectiveJava
feature/20210712-reviewOpenApi
feature/20210727-tapd-1003358
feature/20210824-tapd-1004652
feature/20210909-tapd-1005586
feature/20210913-tapd-1005758
hotfix/20210915-fix-gainPointForGiftCard
master
* test

每个码农都同事进行着非常多的需求,为了使我们的工作更加的有效率!我们也给自己提几个需求!

  • 快速的建立hotfix/feature分支
  • 在繁多的本地分支中快速的切换到指定工作分支
  • 清楚的描述出每个分支对应的任务描述

.......

为此 给原生的git 增强的想法早就出现了,只是一只没去写~,今个儿就用Python来提升下!

开发中

代码目录结构

> tree
├── README.MD
├── __init__.py
├── cmdDict.py
├── command
│   ├── __init__.py
│   ├── commandStrategy.py
│   ├── createTaskStrategy.py
│   ├── gitCmdStrategy.py
│   ├── gtaskHelp.py
│   ├── printCurrentBrStrategy.py
│   └── switchBranch.py
├── gtaskContext.py
├── main.py
└── support
├── __init__.py
├── breancEntity.py
├── clientCommand.py
└── parseError.py
  • main.py为入口函数
  • cmdDict.py文件为配置文件
  • command目录就存入具体的命令实现
  • support目录为一些支持的类

cmdDict.py文件

from command import printCurrentBrStrategy,gtaskHelp,createTaskStrategy,switchBranch,gitCmdStrategy

"""
这里配置下指令对应的命令解释器
"""
cmd = {
"-b": printCurrentBrStrategy.PrintBr(),
"--help": gtaskHelp.GtaskHelper(),
"-c":createTaskStrategy.CreateTask(),
"--co":switchBranch.SwitchBranch()
} """
特殊的配置,解析git的命令
"""
git = {
"git": gitCmdStrategy.GitCmd()
}

主要是配置命令以及对应的解释脚本文件

9月14号

  • 建立仓库
  • 实现 查看 所有分支
  • 创建分支、
  • 快速切换分支
  • help信息

创建分支的时候提示输入任务名、描述等。查看所有分支的时候给分支都打上对应的索引号、通过切换指定的索引号来切换分支,同事显示的时候也把分支描述显示出来

Savey:baking-apiserver:% g -b                                                                                                                  <test>
[001] - beta ##beta分支
[002] - dev
[003] - develop
[004] - effectiveJava
[005] - feature/20210712-reviewOpenApi
[006] - feature/20210727-tapd-1003358 ##电子发票
[007] - feature/20210824-tapd-1004652 ##预售
[008] - feature/20210909-tapd-1005586 ##取消配送
[009] - feature/20210913-tapd-1005758 ##美团外卖订单优惠明细打印
[010] - hotfix/20210915-fix-gainPointForGiftCard
[011] - master ##yes
[012] - test ##test

9月15号

  • 兼容原生的git使用
Savey:baking-apiserver:% g version
git version 2.24.3 (Apple Git-128)
  • 为当前的分支添加描述

是这样的、当初建立分支的时间忘记写上描述了,那么就再次快速的给分支打上描述吧、不用输入git config branch.<branchName>.description

现在只要这样

Savey:baking-apiserver:% g --desc test分支
Success!!

9月16号

由于咋们的指令会越来越多,之前在cmdDict.py直接配置指定的命令不合适了,今天改了换成以下写法。使用生成器的特性来提升下小小的性能,因这之前我的老本家php也支持yield。那么今天就索引来修改下吧!顺便把cmdDIct.py改了名字Config.py是不是更好一些。

把之前的指令拿到具体的类里去实现。

def keyCommand():
yield printCurrentBrStrategy.PrintBr()
yield gtaskHelp.GtaskHelper()
yield createTaskStrategy.CreateTask()
yield switchBranch.SwitchBranch()
yield editBrDesc.EditBrDesc()

在抽象类AbstractCommandStrategy.py添加方法

    """
存入指令的实现方法
"""
@abstractmethod
def command(self):
pass

由具体的子类去配置对应的command命令。比如

from . import commandStrategy

class PrintBr(commandStrategy.AbstractCommandStrategy):

    """
这里配置 指定的指令
"""
def command(self):
return "-b" def cmd(self, args):
super().printAllBr(args) def useage(self):
print(self.command() + "\t打印出当前所有分支,列表出索引号和描述")
pass

第天争取走一小步

代码在GitHub

最新文章

  1. stunnel-client
  2. javascript照片墙效果
  3. 三、Authentication &amp; sessionid
  4. android:versionCode和android:versionName 用途
  5. 基础数据结构 之 栈(python实现)
  6. [转] Express 4 中的变化
  7. Hbase写数据,存数据,读数据的详细过程
  8. 【沙茶了+筛选保存最大质因数】【HDU2136】Largest prime factor
  9. Data Structure(2)
  10. Android跟蓝牙耳机建立连接有两种方式
  11. MySQL中文乱码修改
  12. Cypher查询语言--Neo4j 综合(四)
  13. 整理+学习《骆昊-Java面试题全集(上)》
  14. 一次UNITY闪退问题的定位心得
  15. iOS7中的多任务 - Background Fetch,Silent Remote Notifications,Background Transfer Service
  16. Vue 框架-10-搭建脚手架 CLI
  17. PowerDesigner16工具学习笔记-创建RQM
  18. HDU 6158 笛卡尔定理 几何
  19. Python股票信息抓取(二)
  20. 【BZOJ】1653: [Usaco2006 Feb]Backward Digit Sums(暴力)

热门文章

  1. 本以为精通Android事件分发机制,没想到被面试官问懵了
  2. 字节跳动已经10万人了?渣本双非Android程序员怎么上车?
  3. 【C++】使用 libass,完成 Direct3D 11 下的字幕渲染
  4. MySQL-08-索引简介
  5. 加载GIF图片优化方案
  6. vim编辑文件时[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
  7. Easylogging++的使用及扩展
  8. BaiduSpider:爬取百度的利器
  9. 更好地使用Atom支持基于Jupyter的Python开发
  10. idea中的springboot的maven项目报错Failed to clean project: Failed to delete D:\new_shunyi\shunyi\target\shunyi\WEB-INF\classes\static\