基于git的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 pysubmodule
import os

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

pysubmodule.sync(json_file)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,023评论 3 119
  • 一枝花_5651阅读 168评论 0 0
  • 假期总是大扫除的好时候,这不,我又成了妈妈的兵,要干活儿了,妈妈的工作是收拾卫生,是我的指挥。我的任务是擦玻璃。 ...
    盛聿洺阅读 262评论 0 1
  • 《高绩效教练》告诉我们如何迅速提高交流质量,有效的帮助他人。从让对方确立目标开始,然后让他分析出当前的情况,并...
    鸿运当头168阅读 232评论 0 0