如何在一个目录(例如,web2py,django)中对多个相关项目进行版本控制

时间:2019-02-15 21:50:27

标签: git version-control web2py web-frameworks git-subrepo

我想获得有关最佳句柄和版本控制项目的一些建议,这些项目应具有以下结构:

从父项目(在许多项目中共享)中,我需要获取给定的目录结构和文件,即

.
|-- modules/
|    |-- file_1_parent.py
|
|-- controllers/
     |-- file_2_parent.py

从该父项目中派生了几个子依赖项,这些子依赖项将文件添加到目录中。

情况可能如下所示(文件/目录所属的项目的名称用括号括起来)

.
|-- modules/                  (parent project)
|    |-- file_1_parent.py     (parent project)
|    |-- file_1_child.py      (child project)
|
|-- controllers/              (parent project)
     |-- file_2_parent.py     (parent project)
     |-- file_2_child.py      (child project)

具体来说,在我的情况下,父项目是web2py / django项目,我想从中导出几个子项目。

现在的问题是

  • 如何对每个项目进行版本控制?
  • 我应该分别为父项目和子项目有一个存储库吗?
  • 我是否应该将父项目视为某种包/库?

我考虑了以下方法:

  • 使用git submodulegit subtrees: 这行不通,因为我需要父项目中非常严格的目录和文件结构
  • 本地项目中有多个git remotes,即两个git origins,一个给父项目,一个给子项目:反对此解决方案的是,为了将项目部署到某个地方,我不能只运行git clone,而必须手动设置多个git remote -v origin
  • 将父项目作为库处理,我通过数据包管理器安装该库,然后对子存储库中已安装的文件进行版本控制或将它们放到.gitignore中:也许不是解决方案,这还不错,但我不知道实现该目标的工具。也许有一个工具可以通过some_paket_manager install path/to/git/repo==v.0.0.9
  • 之类的命令从github仓库中安装给定版本。
  • 从父项目复制并粘贴文件:我正在努力避免这种手动工作。

1 个答案:

答案 0 :(得分:1)

只需进行普通合并,您唯一需要记住的是何时/如果您合并对子分支上完成的父文件的工作,以删除特定于子项目的文件并更改合并结果。只要您记录自己的实际工作,Git就能使事情保持正轨。 git diff --diff-filter=A --name-only @将向您显示所有动态添加的文件,例如由无提交合并带来的任何结果,因此请进行无提交合并,将结果固定为仅包含所需的更改,然后提交并完成。一旦掌握了所需的修补程序后,您就可以自动化很多,但这并不总是删除每个新文件。

相关问题