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 submoduleor git subtrees:这不起作用,因为我需要来自父项目的非常严格的目录和文件结构
  • 本地项目中的多个git remotes,即两个git origins,一个给父项目,一个给子项目:反对这个解决方案的是,为了在某个地方部署项目,我不能简单地运行git clone,而是必须手动设置 multiple git remote -v origin
  • 将父项目视为一个库,我通过数据包管理器安装它,然后对子存储库中安装的文件进行版本控制或将它们放入.gitignore:也许不是解决方案,这不是那么糟糕,但我不知道实现这一目标的工具。也许有一个工具可以通过一些命令从 github repo 安装给定版本,比如some_paket_manager install path/to/git/repo==v.0.0.9
  • 从父项目复制和粘贴文件:我试图避免手动工作。
4

1 回答 1

1

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

于 2019-02-15T23:05:47.967 回答