如何管理 GIT 子模块/树的文件结构?

鲁伯特·鲍威尔

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

周二

我面临的问题是,如果我使用 [git submodulegit subtree],他们坚持将 subs 放在以根目录为父目录的文件夹中。

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

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

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

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

现在返回到主工作树的顶层:

git submodule add <url> src/sub

并且您现在拥有src/sub作为主存储库的子模块,其中包含.gitmodules有关如何从给定的<url>.

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章