首页 > 解决方案 > 带有一个顶级 git 存储库的 VS Code 多根工作区

问题描述

我正在开发一个需要多个 Google Cloud Functions的项目。每个 Cloud Function 都有自己的 virtualenv,因为每个都有自己的 Python 依赖项。所有云函数都是相关的,因此我已将包含云函数代码的每个文件夹添加到单个(多根)VSCode 工作区。我想将所有云功能的代码放在同一个 Git 存储库中,因为它们是相关的并且可以一起工作。因此,我的 .git 文件夹位于我的多根工作区的顶部。我的文件夹结构如下所示:

.
├── .git
├── .gitignore
├── .pylintrc
├── .pytest_cache
├── .vscode
│   └── settings.json
├── func-a
│   ├── .vscode
│   │   ├── launch.json
│   │   └── settings.json
│   ├── main.py
│   ├── requirements.txt
│   ├── schema.json
│   └── service-account.json
├── project.code-workspace
└── func-b
    ├── .pytest_cache
    ├── .vscode
    │   ├── launch.json
    │   └── settings.json
    ├── main.py
    ├── requirements.txt
    ├── service-account.json
    └── test_local.py

我的问题是我无法在 VS Code 中看到(因此无法编辑) .gitignore 文件,因为 VS Code 不允许您将单个文件添加到工作区(仅限文件夹)。相反,如果我尝试将整个折叠(包含 func-a 和 func-b)添加到工作区,那么我会遇到无法为每个 Cloud Function 设置不同的解释器(virtualenvs)的问题,而 VS Code 似乎强迫我对整个工作区使用相同的 Python 解释器。

有没有更好的方法来做我想做的事情?

标签: pythongitvisual-studio-codegoogle-cloud-functionsvirtualenv

解决方案


git sparse-checkout您可以简单地定义两个工作区,每个项目一个,每个项目使用(或更经典.git/info/sparse-checkout的)在自己的 Git 工作树中签出:

这个想法是通过以下方式稀疏地签出回购协议:

  • 和您需要的.gitignore任何其他文件
  • 只有func-x你想要的文件夹

然后,您可以为第一次稀疏结帐定义一个 VSCode 工作区。

对第二个项目重复该过程。


推荐阅读