Python git指令
M78-Seven 人气:0Git简介
相信大家都用过SVN,但是SVN会受网络的限制,之前入职一家公司的时候,SVN上有很多东西需要check out下来,极受网络影响不说,有时还会中断,效率会很低。而Git恰恰在有SVN的优点的同时又能完美的解决这个问题。这也是集中式和分布式版本控制系统的区别
CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统。
场景
现如今有点规模的公司都使用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
加载全部内容