如何在一个公共文件夹树中使用 2 个不同的 git repos(相互忽略彼此的文件)?

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

我需要在同一文件夹树中使用 2 个不同的 git repos。 假设我有以下本地文件树:

工作区

文件夹 1
文件夹A
文件 x1
文件 y1
...任何其他文件...
文件夹B
文件 z1
...任何其他文件...

文件夹 2
文件夹A
文件 x2
文件 y2
...任何其他文件...
文件夹B
文件 z2
...任何其他文件...

............
等等
…………

文件夹 n
文件夹A
文件 xn
文件 yn
...任何其他文件...
文件夹B
文件 zn
...任何其他文件...

我想要在一个git“Repo A”中处理n个“文件夹A”下的所有文件。 “Repo A”将被设置为忽略 n 个“文件夹 B”下的所有文件。 对称地,我希望在另一个 git“Repo B”中处理“文件夹 B”下的文件。 “Repo B”将被设置为忽略 n 个“文件夹 A”下的所有文件。

这里有一些用例的例子:

  • 当我将文件添加到“文件夹 A”时,我希望 git“Repo A”而不是“Repo B”将此文件检测为新文件。
  • 例如,我只想克隆“Repo B”,这样我就只能得到包含 B 文件的文件树。

这里有一些关于这些回购协议中文件性质的精确信息(对 LeGEC 评论的回答):

  • 文件夹1、2、……n专用于我正在开发的系统的n个功能。换句话说,文件夹树是我的功能分解。
  • git Repo A 中的文件是 Matlab 脚本和函数。假设这些脚本是对我正在开发的功能的测试。
  • git Repo B 中的文件是测试的结果,有时带有后处理/分析,允许说明功能是否已正确实现。 事实上,检查两个不一致的 Repo A 和 Repo B 版本是没有意义的。尽管如此,A 和 B 文件的性质确实不同(Repo A 的测试,Repo B 的验证证据),将这些文件保存在单独的 repos 中是有意义的。

我的问题很简单:怎么做? 我使用像 Tortoise 或 SourceTree 这样的 git 客户端,我希望为用户提供更透明的解决方案,因为这个配置将由非 git 专家使用,他们中的大多数人不太熟悉高级 git 功能。

我一直在寻找一些技术解决方案来满足我的需要,但到目前为止没有成功:

  • 我知道在我的本地存储库(在我的示例中为“工作区”)的根目录下不可能有 2 个不同的 .gitignore 文件,但可能可以使用 .git/info/exclude 代替。
  • 我已经读过(这里)可以设置/取消设置变量,例如 GIT_DIR 和 GIT_WORK_TREE,但是当我想处理 Repo A 或 Repo B 时,似乎有必要设置/取消设置这些变量。似乎没有与基本用户的透明和简单的解决方案兼容。

预先感谢您的帮助!

git
1个回答
0
投票

如果文件相关,我建议将它们一起提交。

如果您希望用户不编辑代码而只是使用它,您可以选择一种方法来生成程序的一些发布版本(如果它是 Matlab 脚本:可能是

FolderA
s 的压缩包?)并分发它。

如果您希望您的用户摆弄代码,无论如何将测试与代码放在一起可能是一件好事。

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