如何管理 GIT sub modules/trees 的文件结构?

How do I manage the file structure of GIT sub modules/trees?

我使用 VSC 在嵌入式系统中进行编程 Python。文件结构对于按设计工作的系统至关重要,我无法更改此结构。在下图中,我试图解释我的问题。在那里您会看到带有一些导入的 main.py 文件。我导入的文件必须是 SRC 文件夹中的 .py 文件。事实上,如果我使用以下导入结构,它们也可以位于子文件夹中:'''import sub_folder_name.libraryName''' 我正在努力解决的是在版本控制中进行管理。我可以使用 GIT 存储库将项目的全部内容保存在正确的文件夹中,但是我真的很想在单独的存储库中管理我的库,例如 GIT 子模块或子树。我面临的问题是,如果我使用这些 GIT 工具,它们会坚持将子目录放在以根目录为父目录的文件夹中。这意味着我的嵌入式系统无法再看到库,因为它们(对它)显示在它视为根的文件夹上方,对我们来说是 SRC 文件夹。所以我正在寻找一种方法来管理与我的主存储库分开的库,同时将工作 .py 文件保留在 SRC 文件夹中。

The problem I am facing is that if I use [git submodule or git subtree] they insist on the subs being in a folder with the root as the parent.

如果我理解正确的话,你的意思是你不能这样做:

mkdir src/sub; cd src/sub; git init

在顶级(主)存储库中创建一个名为 src/sub 的子模块,这样您就可以将 src/sub/foo.py 作为存储库中名为 foo.py 的文件作为子模块。

但这允许的; Git 可以毫无问题地做到这一点。只是:

mkdir src/sub && cd src/sub && git init

然后在子模块中创建一些文件(也许使用终端或其他 shell window 运行 bash 或任何完成所有这些工作的东西):

echo blah blah > README; git add README; git commit -m initial
git branch -m main         # optional, if you like the new GitHub names
git remote add origin <url>
git push origin main       # or git push origin master

现在 return 到你的主要工作树的顶层:

git submodule add <url> src/sub

你现在有 src/sub 作为你的主存储库的子模块,在 .gitmodules 中有关于如何从给定的 <url>.

克隆它的说明。

(你现在必须处理子模块的所有痛苦和痛苦,这可能不是一个好主意,但这部分取决于你。)

(与所有这些 Git 东西分开,作为通用 Python 东西,考虑涉及设置 $PYTHONPATH、使用虚拟环境、根据需要更改 sys.path 的替代方案,等等。)