具有一个顶级 git 存储库的 VS Code 多根工作区

VS Code multi-root workspace with one top level git repo

我正在从事一个需要多个 Google 云 Functions 的项目。每个 Cloud Function 都有自己的 virtualenv,因为每个都有自己的 Python 依赖项。所有 Cloud Functions 都是相关的,因此我将包含 Cloud Functions 代码的每个文件夹添加到单个(多根)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 和相反,VS Code 似乎迫使我对整个工作区使用相同的 Python 解释器。

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

您可以简单地定义两个工作区,一个用于每个项目,每个工作区使用 git sparse-checkout (or the more classic .git/info/sparse-checkout 在自己的 Git 工作树中检出:

想法是通过以下方式稀疏地检查回购:

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

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

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