如何管理 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
的替代方案,等等。)
我使用 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
orgit 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
的替代方案,等等。)