为了账号安全,请及时绑定邮箱和手机立即绑定

基于git的python子项目管理方案

标签:
Python

经常有这样的事情,当你在一个项目上工作时,你需要在其中使用另外一个项目。也许它是一个第三方开发的库或者是你独立开发和并在多个父项目中使用的。这个场景下一个常见的问题产生了:你想将两个项目单独处理但是又需要在其中一个中使用另外一个。一般来说我只能在父项目中维护一段逻辑来同步这些子项目。在同时维护多个父项目的时候这个过程将变得非常麻烦。

其中最官方的方法是使用git本身的submodule,它本身带了非常全面的功能。但实际上在工程中,它丰富的功能导致了它反而很可能因为操作失误而影响父子项目之间的独立性。(例如在编辑父项目时修改到子项目的代码并提交了)

针对这个问题,借鉴了gitsubmodule的形式设计了一个小工具来进行子项目管理。它只会保留clonepull --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')

这样做之后,在执行代码时,pysubmodule会自动同步配置在json中的子模块。

执行前目录结构

.
├── pysub.json└── run.py

执行后目录结构

.
├── abc│   └── def│       └── tornado_demo│           ├── README.md│           └── run.py├── pysub.json├── run.py└── tornado_demo
    ├── README.md
    └── run.py

Bug & 讨论

欢迎star与fork :)

欢迎PR与issue指教

这里提供一种动态获取json绝对路径的方法

import pysubmoduleimport os

root_path = os.path.dirname(__file__)
json_file = os.path.join(root_path, 'pysub.json')

pysubmodule.sync(json_file)



作者:williamfzc
链接:https://www.jianshu.com/p/9d7178cc3084


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消