Python增強(qiáng)下git那長長的指令詳解
Git簡介
相信大家都用過SVN,但是SVN會(huì)受網(wǎng)絡(luò)的限制,之前入職一家公司的時(shí)候,SVN上有很多東西需要check out下來,極受網(wǎng)絡(luò)影響不說,有時(shí)還會(huì)中斷,效率會(huì)很低。而Git恰恰在有SVN的優(yōu)點(diǎn)的同時(shí)又能完美的解決這個(gè)問題。這也是集中式和分布式版本控制系統(tǒng)的區(qū)別
CVS及SVN都是集中式的版本控制系統(tǒng),而Git是分布式版本控制系統(tǒng)。
場景
現(xiàn)如今有點(diǎn)規(guī)模的公司都使用GitFlow模式進(jìn)行分支管理、雖然插件給我們帶來了非常大的方便,但切換分支、找分支、起分支還是那么的麻煩
需求
在社會(huì)主次國家,每個(gè)生活在底層的勞動(dòng)人民,他們默默的工作著,各種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
每個(gè)碼農(nóng)都同事進(jìn)行著非常多的需求,為了使我們的工作更加的有效率!我們也給自己提幾個(gè)需求!
- 快速的建立
hotfix/feature分支 - 在繁多的本地分支中快速的切換到指定工作分支
- 清楚的描述出每個(gè)分支對(duì)應(yīng)的任務(wù)描述
.......
為此 給原生的git 增強(qiáng)的想法早就出現(xiàn)了,只是一只沒去寫~,今個(gè)兒就用Python來提升下!
開發(fā)中
代碼目錄結(jié)構(gòu)
> 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為入口函數(shù)cmdDict.py文件為配置文件command目錄就存入具體的命令實(shí)現(xiàn)support目錄為一些支持的類
cmdDict.py文件
from command import printCurrentBrStrategy,gtaskHelp,createTaskStrategy,switchBranch,gitCmdStrategy
"""
這里配置下指令對(duì)應(yīng)的命令解釋器
"""
cmd = {
"-b": printCurrentBrStrategy.PrintBr(),
"--help": gtaskHelp.GtaskHelper(),
"-c":createTaskStrategy.CreateTask(),
"--co":switchBranch.SwitchBranch()
}
"""
特殊的配置,解析git的命令
"""
git = {
"git": gitCmdStrategy.GitCmd()
}
主要是配置命令以及對(duì)應(yīng)的解釋腳本文件
9月14號(hào)
- 建立倉庫
- 實(shí)現(xiàn) 查看 所有分支
- 創(chuàng)建分支、
- 快速切換分支
- help信息
創(chuàng)建分支的時(shí)候提示輸入任務(wù)名、描述等。查看所有分支的時(shí)候給分支都打上對(duì)應(yīng)的索引號(hào)、通過切換指定的索引號(hào)來切換分支,同事顯示的時(shí)候也把分支描述顯示出來
Savey:baking-apiserver:% g -b <test> [001] - beta ##beta分支 [002] - dev [003] - develop [004] - effectiveJava [005] - feature/20210712-reviewOpenApi [006] - feature/20210727-tapd-1003358 ##電子發(fā)票 [007] - feature/20210824-tapd-1004652 ##預(yù)售 [008] - feature/20210909-tapd-1005586 ##取消配送 [009] - feature/20210913-tapd-1005758 ##美團(tuán)外賣訂單優(yōu)惠明細(xì)打印 [010] - hotfix/20210915-fix-gainPointForGiftCard [011] - master ##yes [012] - test ##test
9月15號(hào)
兼容原生的git使用
Savey:baking-apiserver:% g version git version 2.24.3 (Apple Git-128)
為當(dāng)前的分支添加描述
是這樣的、當(dāng)初建立分支的時(shí)間忘記寫上描述了,那么就再次快速的給分支打上描述吧、不用輸入git config branch.<branchName>.description了
現(xiàn)在只要這樣
Savey:baking-apiserver:% g --desc test分支 ✅Success!!
9月16號(hào)
由于咋們的指令會(huì)越來越多,之前在cmdDict.py直接配置指定的命令不合適了,今天改了換成以下寫法。使用生成器的特性來提升下小小的性能,因這之前我的老本家php也支持yield。那么今天就索引來修改下吧!順便把cmdDIct.py改了名字Config.py是不是更好一些。
把之前的指令拿到具體的類里去實(shí)現(xiàn)。
def keyCommand(): yield printCurrentBrStrategy.PrintBr() yield gtaskHelp.GtaskHelper() yield createTaskStrategy.CreateTask() yield switchBranch.SwitchBranch() yield editBrDesc.EditBrDesc()
在抽象類AbstractCommandStrategy.py添加方法
"""
存入指令的實(shí)現(xiàn)方法
"""
@abstractmethod
def command(self):
pass
由具體的子類去配置對(duì)應(yīng)的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打印出當(dāng)前所有分支,列表出索引號(hào)和描述")
pass
第天爭取走一小步
代碼在GitHub
到此這篇關(guān)于Python增強(qiáng)下git那長長的指令的文章就介紹到這了,更多相關(guān)Python git指令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)簡易數(shù)碼時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡易數(shù)碼時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
在pycharm中輸入import torch報(bào)錯(cuò)如何解決
這篇文章主要介紹了在pycharm中輸入import torch報(bào)錯(cuò)如何解決問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Python和Excel的完美結(jié)合的常用操作案例匯總
這篇文章主要介紹了Python和Excel的完美結(jié)合的常用操作案例匯總,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
python GUI庫圖形界面開發(fā)之PyQt5圖片顯示控件QPixmap詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5圖片顯示控件QPixmap詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-02-02
Tensorflow實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)擬合線性回歸
這篇文章主要為大家詳細(xì)介紹了Tensorflow實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)擬合線性回歸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
django開發(fā)post接口簡單案例,獲取參數(shù)值的方法
今天小編就為大家分享一篇django開發(fā)post接口簡單案例,獲取參數(shù)值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Python實(shí)現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)中棧的操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)中棧的操作,包括基于Python實(shí)現(xiàn)棧的定義、入棧、出棧、判斷棧空或棧滿等情況,需要的朋友可以參考下2017-12-12
Python?ttkbootstrap?制作賬戶注冊(cè)信息界面的案例代碼
ttkbootstrap 是一個(gè)基于 tkinter 的界面美化庫,使用這個(gè)工具可以開發(fā)出類似前端 bootstrap 風(fēng)格的 tkinter 桌面程序。本文重點(diǎn)給大家介紹Python?ttkbootstrap?制作賬戶注冊(cè)信息界面的案例代碼,感興趣的朋友一起看看吧2022-02-02

