如何在一个目录中对多个依赖项目进行版本控制(例如 web2py、django)
How to version-control multiple, dependent projects in one directory (e.g. web2py, django)
我想获得一些建议以最好地处理和版本控制项目,这些项目具有以下结构:
从一个父项目(多个项目共享),我需要得到一个给定的目录结构和文件,即
.
|-- modules/
| |-- file_1_parent.py
|
|-- controllers/
|-- file_2_parent.py
从这个父项目派生出几个子依赖项,它们将文件添加到目录中。
情况如下(括号内为files/directories所属项目名称)
.
|-- 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 项目,我想从中派生出几个子项目。
现在的问题是,
- 如何对每个项目进行版本控制?
- 我应该分别为父项目和子项目创建一个存储库吗?
- 我是否应该将父项目视为某种 package/library?
我想到了以下方法:
- 使用
git submodule
或 git 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 仓库安装给定版本
- 从父项目复制和粘贴文件:我正在努力避免这种手动工作。
只是进行普通的合并,您唯一需要记住的是 when/if 您将在子分支上完成的父文件的工作合并回去,以删除子项目特定的文件和合并中的更改结果。 Git 只要您记录下您实际做的事情,事情就会一目了然。 git diff --diff-filter=A --name-only @
将显示所有正在添加的文件,例如无提交合并带来的任何内容,因此进行无提交合并,修复结果以仅包含您想要的更改,提交,完成。一旦掌握了修复需要执行的操作,您就可以自动执行很多操作,但不会总是删除每个新文件。
我想获得一些建议以最好地处理和版本控制项目,这些项目具有以下结构:
从一个父项目(多个项目共享),我需要得到一个给定的目录结构和文件,即
.
|-- modules/
| |-- file_1_parent.py
|
|-- controllers/
|-- file_2_parent.py
从这个父项目派生出几个子依赖项,它们将文件添加到目录中。
情况如下(括号内为files/directories所属项目名称)
.
|-- 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 项目,我想从中派生出几个子项目。
现在的问题是,
- 如何对每个项目进行版本控制?
- 我应该分别为父项目和子项目创建一个存储库吗?
- 我是否应该将父项目视为某种 package/library?
我想到了以下方法:
- 使用
git submodule
或git 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 仓库安装给定版本
- 从父项目复制和粘贴文件:我正在努力避免这种手动工作。
只是进行普通的合并,您唯一需要记住的是 when/if 您将在子分支上完成的父文件的工作合并回去,以删除子项目特定的文件和合并中的更改结果。 Git 只要您记录下您实际做的事情,事情就会一目了然。 git diff --diff-filter=A --name-only @
将显示所有正在添加的文件,例如无提交合并带来的任何内容,因此进行无提交合并,修复结果以仅包含您想要的更改,提交,完成。一旦掌握了修复需要执行的操作,您就可以自动执行很多操作,但不会总是删除每个新文件。