Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
9508266
Use Console.IsOutputRedirected instead of P/Invoke for redirect detec…
tyrielv Jun 4, 2026
b9ce141
Expand blob prefetch noop cache to N entries
tyrielv Jun 4, 2026
0764762
Fix PrefetchVerbTests: clear cache before each test
tyrielv Jun 4, 2026
13d4935
Add pack-index object existence checker strategy for prefetch
tyrielv Jun 4, 2026
da65668
Mount: self-heal stale hook configurations
tyrielv Jun 5, 2026
7fad612
Installer: replace confusing mount prompt with radio dialog
tyrielv Jun 9, 2026
d4988aa
Use git ls-files -s instead of ls-tree for full-tree enumeration
tyrielv Jun 9, 2026
82f77f4
Fix flaky ModifiedPathsTests by replaying the on-disk log
tyrielv Jun 10, 2026
448c12b
Address PR feedback: drop raw-file helper for semantic set check
tyrielv Jun 11, 2026
b8fb34c
Merge pull request #2017 from tyrielv/tyrielv/fix-modified-paths-flake
tyrielv Jun 11, 2026
62ff7fa
Address review feedback: fix tree/commit SHA comparison, filter unmer…
tyrielv Jun 11, 2026
a745e5a
Merge pull request #2012 from tyrielv/tyrielv/fix-stageifmounted-prompt
tyrielv Jun 11, 2026
6c38062
Merge pull request #2013 from tyrielv/tyrielv/ls-files-optimization
tyrielv Jun 11, 2026
509f7d5
Merge pull request #2010 from tyrielv/tyrielv/mount-self-heal-hooks
tyrielv Jun 12, 2026
d2a393a
Use git_odb_exists instead of git_revparse_single for ObjectExists
tyrielv Jun 4, 2026
009aaf9
Fix CA2022 warnings: avoid inexact Stream.Read calls
tyrielv Jun 4, 2026
cf705de
Merge pull request #2006 from tyrielv/tyrielv/odb-exists
tyrielv Jun 12, 2026
438ed24
Merge pull request #2009 from tyrielv/tyrielv/fix-inexact-read-warnings
tyrielv Jun 12, 2026
ab471c4
Download commit pack even when commit exists as loose object
tyrielv Jun 2, 2026
4429f6d
Offload prefetch to mount process for warm auth
tyrielv Jun 9, 2026
55f14e8
Merge pull request #2004 from tyrielv/tyrielv/expand-prefetch-cache
tyrielv Jun 12, 2026
93de0e3
Merge pull request #2001 from tyrielv/tyrielv/fix-console-redirect-de…
tyrielv Jun 12, 2026
ed44c98
Merge pull request #2003 from tyrielv/tyrielv/prefetch-idx-strategy
tyrielv Jun 12, 2026
fa0c3c5
Merge pull request #2002 from tyrielv/tyrielv/prefetch-offload-to-mount
tyrielv Jun 12, 2026
2d17f9d
Fix bad merge: prefetch cache args and noop-cache update
tyrielv Jun 12, 2026
8d59a64
Merge pull request #2023 from tyrielv/tyrielv/fix-prefetch-merge
tyrielv Jun 15, 2026
ac9c132
Merge pull request #1995 from tyrielv/tyrielv/skip-clone-commit-download
tyrielv Jun 15, 2026
7c6612a
Show mount progress phases in CLI during gvfs mount
tyrielv Jun 4, 2026
632186a
Merge pull request #2005 from tyrielv/tyrielv/mount-progress
tyrielv Jun 15, 2026
57bb761
Mount: prevent process crash on unhandled request handler exceptions
tyrielv Jun 12, 2026
ab1ab73
FunctionalTests: fail fast when shared enlistment mount is dead
tyrielv Jun 12, 2026
c379b4e
Merge pull request #2021 from tyrielv/tyrielv/fix-flaky-rebase-pipe
tyrielv Jun 15, 2026
19efa87
ci: drop Debug configuration from build and test matrices
tyrielv Jun 15, 2026
b395f5e
Remove ExtraCoverage category and fix atrophied functional tests
tyrielv Jun 3, 2026
340a5ca
Address PR feedback: scope mount kill and verify error in log
tyrielv Jun 12, 2026
33d846a
Fix repair of corrupt BlobSizes.sql and mount tolerance
tyrielv Jun 3, 2026
151e3c4
Fix log search and mark Scripts-dependent FastFetch tests
tyrielv Jun 15, 2026
2934dd3
Merge pull request #1997 from tyrielv/tyrielv/remove-extra-coverage
tyrielv Jun 16, 2026
7f1dab2
Merge pull request #2025 from tyrielv/tyrielv/drop-debug-ci
tyrielv Jun 17, 2026
98d63f2
Set WorkingDirectory for background mount process
tyrielv Jun 17, 2026
59a66c3
Merge pull request #2029 from tyrielv/tyrielv/fix-cwd-handle
tyrielv Jun 17, 2026
e1854be
Fix heartbeat telemetry serialization of nested objects
tyrielv Jun 18, 2026
ede1b84
PlaceholderTable/SparseTable: add transient SQLite error resilience v…
tyrielv Jun 18, 2026
39f05a5
Add architecture field to telemetry events
tyrielv Jun 15, 2026
8ee6e37
Add ARM64 native build support
tyrielv Jun 15, 2026
b252981
Add ARM64 to ADO release pipeline
tyrielv Jun 16, 2026
3ec9b83
Merge pull request #2027 from microsoft/tyrielv/arm64-prototype
tyrielv Jun 22, 2026
43ef3e2
Mount: don't block startup on auth when cache server is configured
tyrielv Jun 22, 2026
470c04e
Bump actions/checkout from 6 to 7
dependabot[bot] Jun 23, 2026
ff82082
Merge pull request #2035 from microsoft/dependabot/github_actions/act…
derrickstolee Jun 23, 2026
28135e4
Merge pull request #2034 from tyrielv/tyrielv/mount-timeout
tyrielv Jun 29, 2026
91f8897
Add telemetry events to mount initialization phases
tyrielv Jun 19, 2026
45a4338
Merge pull request #2032 from tyrielv/tyrielv/fix-eventmetadata-seria…
tyrielv Jun 29, 2026
bd645eb
Address PR feedback: cap CommandTimeout, fix CallerMemberName, drop C…
tyrielv Jun 30, 2026
7fcf302
Merge pull request #2033 from tyrielv/tyrielv/mount-phase-telemetry
tyrielv Jun 30, 2026
249ca3a
Merge pull request #2031 from tyrielv/tyrielv/fix-placeholder-io-tole…
tyrielv Jun 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
472 changes: 261 additions & 211 deletions .azure-pipelines/release.yml

Large diffs are not rendered by default.

24 changes: 21 additions & 3 deletions .azure-pipelines/scripts/install-vs-cpp-workload.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,13 @@ $cppWorkloads = @(
'Microsoft.VisualStudio.Workload.VCTools'
)

# ARM64 cross-compilation requires an additional component that is not
# included in the default C++ workload install. We ensure it's present
# so that vcpkg and MSBuild can target arm64-windows triplets even when
# running on an x64 host (or on an ARM64 host that only has the default
# ARM64 → ARM64 native tools and not the broader "all targets" set).
$arm64Component = 'Microsoft.VisualStudio.Component.VC.Tools.ARM64'

function Get-VsWhere {
if (Test-Path $script:vswherePath) {
return $script:vswherePath
Expand Down Expand Up @@ -106,11 +113,20 @@ function Invoke-VsSetup {
# --- Locate or bootstrap vswhere ---
$vswhereExe = Get-VsWhere

# --- Quick exit if a VS install with the C++ workload is already present ---
# --- Quick exit if a VS install with the C++ workload AND arm64 tools is already present ---
# Check requires a C++ workload (either one) AND the ARM64 component.
# vswhere -requires with -requiresAny means "any one of the listed components".
# To enforce AND, we run vswhere with the ARM64 component as a hard requirement
# and the C++ workloads as a separate check.
$existing = Find-VsInstall -VswhereExe $vswhereExe -RequiredWorkloads $cppWorkloads
if ($existing) {
Write-Host "VS install with C++ workload already present: $($existing.installationPath) ($($existing.productId))"
exit 0
# Also check for ARM64 component
$arm64Present = Find-VsInstall -VswhereExe $vswhereExe -RequiredWorkloads @($arm64Component)
if ($arm64Present) {
Write-Host "VS install with C++ workload + ARM64 tools already present: $($existing.installationPath) ($($existing.productId))"
exit 0
}
Write-Host "VS install has C++ workload but missing ARM64 tools; will add..."
}

# --- Find any VS install (regardless of workloads) ---
Expand All @@ -126,6 +142,7 @@ if (-not $install) {

Invoke-VsSetup -ExePath $bootstrapper -Description 'VS Build Tools install' -ArgumentList @(
'--add', 'Microsoft.VisualStudio.Workload.VCTools',
'--add', $arm64Component,
'--includeRecommended',
'--quiet',
'--norestart',
Expand All @@ -151,6 +168,7 @@ if (-not $install) {
'modify',
'--installPath', $install.installationPath,
'--add', $workload,
'--add', $arm64Component,
'--includeRecommended',
'--quiet',
'--norestart',
Expand Down
28 changes: 11 additions & 17 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ jobs:

- name: Checkout source
if: steps.check.outputs.result == ''
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Validate Microsoft Git version
if: steps.check.outputs.result == ''
Expand Down Expand Up @@ -255,13 +255,14 @@ jobs:
path: MicrosoftGit

build:
runs-on: windows-2025
runs-on: ${{ matrix.architecture == 'arm64' && 'windows-11-arm' || 'windows-2025' }}
name: Build and Unit Test
needs: validate

strategy:
matrix:
configuration: [ Debug, Release ]
configuration: [ Release ]
architecture: [ x64, arm64 ]
fail-fast: false

steps:
Expand All @@ -276,7 +277,7 @@ jobs:

- name: Checkout source
if: steps.skip.outputs.result != 'true'
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
path: src

Expand All @@ -290,47 +291,40 @@ jobs:
if: steps.skip.outputs.result != 'true'
uses: microsoft/setup-msbuild@v3.0.0

- name: Install vcpkg native dependencies
if: steps.skip.outputs.result != 'true'
shell: cmd
run: |
"%VCPKG_INSTALLATION_ROOT%\vcpkg.exe" install --triplet x64-windows-static-aot --x-install-root=out\vcpkg_installed\static --x-manifest-root=src || exit /b 1
"%VCPKG_INSTALLATION_ROOT%\vcpkg.exe" install --triplet x64-windows-dynamic --x-install-root=out\vcpkg_installed\dynamic --x-manifest-root=src || exit /b 1

- name: Build VFS for Git
if: steps.skip.outputs.result != 'true'
shell: cmd
run: src\scripts\Build.bat ${{ matrix.configuration }}
run: src\scripts\Build.bat ${{ matrix.configuration }} 0.2.173.2 minimal ${{ matrix.architecture }}

- name: Run unit tests
if: steps.skip.outputs.result != 'true'
shell: cmd
run: src\scripts\RunUnitTests.bat ${{ matrix.configuration }}
run: src\scripts\RunUnitTests.bat ${{ matrix.configuration }} ${{ matrix.architecture }}

- name: Create build artifacts
if: steps.skip.outputs.result != 'true'
shell: cmd
run: src\scripts\CreateBuildArtifacts.bat ${{ matrix.configuration }} artifacts
run: src\scripts\CreateBuildArtifacts.bat ${{ matrix.configuration }} artifacts ${{ matrix.architecture }}

- name: Upload functional tests drop
if: steps.skip.outputs.result != 'true'
uses: actions/upload-artifact@v7
with:
name: FunctionalTests_${{ matrix.configuration }}
name: FunctionalTests_${{ matrix.configuration }}_${{ matrix.architecture }}
path: artifacts\GVFS.FunctionalTests

- name: Upload FastFetch drop
if: steps.skip.outputs.result != 'true'
uses: actions/upload-artifact@v7
with:
name: FastFetch_${{ matrix.configuration }}
name: FastFetch_${{ matrix.configuration }}_${{ matrix.architecture }}
path: artifacts\FastFetch

- name: Upload GVFS installer
if: steps.skip.outputs.result != 'true'
uses: actions/upload-artifact@v7
with:
name: GVFS_${{ matrix.configuration }}
name: GVFS_${{ matrix.configuration }}_${{ matrix.architecture }}
path: artifacts\GVFS.Installers

functional_tests:
Expand Down
27 changes: 19 additions & 8 deletions .github/workflows/functional-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ jobs:

strategy:
matrix:
configuration: [ Debug, Release ]
architecture: [ x86_64, arm64 ]
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 10 parallel jobs to speed up the tests
configuration: [ Release ]
architecture: [ x64, arm64 ]
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] # 12 parallel jobs to speed up the tests
fail-fast: false # most failures are flaky tests, no need to stop the other jobs from succeeding

steps:
Expand Down Expand Up @@ -104,7 +104,7 @@ jobs:
continue-on-error: true
uses: actions/download-artifact@v8
with:
name: GVFS_${{ matrix.configuration }}
name: GVFS_${{ matrix.configuration }}_${{ matrix.architecture }}
path: gvfs
repository: ${{ inputs.vfs_repository || github.repository }}
run-id: ${{ inputs.vfs_run_id || github.run_id }}
Expand All @@ -114,7 +114,7 @@ jobs:
if: steps.skip.outputs.result != 'true' && steps.download-gvfs.outcome == 'failure'
uses: actions/download-artifact@v8
with:
name: GVFS_${{ matrix.configuration }}
name: GVFS_${{ matrix.configuration }}_${{ matrix.architecture }}
path: gvfs
repository: ${{ inputs.vfs_repository || github.repository }}
run-id: ${{ inputs.vfs_run_id || github.run_id }}
Expand All @@ -126,7 +126,7 @@ jobs:
continue-on-error: true
uses: actions/download-artifact@v8
with:
name: FunctionalTests_${{ matrix.configuration }}
name: FunctionalTests_${{ matrix.configuration }}_${{ matrix.architecture }}
path: ft
repository: ${{ inputs.vfs_repository || github.repository }}
run-id: ${{ inputs.vfs_run_id || github.run_id }}
Expand All @@ -136,7 +136,18 @@ jobs:
if: steps.skip.outputs.result != 'true' && steps.download-ft.outcome == 'failure'
uses: actions/download-artifact@v8
with:
name: FunctionalTests_${{ matrix.configuration }}
name: FunctionalTests_${{ matrix.configuration }}_${{ matrix.architecture }}
path: ft
repository: ${{ inputs.vfs_repository || github.repository }}
run-id: ${{ inputs.vfs_run_id || github.run_id }}
github-token: ${{ secrets.vfs_token || github.token }}

- name: Download FastFetch drop
if: steps.skip.outputs.result != 'true'
continue-on-error: true
uses: actions/download-artifact@v8
with:
name: FastFetch_${{ matrix.configuration }}_${{ matrix.architecture }}
path: ft
repository: ${{ inputs.vfs_repository || github.repository }}
run-id: ${{ inputs.vfs_run_id || github.run_id }}
Expand Down Expand Up @@ -193,7 +204,7 @@ jobs:
run: |
SET PATH=C:\Program Files\VFS for Git;%PATH%
SET GIT_TRACE2_PERF=C:\temp\git-trace2.log
ft\GVFS.FunctionalTests.exe /result:TestResult.xml --ci --slice=${{ matrix.nr }},10
ft\GVFS.FunctionalTests.exe /result:TestResult.xml --ci --slice=${{ matrix.nr }},12

- name: Upload functional test results
if: always() && steps.skip.outputs.result != 'true'
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/upgrade-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:

strategy:
matrix:
configuration: [ Debug ]
configuration: [ Release ]
scenario:
- staging-upgrade
- clean-upgrade
Expand Down Expand Up @@ -84,14 +84,14 @@ jobs:
continue-on-error: true
uses: actions/download-artifact@v8
with:
name: GVFS_${{ matrix.configuration }}
name: GVFS_${{ matrix.configuration }}_x64
path: gvfs-new

- name: Download current GVFS installer (retry)
if: steps.skip.outputs.result != 'true' && steps.download-gvfs.outcome == 'failure'
uses: actions/download-artifact@v8
with:
name: GVFS_${{ matrix.configuration }}
name: GVFS_${{ matrix.configuration }}_x64
path: gvfs-new

# -- Setup --
Expand Down
5 changes: 2 additions & 3 deletions AuthoringTests.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,9 @@ The functional tests are built on NUnit 3, which is available as a set of NuGet

#### Selecting Which Tests are Run

By default, the functional tests run a subset of tests as a quick smoke test for developers. There are three mutually exclusive arguments that can be passed to the functional tests to change this behavior:
By default, the functional tests run all tests. There are two mutually exclusive arguments that can be passed to the functional tests to change this behavior:

- `--full-suite`: Run all configurations of all functional tests
- `--extra-only`: Run only those tests marked as "ExtraCoverage" (i.e. the tests that are not run by default)
- `--full-suite`: Run all configurations of all functional tests (tests all `ValidateWorkingTreeMode` values and all `FileSystemRunner` types)
- `--windows-only`: Run only the tests marked as being Windows specific

**NOTE** `Scripts\RunFunctionalTests.bat` already uses some of these arguments. If you run the tests using `RunFunctionalTests.bat` consider locally modifying the script rather than passing these flags as arguments to the script.
Expand Down
28 changes: 21 additions & 7 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,28 @@
with direct downloads from the public internet.
-->
<UseTerrapinAssetCache Condition="'$(UseTerrapinAssetCache)' == ''">false</UseTerrapinAssetCache>

<!--
Target CPU architecture. Drives RID selection, vcpkg triplets, and the
native Platform mapping below. Default x64.
Valid values: x64, arm64 (lowercase; matches RID and vcpkg conventions).
-->
<VfsArch Condition="'$(VfsArch)' == ''">x64</VfsArch>

<!--
Native (vcxproj) Platform name corresponding to $(VfsArch).
vcxproj uses x64/ARM64 (mixed case); RID/vcpkg use x64/arm64 (lowercase).
-->
<VfsNativePlatform Condition="'$(VfsArch)' == 'arm64'">ARM64</VfsNativePlatform>
<VfsNativePlatform Condition="'$(VfsNativePlatform)' == ''">x64</VfsNativePlatform>
</PropertyGroup>

<!-- Managed project properties -->
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
<TargetFramework>net10.0-windows10.0.17763.0</TargetFramework>
<LangVersion>latest</LangVersion>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<PlatformTarget>x64</PlatformTarget>
<RuntimeIdentifier>win-$(VfsArch)</RuntimeIdentifier>
<PlatformTarget>$(VfsNativePlatform)</PlatformTarget>
<SelfContained>true</SelfContained>
<PublishAot>true</PublishAot>
<OptimizationPreference>Speed</OptimizationPreference>
Expand Down Expand Up @@ -74,7 +88,7 @@
See THIRD-PARTY-NOTICES.md for license details on these native libraries.
-->
<PropertyGroup Condition="'$(PublishAot)' == 'true'">
<VcpkgInstalledDir>$(RepoOutPath)vcpkg_installed\static\x64-windows-static-aot\</VcpkgInstalledDir>
<VcpkgInstalledDir>$(RepoOutPath)vcpkg_installed\static\$(VfsArch)-windows-static-aot\</VcpkgInstalledDir>
</PropertyGroup>

<!-- Set libgit2 library name unconditionally — all builds use vcpkg-sourced libgit2 -->
Expand Down Expand Up @@ -103,17 +117,17 @@
Copy from the vcpkg dynamic build output.
-->
<ItemGroup Condition="'$(PublishAot)' != 'true' and '$(MSBuildProjectExtension)' == '.csproj' and '$(IncludeBuildOutput)' != 'false'">
<Content Include="$(RepoOutPath)vcpkg_installed\dynamic\x64-windows-dynamic\bin\git2.dll">
<Content Include="$(RepoOutPath)vcpkg_installed\dynamic\$(VfsArch)-windows-dynamic\bin\git2.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<Link>git2.dll</Link>
</Content>
<Content Include="$(RepoOutPath)vcpkg_installed\dynamic\x64-windows-dynamic\bin\pcre.dll">
<Content Include="$(RepoOutPath)vcpkg_installed\dynamic\$(VfsArch)-windows-dynamic\bin\pcre.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<Link>pcre.dll</Link>
</Content>
<Content Include="$(RepoOutPath)vcpkg_installed\dynamic\x64-windows-dynamic\bin\z.dll">
<Content Include="$(RepoOutPath)vcpkg_installed\dynamic\$(VfsArch)-windows-dynamic\bin\z.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<Link>z.dll</Link>
Expand All @@ -122,7 +136,7 @@

<!-- Native project properties -->
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.vcxproj'">
<Platform>x64</Platform>
<Platform>$(VfsNativePlatform)</Platform>
<OutDir>$(ProjectOutPath)bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(ProjectOutPath)intermediate\$(Platform)\$(Configuration)\</IntDir>
<GeneratedIncludePath>$(IntDir)include\</GeneratedIncludePath>
Expand Down
8 changes: 4 additions & 4 deletions Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -96,14 +96,14 @@
<Error Condition="'$(UseTerrapinAssetCache)' == 'true' and ('$(TerrapinRetrievalToolPath)' == '' or !Exists('$(TerrapinRetrievalToolPath)'))"
Text="UseTerrapinAssetCache=true but TerrapinRetrievalToolPath is empty or does not exist. The release pipeline must pre-download the Microsoft.Build.Vcpkg NuGet package and pass -p:TerrapinRetrievalToolPath=&lt;path-to-TerrapinRetrievalTool.exe&gt;." />

<Exec Command="&quot;$(_VcpkgExe)&quot; install --x-wait-for-lock --triplet x64-windows-static-aot --x-install-root=&quot;$(RepoOutPath)vcpkg_installed\static&quot; $(_VcpkgManifestArg) $(_VcpkgAssetSources)"
<Exec Command="&quot;$(_VcpkgExe)&quot; install --x-wait-for-lock --triplet $(VfsArch)-windows-static-aot --x-install-root=&quot;$(RepoOutPath)vcpkg_installed\static&quot; $(_VcpkgManifestArg) $(_VcpkgAssetSources)"
StandardOutputImportance="High" StandardErrorImportance="High" />
<Exec Command="&quot;$(_VcpkgExe)&quot; install --x-wait-for-lock --triplet x64-windows-dynamic --x-install-root=&quot;$(RepoOutPath)vcpkg_installed\dynamic&quot; $(_VcpkgManifestArg) $(_VcpkgAssetSources)"
<Exec Command="&quot;$(_VcpkgExe)&quot; install --x-wait-for-lock --triplet $(VfsArch)-windows-dynamic --x-install-root=&quot;$(RepoOutPath)vcpkg_installed\dynamic&quot; $(_VcpkgManifestArg) $(_VcpkgAssetSources)"
StandardOutputImportance="High" StandardErrorImportance="High" />

<Error Condition="!Exists('$(RepoOutPath)vcpkg_installed\dynamic\x64-windows-dynamic\bin\git2.dll')"
<Error Condition="!Exists('$(RepoOutPath)vcpkg_installed\dynamic\$(VfsArch)-windows-dynamic\bin\git2.dll')"
Text="vcpkg install completed but git2.dll (dynamic) is missing. Check vcpkg output above for errors." />
<Error Condition="!Exists('$(RepoOutPath)vcpkg_installed\static\x64-windows-static-aot\lib\git2.lib')"
<Error Condition="!Exists('$(RepoOutPath)vcpkg_installed\static\$(VfsArch)-windows-static-aot\lib\git2.lib')"
Text="vcpkg install completed but git2.lib (static) is missing. Check vcpkg output above for errors." />

<Touch Files="$(_VcpkgStampFile)" AlwaysCreate="true" />
Expand Down
Loading
Loading