场景

现如今有点规模的公司都使用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

Python增强下git那长长的指令的更多相关文章

  1. Ubuntu下git的安装与使用

    Ubuntu下git的安装与使用 Ubuntu下git的安装与使用与Windows下的大致相同,只不过个人感觉在Ubuntu下使用git更方便. 首先,确认你的系统是否已安装git,可以通过git指令 ...

  2. linux下git的安装和使用(转)

    转自:http://www.cnblogs.com/sunada2005/archive/2013/06/06/3121098.html 最近在使用github,感觉不错.在windows下,可使用g ...

  3. 常见压缩格式分析,及 Linux 下的压缩相关指令

    可先浏览加粗部分 一.常见压缩档 *.zip | zip 程式壓縮打包的檔案: (很常见,但是因为不包含文件名编码信息,跨平台可能会乱码) *.rar | winrar 程序压缩打包的档案:(在win ...

  4. [转载]Ubuntu下Git服务器安装与配置

    原文地址:Ubuntu下Git服务器安装与配置作者:F民抄 1. 安装 1.1 安装Git-Core: sudo apt-get install git-core 1.2 安装 Gitosis sud ...

  5. Linux下git安装配置

    一.Linux下git安装配置 2013-07-28 20:32:10|  分类: 默认分类 |  标签:linux  git  server  |举报|字号 订阅     http://abomby ...

  6. Python+Pytest+Allure+Git+Jenkins接口自动化框架

    Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...

  7. 安全防范:nginx下git引发的隐私泄露问题

    安全防范:nginx下git引发的隐私泄露问题 1   安全事件 最近阿里云服务器后台管理系统中收到一条安全提示消息,系统配置信息泄露: http://my.domain.com/.git/confi ...

  8. 聊下git pull --rebase

    有一种场景是经常发生的. 大家都基于develop拉出分支进行并行开发,这里的分支可能是多到数十个.然后彼此在进行自己的逻辑编写,时间可能需要几天或者几周.在这期间你可能需要时不时的需要pull下远程 ...

  9. 聊下 git rebase -i

    在使用git作为源代码管理工具的时候,开发的时经常会面临一个常见的问题,多个commit 需要合并为一个完整的commit提交. 在一个基本的迭代周期里,你会有很多次commit,有跟配置文件相关的, ...

随机推荐

  1. SpringSecurity:简单入门

    SpringSecurity能做什么 SpringSecurity是一个安全框架,使用它可以让我们的系统变得安全一点,它可以对登陆系统的用户进行验证和授权 一个安全的系统需要做的事情很多,比如:防SQ ...

  2. Clipboard Manager on Xfce

    Clipman-plugin sudo apt-get install xfce4-clipman-plugin No config function. No hotkey. Very basic f ...

  3. AI中各种浮点精度概念集合:fp16,fp32,bf16,tf32,fp24,pxr24,ef32

    常见的浮点类型有fp16,fp32,bf16,tf32,fp24,pxr24,ef32,能表达的数据范围主要看exponent,精度主要看fraction. 可以看出表达的数据范围看fp32,bf16 ...

  4. windows中抓取hash小结(上)

    我上篇随笔说到了内网中横向移动的几种姿势,横向移动的前提是获取了具有某些权限的用户的明文密码或hash,正愁不知道写点啥,那就来整理一下这个"前提"-----如何在windows系 ...

  5. 入门Kubernetes-StatefulSets

    前言: 前面文中对通过DaemonSet.存储资源对象,实现了在指定节点中运行一个守护进程. 在真实的业务场景中,部署的服务都是有状态的.且有数据需要持久化的:那么如何实现呢? 那么接下来学习一种更加 ...

  6. Linux搭建Ldap服务器

    一,服务器安装 yum install -y openldap openldap-clients openldap-servers migrationtools 二,配置ldap服务器 2.1配置ld ...

  7. mfc HackerTools远程线程注入

    在一个进程中,调用CreateThread或CreateRemoteThreadEx函数,在另一个进程内创建一个线程(因为不在同一个进程中,所以叫做远程线程).创建的线程一般为Windows API函 ...

  8. DNS地址列表

    DNS测试工具(DNSBench):https://www.grc.com/dns/benchmark.htm DNS列表收集: Google DNS [URL]https://developers. ...

  9. Ajax 与 Struts 1

    Xml配置 <action path="/product/product/validateCurrencyDecimalSupport" type="com.neu ...

  10. elsa core—3.elsa 服务

    在本快速入门中,我们将介绍一个用于设置Elsa Server的最小ASP.NET Core应用程序.我们还将安装一些更常用的activities(活动),如Timer.Cron和sendmail,以能 ...