經(jīng)常有這樣的事情扒怖,當你在一個項目上工作時,你需要在其中使用另外一個項目圆恤。也許它是一個第三方開發(fā)的庫或者是你獨立開發(fā)和并在多個父項目中使用的聋袋。這個場景下一個常見的問題產(chǎn)生了:你想將兩個項目單獨處理但是又需要在其中一個中使用另外一個队伟。一般來說我只能在父項目中維護一段邏輯來同步這些子項目。在同時維護多個父項目的時候這個過程將變得非常麻煩幽勒。
其中最官方的方法是使用git本身的submodule嗜侮,它本身帶了非常全面的功能。但實際上在工程中啥容,它豐富的功能導致了它反而很可能因為操作失誤而影響父子項目之間的獨立性锈颗。(例如在編輯父項目時修改到子項目的代碼并提交了)
針對這個問題,借鑒了gitsubmodule的形式設計了一個小工具來進行子項目管理咪惠。它只會保留clone
與pull --rebase
击吱,避免影響到倉庫。github鏈接:https://github.com/williamfzc/pysubmodule
使用
根目錄新建pysub.json(名字可自定義)遥昧,配置好你的子模塊
{
"demo1": {
"url": "https://github.com/williamfzc/tornado_demo.git",
"path": ".",
"desc": "JUST USE IT AS EXAMPLE"
},
"demo2": {
"url": "https://github.com/williamfzc/tornado_demo.git",
"path": "abc/def",
"desc": "JUST USE IT AS EXAMPLE"
}
}
在主模塊中你只需要
import pysubmodule
pysubmodule.sync('/Users/williamfzc/abc/pysub.json')
這樣做之后覆醇,在執(zhí)行代碼時,pysubmodule會自動同步配置在json中的子模塊炭臭。
執(zhí)行前目錄結(jié)構(gòu)
.
├── pysub.json
└── run.py
執(zhí)行后目錄結(jié)構(gòu)
.
├── abc
│ └── def
│ └── tornado_demo
│ ├── README.md
│ └── run.py
├── pysub.json
├── run.py
└── tornado_demo
├── README.md
└── run.py
Bug & 討論
歡迎star與fork :)
歡迎PR與issue指教
這里提供一種動態(tài)獲取json絕對路徑的方法
import pysubmodule
import os
root_path = os.path.dirname(__file__)
json_file = os.path.join(root_path, 'pysub.json')
pysubmodule.sync(json_file)