繁体   English   中英

使 Visual Studio 2019 看到 git 存储库存在于源代码中但不在构建目录中(其中包含 sln 文件)

[英]Making Visual Studio 2019 see the git repo present in source but not in the build dir (which has the sln file)

我正在开发一个不喜欢 in-source-tree 构建的现有大型开源项目。 因此,其 cmake 生成的.sln文件被放置在其父目录中没有.git的构建目录中,因为.git位于不相交的源代码树中。

\build
  \proj.sln
\src
  \.git

如何让 Visual Studio 2019 仍能看到这些“侧身”.git 文件? 当然,它可以看到 sln 中提到的(C++ 等)源,但默认情况下,在此设置中,与 git 相关的任何内容都无法在 VS2019 中运行。

在此处输入图像描述

我猜我可能会弄乱GIT_DISCOVERY_ACROSS_FILESYSTEM但我不确定它是否会与 VS 执行 git 的方式一起使用。

(是的, src目录是一个 git 克隆的存储库。我已经在其中进行了提交等,但是是从命令行进行的。)

如果我 F1(寻求帮助)VS 2019 中的“Git 全局设置”......它会进入一个oops 页面,所以这并不是很有帮助。 好的,我找到了git 的实际 VS 文档/帮助 但它并没有真正回答我的问题。

如果不是打开 sln 文件,而是从 VS 打开源目录( src ),那么 VS 会看到 git 存储库正常(当前分支和其他分支)......但我无法构建任何东西,因为 VS 可以在此上下文中查看/查找 sln 文件。 那么,我如何“吃掉我的蛋糕”,即让 VS 看到 git 的东西并允许我构建?

为了进行测试,请尝试从您首先键入的 CMD 启动 Visual Studio:

set GIT_DIR=C:\path\to\.git
cd C:\path\to\proj
.\proj.sln

(假设.sln扩展名与devenv.exe相关联)

通过在构建目录中手动添加一个.git文件,我已经让 VS 看到了 git 存储库(来自 sln):

gitdir: X:/full-path-to-repo/.git/worktrees/src

我忘了提到 src 也是一个工作树,但这可能没有产生差异(他们也有.git 文件)。

与 GIT_DIR 环境变量不同,VS 的 git 实现不会忽略此.git -file 方法来告知存储库在哪里。

但是这也有一个大问题,VS 现在认为它应该将所有构建 object 文件添加到 repo:它认为有大约 4,000 个 A 型更改,-( 所以。要成为一个真正的解决方案,我'还需要能够告诉它不要以某种方式这样做。(这对于一个较小的项目来说可能没问题。但在我的情况下为所有这些 cmake 制作的文件编写过滤器将是一个挑战......)

在此处输入图像描述

在此处输入图像描述


此外,对于另一种方法,如果我在 VS 中安装 cmake 工作负载并再次打开源文件夹(而不是 sln),VS 会立即尝试进行源内构建,并且完全错误,自动生成的设置,例如当这个项目根本不使用它时出于某种原因使用 Ninja。 因此,对于像这样的 cmake 项目来说,VS 似乎还有“数英里的路要走”......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM