如何在一个目录中版本控制多个依赖项目(例如web2py,django)

问题描述 投票:1回答:1

我想得到一些建议,以获得最佳处理和版本控制项目,它们具有以下结构:

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

.
|-- 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 repo安装给定的版本
  • 从父项目复制和粘贴文件:我试图避免手动工作。
git version-control web2py web-frameworks git-subrepo
1个回答
1
投票

只需进行普通的合并,唯一需要记住的是当/如果你合并在子分支上完成的父文件的工作,删除子项目特定的文件和合并结果的更改。只要你记录你实际做的事情,Git就会把事情做好。 git diff --diff-filter=A --name-only @将向您显示在飞行中添加的所有文件,例如由无提交合并引入的任何内容,因此执行无提交合并,修复结果以仅包括您想要的更改,提交,完成。一旦你掌握了需要做什么修正,你可以自动化很多,但它并不总是只删除每个新文件。

© www.soinside.com 2019 - 2024. All rights reserved.