Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
5bd9825
Centralize NuGet package versions with Directory.Packages.props
tyrielv Apr 8, 2026
a35630d
Merge pull request #1937 from tyrielv/tyrielv/net10-central-packages
tyrielv Apr 9, 2026
4b70348
PostIndexChangedHook: skip notification for non-canonical indexes
tyrielv Apr 8, 2026
7352617
Merge pull request #1940 from tyrielv/tyrielv/skip-post-index-change-…
tyrielv Apr 9, 2026
1be4aca
Remove GVFS.GVFlt and ESENT legacy disk layout upgrades
tyrielv Apr 8, 2026
945615d
Merge pull request #1939 from tyrielv/tyrielv/net10-remove-legacy
tyrielv Apr 10, 2026
6707c82
Remove GVFS.Service.UI (dead code)
tyrielv Apr 8, 2026
7fa6733
Merge pull request #1938 from tyrielv/tyrielv/net10-remove-service-ui
tyrielv Apr 10, 2026
1a36371
build(deps): bump actions/github-script from 8 to 9
dependabot[bot] Apr 14, 2026
99dcb4a
Merge pull request #1945 from microsoft/dependabot/github_actions/act…
tyrielv Apr 14, 2026
e876cd7
GVFS: fix silent mount failure on concurrent worktree add
tyrielv Apr 13, 2026
7669d6c
Merge pull request #1943 from tyrielv/tyrielv/fix-concurrent-worktree…
tyrielv Apr 15, 2026
f0c8cb8
Migrate from CommandLineParser to System.CommandLine 2.0.5
tyrielv Apr 9, 2026
7d0389b
Merge pull request #1941 from tyrielv/tyrielv/net10-system-commandline
tyrielv Apr 15, 2026
c83beab
Migrate from Newtonsoft.Json to System.Text.Json
tyrielv Apr 15, 2026
d397062
Merge pull request #1946 from tyrielv/tyrielv/net10-system-text-json
tyrielv Apr 16, 2026
1e4d726
Update default Microsoft Git version to v2.53.0.vfs.0.7
github-actions[bot] Apr 17, 2026
96352b2
Merge pull request #1948 from microsoft/automation/gitrelease-v2.53.0…
dscho Apr 17, 2026
413ea79
Add CLI tests for GVFS, GVFS.Mount, and FastFetch verbs
tyrielv Apr 29, 2026
1e381ed
Merge pull request #1952 from tyrielv/tyrielv/cli-tests
tyrielv Apr 30, 2026
6633447
Retarget managed projects to .NET 10 with NativeAOT
tyrielv Apr 29, 2026
f2df404
Replace System.Reflection.Assembly usage for NativeAOT
tyrielv Apr 29, 2026
c5b7ca7
Replace changed .NET 10 APIs
tyrielv Apr 29, 2026
bb78760
Replace System.Management WMI with kernel32 P/Invoke
tyrielv Apr 29, 2026
c36bc23
Guard against null triggeringProcessImageFileName from ProjFS
tyrielv Apr 29, 2026
97fa1e1
Replace HTTP stack for .NET 10
tyrielv Apr 29, 2026
33d3b95
Add source-generated JSON serialization for NativeAOT
tyrielv Apr 29, 2026
62c5c6c
Adapt functional tests for .NET 10 ProjFS behavioral changes
tyrielv Apr 29, 2026
50b24e6
Merge pull request #1953 from tyrielv/tyrielv/net10-pr
tyrielv May 4, 2026
1731fca
Fix flaky WriteWithoutClose/CreateFileWithoutClose tests
tyrielv May 6, 2026
59bfc47
Merge pull request #1959 from tyrielv/tyrielv/fix-flaky-writewithoutc…
tyrielv May 6, 2026
ab0ac7f
Installer: non-disruptive upgrade with staging mode
tyrielv May 6, 2026
eb364fb
release.yml: update the AzDO release pipeline YAML
mjcheetham May 7, 2026
a4e8cdc
Merge pull request #1960 from microsoft/release-yaml
mjcheetham May 7, 2026
bd3f22a
Service: complete staged upgrade after unmount or restart
tyrielv May 6, 2026
116c1bb
CI: add upgrade test workflow with 5 scenarios
tyrielv May 6, 2026
3a0f1b2
Merge pull request #1958 from tyrielv/tyrielv/streamlined-upgrade
tyrielv May 7, 2026
58a00e8
Fix staged upgrade races and installer error handling
tyrielv May 7, 2026
8e1c9bf
Merge pull request #1961 from tyrielv/tyrielv/streamlined-upgrade-fixes
tyrielv May 8, 2026
7a7d21d
Update GVFS version to 2.0 in release pipeline
tyrielv May 11, 2026
be1ef98
Merge pull request #1962 from microsoft/tyrielv/major-bump
tyrielv May 11, 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
180 changes: 91 additions & 89 deletions .azure-pipelines/release.yml
Original file line number Diff line number Diff line change
@@ -1,93 +1,95 @@
# NOTE: this pipeline definition is not currently used to build releases of VFS for Git.
# This is still done in the GVFS-Release-RealSign "classic" pipeline.

name: $(date:yy)$(DayOfYear)$(rev:.r)
trigger: none
pr: none

variables:
signType: test
teamName: GVFS
configuration: Release
signPool: VSEng-MicroBuildVS2019
GVFSMajorAndMinorVersion: 1.0
GVFSMajorAndMinorVersion: 2.0
GVFSRevision: $(Build.BuildNumber)

jobs:
- job: build
displayName: Windows Build and Sign

pool:
name: $(signPool)

steps:
- task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@2
displayName: Install signing plugin
inputs:
signType: '$(SignType)'

- task: UseDotNet@2
displayName: Install .NET SDK
inputs:
packageType: sdk
version: 8.0.413

- task: CmdLine@2
displayName: Build VFS for Git
inputs:
script: $(Build.Repository.LocalPath)\scripts\Build.bat $(configuration) $(GVFSMajorAndMinorVersion).$(GVFSRevision) detailed

- task: CmdLine@2
displayName: Run unit tests
inputs:
script: $(Build.Repository.LocalPath)\scripts\RunUnitTests.bat $(configuration)

- task: CmdLine@2
displayName: Create build artifacts
inputs:
script: $(Build.Repository.LocalPath)\scripts\CreateBuildArtifacts.bat $(configuration) $(Build.ArtifactStagingDirectory)

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: Installer'
inputs:
PathtoPublish: $(Build.ArtifactStagingDirectory)\NuGetPackages
ArtifactName: Installer

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: FastFetch'
inputs:
PathtoPublish: $(Build.ArtifactStagingDirectory)\FastFetch
ArtifactName: FastFetch

- task: PublishSymbols@1
displayName: Enable Source Server
condition: eq(succeeded(), eq(variables['signType'], 'real'))
inputs:
SearchPattern: '**\*.pdb'
SymbolsFolder: $(Build.ArtifactStagingDirectory)\Symbols

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: Symbols'
inputs:
PathtoPublish: $(Build.ArtifactStagingDirectory)\Symbols
ArtifactName: Symbols

- task: ms-vscs-artifact.build-tasks.artifactSymbolTask-1.artifactSymbolTask@0
displayName: Publish to Symbols on Symweb
condition: eq(succeeded(), eq(variables['signType'], 'real'))
inputs:
symbolServiceURI: https://microsoft.artifacts.visualstudio.com/DefaultCollection
sourcePath: $(Build.ArtifactStagingDirectory)/Symbols
expirationInDays: 2065
usePat: false

- task: NuGetCommand@2
displayName: Push GVFS.Installers package
condition: eq(succeeded(), eq(variables['signType'], 'real'))
inputs:
command: push
packagesToPush: $(Build.ArtifactStagingDirectory)\NuGetPackages\GVFS.Installers.*.nupkg
nuGetFeedType: external
publishFeedCredentials: '1essharedassets GVFS [PUBLISH]'

- task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1
displayName: Send MicroBuild Telemetry
condition: always()
BuildConfiguration: Release
TeamName: GVFS

resources:
repositories:
- repository: MicroBuildTemplate
type: git
name: 1ESPipelineTemplates/MicroBuildTemplate
ref: refs/tags/release

- repository: VFSForGit
type: github
name: microsoft/VFSForGit
ref: releases/shipped
endpoint: GitHub-VFSForGit

extends:
template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate
parameters:
pool:
name: VSEngSS-MicroBuild2022-1ES

featureFlags:
incrementalSDLBinaryAnalysis: false
disableNetworkIsolation: true

sdl:
binskim:
enabled: false
justificationForDisabling: "Guardian and BinSkim do not support a suppression for InnoSetup installer file"
sourceRepositoriesToScan:
include:
- repository: VFSForGit

stages:
- stage: Release

jobs:
- job: Build
templateContext:
mb:
signing:
enabled: true
feedSource: 'https://pkgs.dev.azure.com/mseng/_packaging/MicroBuildToolset/nuget/v3/index.json'
signType: real
signWithProd: true

outputs:
- output: pipelineArtifact
targetPath: $(Build.ArtifactStagingDirectory)\GVFS.Installers
artifactName: Installer
- output: pipelineArtifact
targetPath: $(Build.ArtifactStagingDirectory)\FastFetch
artifactName: FastFetch
- output: pipelineArtifact
targetPath: $(Build.ArtifactStagingDirectory)\Symbols
artifactName: Symbols
- output: pipelineArtifact
targetPath: $(Build.ArtifactStagingDirectory)\GVFS.FunctionalTests
artifactName: FunctionalTests

steps:
- checkout: VFSForGit
displayName: 'Checkout VFS for Git'
path: vfsforgit\src

- task: NuGetToolInstaller@1
displayName: 'Use NuGet 6.x'
inputs:
versionSpec: '6.x'

- script: |
$(Agent.BuildDirectory)\vfsforgit\src\scripts\Build.bat ^
$(BuildConfiguration) ^
$(GVFSMajorAndMinorVersion).$(GVFSRevision) ^
detailed
displayName: 'Build and sign ($(BuildConfiguration))'

- script: |
$(Agent.BuildDirectory)\vfsforgit\src\scripts\RunUnitTests.bat ^
$(BuildConfiguration)
displayName: 'Run unit tests'

- script: |
$(Agent.BuildDirectory)\vfsforgit\src\scripts\CreateBuildArtifacts.bat ^
$(BuildConfiguration) ^
$(Build.ArtifactStagingDirectory)
displayName: 'Create artifacts'
17 changes: 12 additions & 5 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ permissions:
actions: read

env:
GIT_VERSION: ${{ github.event.inputs.git_version || 'v2.53.0.vfs.0.6' }}
GIT_VERSION: ${{ github.event.inputs.git_version || 'v2.53.0.vfs.0.7' }}

jobs:
validate:
Expand All @@ -36,7 +36,7 @@ jobs:
- name: Look for prior successful runs
id: check
if: github.event.inputs.git_version == ''
uses: actions/github-script@v8
uses: actions/github-script@v9
with:
github-token: ${{secrets.GITHUB_TOKEN}}
result-encoding: string
Expand Down Expand Up @@ -182,7 +182,7 @@ jobs:
- name: Skip this job if there is a previous successful run
if: needs.validate.outputs.skip != ''
id: skip
uses: actions/github-script@v8
uses: actions/github-script@v9
with:
script: |
core.info(`Skipping: There already is a successful run: ${{ needs.validate.outputs.skip }}`)
Expand All @@ -198,7 +198,7 @@ jobs:
if: steps.skip.outputs.result != 'true'
uses: actions/setup-dotnet@v5
with:
dotnet-version: 8.0.413
global-json-file: src/global.json

- name: Add MSBuild to PATH
if: steps.skip.outputs.result != 'true'
Expand Down Expand Up @@ -247,10 +247,17 @@ jobs:
with:
skip: ${{ needs.validate.outputs.skip }}

upgrade_tests:
name: Upgrade Tests
needs: [validate, build]
uses: ./.github/workflows/upgrade-tests.yaml
with:
skip: ${{ needs.validate.outputs.skip }}

result:
runs-on: ubuntu-latest
name: Build, Unit and Functional Tests Successful
needs: [functional_tests]
needs: [functional_tests, upgrade_tests]

steps:
- name: Success! # for easier identification of successful runs in the Checks Required for Pull Requests
Expand Down
15 changes: 14 additions & 1 deletion .github/workflows/functional-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ jobs:
- name: Skip this job if there is a previous successful run
if: inputs.skip != ''
id: skip
uses: actions/github-script@v8
uses: actions/github-script@v9
with:
script: |
core.info(`Skipping: There already is a successful run: ${{ inputs.skip }}`)
Expand Down Expand Up @@ -122,6 +122,18 @@ jobs:
shell: cmd
run: gvfs\install.bat

- name: Verify GVFS installation
if: steps.skip.outputs.result != 'true'
shell: cmd
continue-on-error: true
run: |
echo === GVFS Version ===
"C:\Program Files\VFS for Git\GVFS.exe" version
echo === Service Status ===
sc query GVFS.Service
echo === List Mounted ===
"C:\Program Files\VFS for Git\GVFS.exe" service --list-mounted

- name: ProjFS details (post-install)
if: steps.skip.outputs.result != 'true'
shell: cmd
Expand All @@ -141,6 +153,7 @@ jobs:
- name: Run functional tests
if: steps.skip.outputs.result != 'true'
shell: cmd
timeout-minutes: 60
run: |
SET PATH=C:\Program Files\VFS for Git;%PATH%
SET GIT_TRACE2_PERF=C:\temp\git-trace2.log
Expand Down
Loading
Loading