diff --git a/.github/workflows/DevHome-CI.yml b/.github/workflows/DevHome-CI.yml
index 3bc86b7f1..6790e4463 100644
--- a/.github/workflows/DevHome-CI.yml
+++ b/.github/workflows/DevHome-CI.yml
@@ -101,6 +101,10 @@ jobs:
     - name: Tools UnitTests
       if: ${{ matrix.platform != 'arm64' }}
       run: |
-        foreach ($UnitTestPath in (Get-ChildItem "tools\\*\\*UnitTest\\bin\\${{ matrix.platform }}\\${{ matrix.configuration }}\\net8.0-windows10.0.22621.0\\*.UnitTest.dll")) {
+        foreach ($UnitTestPath in (Get-ChildItem "tools\\**\\*UnitTest\\bin\\${{ matrix.platform }}\\${{ matrix.configuration }}\\net8.0-windows10.0.22621.0\\*.UnitTest.dll")) {
           cmd /c "$env:VSDevTestCmd" /Platform:${{ matrix.platform }} $UnitTestPath.FullName
         }
+
+    - name: GitExtension UnitTests
+      if: ${{ matrix.platform != 'arm64' }}
+      run: cmd /c "$env:VSDevTestCmd" /Platform:${{ matrix.platform }} extensions\\GitExtension\\FileExplorerGitIntegration.UnitTest\\bin\\${{ matrix.platform }}\\${{ matrix.configuration }}\\net8.0-windows10.0.22621.0\\FileExplorerGitIntegration.UnitTest.dll
diff --git a/Test.ps1 b/Test.ps1
index 3964c17c2..fcef74634 100644
--- a/Test.ps1
+++ b/Test.ps1
@@ -150,6 +150,20 @@ try {
                     & $vstestPath $winAppTestArgs
                 }
             }
+
+            $vstestArgs = @(
+                "/Platform:$platform",
+                "/Logger:trx;LogFileName=FileExplorerGitIntegration.UnitTest-$platform-$configuration.trx",
+                "extensions\GitExtension\FileExplorerGitIntegration.UnitTest\bin\$platform\$configuration\net8.0-windows10.0.22621.0\FileExplorerGitIntegration.UnitTest.dll"
+            )
+            & $vstestPath $vstestArgs
+
+            $vstestArgs = @(
+                "/Platform:$platform",
+                "/Logger:trx;LogFileName=DevHome.FileExplorerSourceControlIntegrationUnitTest.UnitTest-$platform-$configuration.trx",
+                "tools\Customization\DevHome.FileExplorerSourceControlIntegrationUnitTest\bin\$platform\$configuration\net8.0-windows10.0.22621.0\DevHome.FileExplorerSourceControlIntegrationUnitTest.dll"
+            )
+            & $vstestPath $vstestArgs
         }
     }
 } catch {
diff --git a/common/Helpers/DirectoryHelper.cs b/common/Helpers/DirectoryHelper.cs
new file mode 100644
index 000000000..b47177025
--- /dev/null
+++ b/common/Helpers/DirectoryHelper.cs
@@ -0,0 +1,59 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+using System;
+using System.IO;
+using Microsoft.Windows.DevHome.SDK;
+using Serilog;
+
+namespace DevHome.Common.Helpers;
+
+public static class DirectoryHelper
+{
+    private static readonly ILogger _log = Log.ForContext("SourceContext", nameof(DirectoryHelper));
+
+    // Attempt to delete a directory with retries and an increasing backoff delay between retry attempts.
+    // This is useful when the directory may be temporarily in use by another process and the deletion may fail.
+    public static void DeleteDirectoryWithRetries(string directoryPath, bool recursive = true, int maxRetries = 3, int initialRetryDelayMs = 100, bool throwOnFailure = true)
+    {
+        ArgumentOutOfRangeException.ThrowIfNullOrEmpty(directoryPath);
+        ArgumentOutOfRangeException.ThrowIfNegative(maxRetries);
+        ArgumentOutOfRangeException.ThrowIfNegative(initialRetryDelayMs);
+
+        var retryDelay = initialRetryDelayMs;
+        for (var i = 0; i <= maxRetries; ++i)
+        {
+            try
+            {
+                if (Directory.Exists(directoryPath))
+                {
+                    Directory.Delete(directoryPath, recursive);
+                }
+
+                return;
+            }
+            catch (Exception ex)
+            {
+                if (i == maxRetries)
+                {
+                    _log.Error(ex, $"Failed to delete directory {directoryPath} on attempt {i + 1}.");
+                    if (throwOnFailure)
+                    {
+                        throw;
+                    }
+                    else
+                    {
+                        return;
+                    }
+                }
+                else
+                {
+                    _log.Information(ex, $"Failed to delete directory {directoryPath} on attempt {i + 1}. Retrying up to {maxRetries - i} more times.");
+                }
+            }
+
+            System.Threading.Thread.Sleep(retryDelay);
+            retryDelay *= 2;
+        }
+    }
+}
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/FileExplorerGitIntegration.UnitTest.csproj b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/FileExplorerGitIntegration.UnitTest.csproj
index 860681a3a..c68acca1f 100644
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/FileExplorerGitIntegration.UnitTest.csproj
+++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/FileExplorerGitIntegration.UnitTest.csproj
@@ -13,19 +13,10 @@
   </PropertyGroup>
   <ItemGroup>
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
-    <PackageReference Include="MSTest.TestAdapter" Version="2.2.10" />
-    <PackageReference Include="MSTest.TestFramework" Version="2.2.10" />
+    <PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
+    <PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\FileExplorerGitIntegration\FileExplorerGitIntegration.csproj" />
   </ItemGroup>
-  <ItemGroup>
-    <Content Include="resources\**\*.*" CopyToOutputDirectory="PreserveNewest" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Remove="resources\resources_readme.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="SandboxHelper.cs" />
-  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitCommandRunnerTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitCommandRunnerTests.cs
index 2f42cabb4..c644f7e23 100644
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitCommandRunnerTests.cs
+++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitCommandRunnerTests.cs
@@ -2,6 +2,7 @@
 // Licensed under the MIT License.
 
 using System.Diagnostics;
+using DevHome.Common.Helpers;
 using FileExplorerGitIntegration.Models;
 using LibGit2Sharp;
 
@@ -65,7 +66,7 @@ public static void ClassCleanup()
                 dirInfo.Attributes = FileAttributes.Normal;
             }
 
-            Directory.Delete(RepoPath, true);
+            DirectoryHelper.DeleteDirectoryWithRetries(RepoPath, true, 5, 100, false);
         }
     }
 
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitLocalRepositoryProviderUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitLocalRepositoryProviderUnitTests.cs
index 750ed7cb8..98a987b6c 100644
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitLocalRepositoryProviderUnitTests.cs
+++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitLocalRepositoryProviderUnitTests.cs
@@ -2,6 +2,7 @@
 // Licensed under the MIT License.
 
 using System.Diagnostics;
+using DevHome.Common.Helpers;
 using FileExplorerGitIntegration.Models;
 using LibGit2Sharp;
 
@@ -63,7 +64,7 @@ public static void ClassCleanup()
                 dirInfo.Attributes = FileAttributes.Normal;
             }
 
-            Directory.Delete(RepoPath, true);
+            DirectoryHelper.DeleteDirectoryWithRetries(RepoPath, true, 5, 100, false);
         }
     }
 
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs
index ab6011f6f..c0b35b8fa 100644
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs
+++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs
@@ -1,43 +1,130 @@
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT License.
 
+using DevHome.Common.Helpers;
 using FileExplorerGitIntegration.Models;
+using LibGit2Sharp;
+using Windows.Devices.Geolocation;
 
 namespace FileExplorerGitIntegration.UnitTest;
 
 [TestClass]
 public class GitSubmoduleUnitTests
 {
+    private const string RepoUrl = "https://github.com/libgit2/TestGitRepository.git";
     private const string FolderStatusProp = "System.VersionControl.CurrentFolderStatus";
     private const string StatusProp = "System.VersionControl.Status";
     private const string ShaProp = "System.VersionControl.LastChangeID";
 
-    private static SandboxHelper? _sandbox;
     private static GitLocalRepository? _repo;
+    private static string? _repoPath;
+
+    public enum CommitHashState
+    {
+        Base,
+        Previous,
+        New,
+        NewInSubmodule,
+        Missing,
+    }
+
+    private static readonly Dictionary<CommitHashState, string> _commits = [];
 
     [ClassInitialize]
-    public static void ClassInitialize(TestContext testContext)
+#pragma warning disable SA1313
+    public static void ClassInitialize(TestContext _)
+#pragma warning restore SA1313
     {
-        _sandbox = new();
-        var repoPath = _sandbox.CreateSandbox("submodules");
-        _sandbox.CreateSandbox("submodules_target");
-        _repo = new GitLocalRepository(repoPath);
+        _commits.Clear();
+        _repoPath = Directory.CreateTempSubdirectory("GitSubmoduleUnitTests").FullName;
+        Repository.Clone(RepoUrl, _repoPath);
+
+        GitDetect gitDetector = new();
+        gitDetector.DetectGit();
+        var gitPath = gitDetector.GitConfiguration.ReadInstallPath();
+
+        // Set identity for git commits
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, $"config user.email test@GitSubmoduleUnitTests");
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, $"config user.name Test GitSubmoduleUnitTests");
+
+        // Get the base and previous commit SHAs
+        {
+            var result = GitExecute.ExecuteGitCommand(gitPath, _repoPath, "log -n 2 --pretty=format:%H -- .");
+            Assert.AreEqual(Microsoft.Windows.DevHome.SDK.ProviderOperationStatus.Success, result.Status);
+            Assert.IsNotNull(result.Output);
+            var parts = result.Output.Split('\n');
+            Assert.AreEqual(2, parts.Length);
+            _commits[CommitHashState.Base] = parts[0];
+            _commits[CommitHashState.Previous] = parts[1];
+            Assert.AreNotEqual(_commits[CommitHashState.Base], _commits[CommitHashState.Previous]);
+        }
+
+        // Create a bunch of submodule baselines
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, $"submodule add -- {RepoUrl} sm_changed_file");
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, $"submodule add -- {RepoUrl} sm_changed_head");
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, $"submodule add -- {RepoUrl} sm_changed_index");
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, $"submodule add -- {RepoUrl} sm_changed_untracked_file");
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, $"submodule add -- {RepoUrl} sm_missing_commits");
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, $"submodule add -- {RepoUrl} sm_unchanged");
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, $"submodule add -- {RepoUrl} sm_unchanged_detached");
+        GitExecute.ExecuteGitCommand(gitPath, Path.Combine(_repoPath, "sm_unchanged_detached"), $"checkout {_commits[CommitHashState.Base]}");
+
+        // Commit and get the new SHA
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, "commit -m \"Adding submodules\"");
+        {
+            var result = GitExecute.ExecuteGitCommand(gitPath, _repoPath, "log -n 1 --pretty=format:%H -- .");
+            Assert.AreEqual(Microsoft.Windows.DevHome.SDK.ProviderOperationStatus.Success, result.Status);
+            Assert.IsNotNull(result.Output);
+            var parts = result.Output.Split('\n');
+            Assert.AreEqual(1, parts.Length);
+            _commits[CommitHashState.New] = parts[0];
+            Assert.AreNotEqual(_commits[CommitHashState.New], _commits[CommitHashState.Base]);
+        }
+
+        // Add and stage (but not commit) new submodule
+        GitExecute.ExecuteGitCommand(gitPath, _repoPath, $"submodule add -- {RepoUrl} sm_added_and_uncommitted");
+
+        // Modify submodules
+        File.AppendAllText(Path.Combine(_repoPath, "sm_changed_file/master.txt"), "In this submodule, the file is changed in the working directory.");
+        GitExecute.ExecuteGitCommand(gitPath, Path.Combine(_repoPath, "sm_changed_head"), $"config user.email test@GitSubmoduleUnitTests");
+        GitExecute.ExecuteGitCommand(gitPath, Path.Combine(_repoPath, "sm_changed_head"), $"config user.name Test GitSubmoduleUnitTests");
+        File.AppendAllText(Path.Combine(_repoPath, "sm_changed_head/master.txt"), "In this submodule, the file is changed and the change is committed to HEAD.");
+        GitExecute.ExecuteGitCommand(gitPath, Path.Combine(_repoPath, "sm_changed_head"), "commit --all --message \"Committing a change in the submodule.\"");
+        File.AppendAllText(Path.Combine(_repoPath, "sm_changed_index/master.txt"), "In this submodule, the file is changed and the change is committed to HEAD.");
+        GitExecute.ExecuteGitCommand(gitPath, Path.Combine(_repoPath, "sm_changed_index"), "stage --all");
+        File.AppendAllText(Path.Combine(_repoPath, "sm_changed_untracked_file/untracked_file.txt"), "In this submodule, we've added an untracked file.");
+        GitExecute.ExecuteGitCommand(gitPath, Path.Combine(_repoPath, "sm_missing_commits"), $"checkout {_commits[CommitHashState.Previous]}");
+        File.AppendAllLines(
+            Path.Combine(_repoPath, ".gitmodules"),
+            ["[submodule \"sm_gitmodules_only\"]", "\tpath = sm_gitmodules_only", "\turl = ..\\\\submodules_target"]);
+
+        // Get the new commit SHA in sm_changed_head
+        {
+            var result = GitExecute.ExecuteGitCommand(gitPath, Path.Combine(_repoPath, "sm_changed_head"), "log -n 1 --pretty=format:%H -- .");
+            Assert.AreEqual(Microsoft.Windows.DevHome.SDK.ProviderOperationStatus.Success, result.Status);
+            Assert.IsNotNull(result.Output);
+            var parts = result.Output.Split('\n');
+            Assert.AreEqual(1, parts.Length);
+            _commits[CommitHashState.NewInSubmodule] = parts[0];
+            Assert.AreNotEqual(_commits[CommitHashState.NewInSubmodule], _commits[CommitHashState.Base]);
+        }
+
+        _repo = new GitLocalRepository(_repoPath);
     }
 
     [ClassCleanup]
     public static void ClassCleanup()
     {
-        if (_sandbox is not null)
+        _repo = null;
+        GC.Collect(2);
+        if (_repoPath is not null)
         {
-            _sandbox.Cleanup();
-            _sandbox = null;
+            DirectoryHelper.DeleteDirectoryWithRetries(_repoPath, true, 5, 100, false);
         }
-
-        _repo = null;
     }
 
     [TestMethod]
-    [DataRow("", FolderStatusProp, "Branch: main | +1 ~1 -0 | +0 ~7 -0")]
+    [DataRow("", FolderStatusProp, "Branch: master ↑1 | +1 ~1 -0 | +0 ~6 -0")]
     [DataRow(".gitmodules", StatusProp, "Staged, Modified")]
     [DataRow("README.txt", StatusProp, "")]
     [DataRow("sm_added_and_uncommitted", StatusProp, "Submodule Added")]
@@ -46,7 +133,6 @@ public static void ClassCleanup()
     [DataRow("sm_changed_index", StatusProp, "Submodule Dirty")]
     [DataRow("sm_changed_untracked_file", StatusProp, "Submodule Dirty")]
     [DataRow("sm_missing_commits", StatusProp, "Submodule Changed")]
-    [DataRow("sm_missing_commits_detached", StatusProp, "Submodule Changed")]
     [DataRow("sm_unchanged", StatusProp, "")]
     [DataRow("sm_unchanged_detached", StatusProp, "")]
     public void RootFolderStatus(string path, string property, string value)
@@ -58,55 +144,53 @@ public void RootFolderStatus(string path, string property, string value)
     }
 
     [TestMethod]
-    [DataRow("", ShaProp, "8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940")]
-    [DataRow(".gitmodules", ShaProp, "d8ebdc0b3c1d5240d4fc1c4cd3728ff561e714ad")]
-    [DataRow("README.txt", ShaProp, "74b157c3bfd2f24323c3bc6e5e96639a424f157f")]
-    [DataRow("sm_added_and_uncommitted", ShaProp, "")]
-    [DataRow("sm_changed_file", ShaProp, "8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940")]
-    [DataRow("sm_changed_head", ShaProp, "8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940")]
-    [DataRow("sm_changed_index", ShaProp, "8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940")]
-    [DataRow("sm_changed_untracked_file", ShaProp, "8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940")]
-    [DataRow("sm_missing_commits", ShaProp, "8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940")]
-    [DataRow("sm_missing_commits_detached", ShaProp, "8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940")]
-    [DataRow("sm_unchanged", ShaProp, "8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940")]
-    [DataRow("sm_unchanged_detached", ShaProp, "8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940")]
-    public void RootFolderCommit(string path, string property, string value)
+    [DataRow("", ShaProp, CommitHashState.New)]
+    [DataRow(".gitmodules", ShaProp, CommitHashState.New)]
+    [DataRow("sm_added_and_uncommitted", ShaProp, CommitHashState.Missing)]
+    [DataRow("sm_changed_file", ShaProp, CommitHashState.New)]
+    [DataRow("sm_changed_head", ShaProp, CommitHashState.New)]
+    [DataRow("sm_changed_index", ShaProp, CommitHashState.New)]
+    [DataRow("sm_changed_untracked_file", ShaProp, CommitHashState.New)]
+    [DataRow("sm_missing_commits", ShaProp, CommitHashState.New)]
+    [DataRow("sm_unchanged", ShaProp, CommitHashState.New)]
+    [DataRow("sm_unchanged_detached", ShaProp, CommitHashState.New)]
+    public void RootFolderCommit(string path, string property, CommitHashState state)
     {
         Assert.IsNotNull(_repo);
         var result = _repo.GetProperties([property], path);
         Assert.IsNotNull(result);
         if (result.TryGetValue(property, out var actual))
         {
-            Assert.AreEqual(value, actual);
+            Assert.AreEqual(_commits[state], actual);
         }
         else
         {
-            Assert.AreEqual(value, string.Empty);
+            Assert.AreEqual(CommitHashState.Missing, state);
         }
     }
 
     [TestMethod]
-    [DataRow("sm_added_and_uncommitted\\file_to_modify", ShaProp, "e9a899083a7e2b25d7a41e69463ce083bf9ef6ef")]
-    [DataRow("sm_changed_file\\file_to_modify", ShaProp, "e9a899083a7e2b25d7a41e69463ce083bf9ef6ef")]
-    [DataRow("sm_changed_head\\file_to_modify", ShaProp, "2ab664114c928551863c33d694965c79b6b75144")]
-    [DataRow("sm_changed_index\\file_to_modify", ShaProp, "e9a899083a7e2b25d7a41e69463ce083bf9ef6ef")]
-    [DataRow("sm_changed_untracked_file\\file_to_modify", ShaProp, "e9a899083a7e2b25d7a41e69463ce083bf9ef6ef")]
-    [DataRow("sm_missing_commits\\file_to_modify", ShaProp, "8e623bcf5aeceb8af7c0f0b22b82322f6c82fd4b")]
-    [DataRow("sm_missing_commits_detached\\file_to_modify", ShaProp, "8e623bcf5aeceb8af7c0f0b22b82322f6c82fd4b")]
-    [DataRow("sm_unchanged\\file_to_modify", ShaProp, "e9a899083a7e2b25d7a41e69463ce083bf9ef6ef")]
-    [DataRow("sm_unchanged_detached\\file_to_modify", ShaProp, "e9a899083a7e2b25d7a41e69463ce083bf9ef6ef")]
-    public void SubmoduleFilesCommit(string path, string property, string value)
+    [DataRow("sm_added_and_uncommitted\\.", ShaProp, CommitHashState.Base)]
+    [DataRow("sm_changed_file\\.", ShaProp, CommitHashState.Base)]
+    [DataRow("sm_changed_head\\.", ShaProp, CommitHashState.NewInSubmodule)]
+    [DataRow("sm_changed_head\\master.txt", ShaProp, CommitHashState.NewInSubmodule)]
+    [DataRow("sm_changed_index\\.", ShaProp, CommitHashState.Base)]
+    [DataRow("sm_changed_untracked_file\\.", ShaProp, CommitHashState.Base)]
+    [DataRow("sm_missing_commits\\.", ShaProp, CommitHashState.Previous)]
+    [DataRow("sm_unchanged\\.", ShaProp, CommitHashState.Base)]
+    [DataRow("sm_unchanged_detached\\.", ShaProp, CommitHashState.Base)]
+    public void SubmoduleFilesCommit(string path, string property, CommitHashState state)
     {
         Assert.IsNotNull(_repo);
         var result = _repo.GetProperties([property], path);
         Assert.IsNotNull(result);
         if (result.TryGetValue(property, out var actual))
         {
-            Assert.AreEqual(value, actual);
+            Assert.AreEqual(_commits[state], actual);
         }
         else
         {
-            Assert.AreEqual(value, string.Empty);
+            Assert.AreEqual(CommitHashState.Missing, state);
         }
     }
 }
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/SandboxHelper.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/SandboxHelper.cs
deleted file mode 100644
index 55019279d..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/SandboxHelper.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT License.
-
-using Serilog;
-
-namespace FileExplorerGitIntegration.UnitTest;
-
-internal sealed class SandboxHelper
-{
-    private readonly Serilog.ILogger _log = Log.ForContext("SourceContext", nameof(SandboxHelper));
-
-    private readonly Dictionary<string, string> _renames = new()
-    {
-        { "dot-git", ".git" },
-        { "dot-gitmodules", ".gitmodules" },
-    };
-
-    public DirectoryInfo ResourcesDirectory { get; private set; }
-
-    public DirectoryInfo DeployedDirectory { get; private set; }
-
-    public SandboxHelper()
-    {
-        var parentDir = Directory.GetParent(typeof(SandboxHelper).Assembly.Location) ?? throw new InvalidOperationException("Could not obtain resources directory for sandbox repos");
-        ResourcesDirectory = new DirectoryInfo(Path.Combine(parentDir.FullName, "resources"));
-        DeployedDirectory = Directory.CreateTempSubdirectory("SandboxHelper.");
-    }
-
-    public void Cleanup()
-    {
-        try
-        {
-            Directory.Delete(DeployedDirectory.FullName, true);
-        }
-        catch (Exception ex)
-        {
-            _log.Warning(ex, $"Failed to delete temp directory {DeployedDirectory.FullName}");
-            throw;
-        }
-    }
-
-    public string CreateSandbox(string directory)
-    {
-        var source = new DirectoryInfo(Path.Combine(ResourcesDirectory.FullName, directory));
-        var target = new DirectoryInfo(Path.Combine(DeployedDirectory.FullName, directory));
-        CopyRecursive(source, target);
-
-        return target.FullName;
-    }
-
-    private void CopyRecursive(DirectoryInfo source, DirectoryInfo target)
-    {
-        foreach (var dir in source.GetDirectories())
-        {
-            CopyRecursive(dir, target.CreateSubdirectory(FixName(dir.Name)));
-        }
-
-        foreach (var file in source.GetFiles())
-        {
-            file.CopyTo(Path.Combine(target.FullName, FixName(file.Name)));
-        }
-    }
-
-    private string FixName(string name)
-    {
-        _renames.TryGetValue(name, out var newName);
-        return newName ?? name;
-    }
-}
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/.gitattributes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/.gitattributes
deleted file mode 100644
index 16986b443..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/.gitattributes
+++ /dev/null
@@ -1,5 +0,0 @@
-* binary
-.gitattributes diff
-.gitignore diff
-config diff
-resources_readme.txt diff
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/.gitignore b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/.gitignore
deleted file mode 100644
index a817cf846..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-COMMIT_EDITMSG
-exclude
-logs/
-description
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/resources_readme.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/resources_readme.txt
deleted file mode 100644
index 3807fc1f8..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/resources_readme.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-The folders under "resources" are Git repositories that have had ".git" renamed to "dot-git" and ".gitmodules" renamed to "dot-gitmodules".
-
-This makes Git treat them as normal files so they can be checked in. SandboxHelper will rename them back to ".git" and ".gitmodules" when it needs to "clone" the repos for testing.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/README.txt
deleted file mode 100644
index a24ee880a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a submodule test repo.
-It has various submodules in different states.
-Inspired by unit tests in libgit2.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/COMMITMESSAGE b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/COMMITMESSAGE
deleted file mode 100644
index e69de29bb..000000000
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/HEAD
deleted file mode 100644
index 638398fea..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/ORIG_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/ORIG_HEAD
deleted file mode 100644
index 87d28f9a3..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/ORIG_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-3e1e770f7c28e87cbb3ee0c1541e3417c84a0708
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/config
deleted file mode 100644
index f209c6add..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/config
+++ /dev/null
@@ -1,34 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-[submodule "sm_changed_file"]
-	url = E:/Repos/GitHub/devhome/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target
-	active = true
-[submodule "sm_missing_commits"]
-	url = E:/Repos/GitHub/devhome/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target
-	active = true
-[submodule "sm_changed_head"]
-	url = E:/Repos/GitHub/devhome/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target
-	active = true
-[submodule "sm_changed_index"]
-	url = E:/Repos/GitHub/devhome/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target
-	active = true
-[submodule "sm_changed_untracked_file"]
-	url = E:/Repos/GitHub/devhome/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target
-	active = true
-[submodule "sm_unchanged"]
-	url = E:/Repos/GitHub/devhome/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target
-	active = true
-[submodule "sm_unchanged_detached"]
-	url = E:/Repos/GitHub/devhome/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target
-	active = true
-[submodule "sm_missing_commits_detached"]
-	url = E:/Repos/GitHub/devhome/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target
-	active = true
-[submodule "sm_added_and_uncommitted"]
-	url = E:/temp/resources/submodules_target
-	active = true
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/description
deleted file mode 100644
index 893e5cad2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/index
deleted file mode 100644
index 905f4c108..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/info/exclude
deleted file mode 100644
index f00680973..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/info/refs
deleted file mode 100644
index 8e04c6d60..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/info/refs
+++ /dev/null
@@ -1 +0,0 @@
-8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940	refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/HEAD
deleted file mode 100644
index b870d8262..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/config
deleted file mode 100644
index b9d1c45dc..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/config
+++ /dev/null
@@ -1,14 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-	worktree = ../../../sm_added_and_uncommitted
-[remote "origin"]
-	url = E:/temp/resources/submodules_target
-	fetch = +refs/heads/*:refs/remotes/origin/*
-[branch "main"]
-	remote = origin
-	merge = refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/description
deleted file mode 100644
index 498b267a8..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/index
deleted file mode 100644
index f9d12094b..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/info/exclude
deleted file mode 100644
index a5196d1be..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/info/refs
deleted file mode 100644
index 7b89c2bae..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/info/refs
+++ /dev/null
@@ -1,3 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/remotes/origin/HEAD
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/info/commit-graph
deleted file mode 100644
index e0b221014..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/info/packs
deleted file mode 100644
index 3c8642f9a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
-P pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx
deleted file mode 100644
index 160df578d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes
deleted file mode 100644
index b4e358061..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
deleted file mode 100644
index 0fcc37bce..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev
deleted file mode 100644
index c053e3f5f..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx
deleted file mode 100644
index ec5dbafd3..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
deleted file mode 100644
index c287b9ca4..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev
deleted file mode 100644
index da062a9be..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/packed-refs
deleted file mode 100644
index 2d08bcc8b..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/packed-refs
+++ /dev/null
@@ -1,3 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/refs/remotes/origin/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/refs/remotes/origin/HEAD
deleted file mode 100644
index 4b0a87595..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/refs/remotes/origin/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/COMMITMESSAGE b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/COMMITMESSAGE
deleted file mode 100644
index e69de29bb..000000000
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/FETCH_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/FETCH_HEAD
deleted file mode 100644
index cf9cca57e..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/FETCH_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	not-for-merge	branch 'main' of ../../submodules_target
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/HEAD
deleted file mode 100644
index 638398fea..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/ORIG_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/ORIG_HEAD
deleted file mode 100644
index d4581f1ba..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/ORIG_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-e9a899083a7e2b25d7a41e69463ce083bf9ef6ef
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/config
deleted file mode 100644
index 6d80d0295..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/config
+++ /dev/null
@@ -1,11 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-	worktree = ../../../sm_changed_file
-[remote "origin"]
-	url = ../../submodules_target
-	fetch = +refs/heads/*:refs/remotes/origin/*
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/description
deleted file mode 100644
index 893e5cad2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/index
deleted file mode 100644
index 43ac442ae..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/info/exclude
deleted file mode 100644
index f00680973..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/info/refs
deleted file mode 100644
index d904244d5..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/info/refs
+++ /dev/null
@@ -1,2 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/info/commit-graph
deleted file mode 100644
index e0b221014..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/info/packs
deleted file mode 100644
index 3c8642f9a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
-P pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx
deleted file mode 100644
index 160df578d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes
deleted file mode 100644
index b4e358061..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
deleted file mode 100644
index 0fcc37bce..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev
deleted file mode 100644
index c053e3f5f..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx
deleted file mode 100644
index ec5dbafd3..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
deleted file mode 100644
index c287b9ca4..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev
deleted file mode 100644
index da062a9be..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/packed-refs
deleted file mode 100644
index 2d08bcc8b..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/packed-refs
+++ /dev/null
@@ -1,3 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/COMMITMESSAGE b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/COMMITMESSAGE
deleted file mode 100644
index e69de29bb..000000000
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/COMMIT_EDITMSG b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/COMMIT_EDITMSG
deleted file mode 100644
index 69c80d917..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/COMMIT_EDITMSG
+++ /dev/null
@@ -1 +0,0 @@
-Committing a change to submodule
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/FETCH_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/FETCH_HEAD
deleted file mode 100644
index cf9cca57e..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/FETCH_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	not-for-merge	branch 'main' of ../../submodules_target
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/HEAD
deleted file mode 100644
index b870d8262..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/ORIG_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/ORIG_HEAD
deleted file mode 100644
index a306ccd25..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/ORIG_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-4bb90658751b1d839ee1277368998be69deacca5
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/config
deleted file mode 100644
index 3c6a53151..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/config
+++ /dev/null
@@ -1,11 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-	worktree = ../../../sm_changed_head
-[remote "origin"]
-	url = ../../submodules_target
-	fetch = +refs/heads/*:refs/remotes/origin/*
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/description
deleted file mode 100644
index 893e5cad2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/index
deleted file mode 100644
index 98f1002df..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/info/exclude
deleted file mode 100644
index f00680973..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/info/refs
deleted file mode 100644
index 09c79e50c..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/info/refs
+++ /dev/null
@@ -1,2 +0,0 @@
-2ab664114c928551863c33d694965c79b6b75144	refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/info/commit-graph
deleted file mode 100644
index d8062f993..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/info/packs
deleted file mode 100644
index 4a02e7642..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
-P pack-9201333783142a88b5199747b1d4aa993fd8df68.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.idx
deleted file mode 100644
index d69c68e3e..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.pack
deleted file mode 100644
index 8f1e6def0..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.rev
deleted file mode 100644
index 3062d64da..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx
deleted file mode 100644
index 160df578d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes
deleted file mode 100644
index b4e358061..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
deleted file mode 100644
index 0fcc37bce..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev
deleted file mode 100644
index c053e3f5f..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/packed-refs
deleted file mode 100644
index 546319acf..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/packed-refs
+++ /dev/null
@@ -1,3 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-2ab664114c928551863c33d694965c79b6b75144 refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/COMMITMESSAGE b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/COMMITMESSAGE
deleted file mode 100644
index e69de29bb..000000000
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/FETCH_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/FETCH_HEAD
deleted file mode 100644
index cf9cca57e..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/FETCH_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	not-for-merge	branch 'main' of ../../submodules_target
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/HEAD
deleted file mode 100644
index 638398fea..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/ORIG_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/ORIG_HEAD
deleted file mode 100644
index d4581f1ba..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/ORIG_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-e9a899083a7e2b25d7a41e69463ce083bf9ef6ef
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/config
deleted file mode 100644
index 954a41f21..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/config
+++ /dev/null
@@ -1,11 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-	worktree = ../../../sm_changed_index
-[remote "origin"]
-	url = ../../submodules_target
-	fetch = +refs/heads/*:refs/remotes/origin/*
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/description
deleted file mode 100644
index 893e5cad2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/index
deleted file mode 100644
index f8a715930..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/info/exclude
deleted file mode 100644
index f00680973..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/info/refs
deleted file mode 100644
index d904244d5..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/info/refs
+++ /dev/null
@@ -1,2 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/info/commit-graph
deleted file mode 100644
index e0b221014..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/info/packs
deleted file mode 100644
index 6b51b0ef0..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
-P pack-2077343301131983b67a949d28b0995936863afe.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.idx
deleted file mode 100644
index 4277363d6..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.pack
deleted file mode 100644
index 0d5b9cc8a..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.rev
deleted file mode 100644
index 6d878d7ff..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx
deleted file mode 100644
index 160df578d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes
deleted file mode 100644
index b4e358061..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
deleted file mode 100644
index 0fcc37bce..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev
deleted file mode 100644
index c053e3f5f..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/packed-refs
deleted file mode 100644
index 2d08bcc8b..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/packed-refs
+++ /dev/null
@@ -1,3 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/COMMITMESSAGE b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/COMMITMESSAGE
deleted file mode 100644
index e69de29bb..000000000
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/FETCH_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/FETCH_HEAD
deleted file mode 100644
index cf9cca57e..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/FETCH_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	not-for-merge	branch 'main' of ../../submodules_target
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/HEAD
deleted file mode 100644
index 638398fea..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/ORIG_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/ORIG_HEAD
deleted file mode 100644
index d4581f1ba..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/ORIG_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-e9a899083a7e2b25d7a41e69463ce083bf9ef6ef
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/config
deleted file mode 100644
index c86e399f8..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/config
+++ /dev/null
@@ -1,11 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-	worktree = ../../../sm_changed_untracked_file
-[remote "origin"]
-	url = ../../submodules_target
-	fetch = +refs/heads/*:refs/remotes/origin/*
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/description
deleted file mode 100644
index 893e5cad2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/index
deleted file mode 100644
index a86c55711..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/info/exclude
deleted file mode 100644
index f00680973..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/info/refs
deleted file mode 100644
index d904244d5..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/info/refs
+++ /dev/null
@@ -1,2 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/info/commit-graph
deleted file mode 100644
index e0b221014..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/info/packs
deleted file mode 100644
index 3c8642f9a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
-P pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx
deleted file mode 100644
index 160df578d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes
deleted file mode 100644
index b4e358061..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
deleted file mode 100644
index 0fcc37bce..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev
deleted file mode 100644
index c053e3f5f..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx
deleted file mode 100644
index ec5dbafd3..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
deleted file mode 100644
index c287b9ca4..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev
deleted file mode 100644
index da062a9be..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/packed-refs
deleted file mode 100644
index 2d08bcc8b..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/packed-refs
+++ /dev/null
@@ -1,3 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/FETCH_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/FETCH_HEAD
deleted file mode 100644
index cf9cca57e..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/FETCH_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	not-for-merge	branch 'main' of ../../submodules_target
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/HEAD
deleted file mode 100644
index 638398fea..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/ORIG_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/ORIG_HEAD
deleted file mode 100644
index bab955ba6..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/ORIG_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/config
deleted file mode 100644
index 0128627bf..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/config
+++ /dev/null
@@ -1,11 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-	worktree = ../../../sm_missing_commits
-[remote "origin"]
-	url = ../../submodules_target
-	fetch = +refs/heads/*:refs/remotes/origin/*
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/description
deleted file mode 100644
index 893e5cad2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/index
deleted file mode 100644
index ae1a81398..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/info/exclude
deleted file mode 100644
index f00680973..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/info/refs
deleted file mode 100644
index 500eca25f..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/info/refs
+++ /dev/null
@@ -1,2 +0,0 @@
-8e623bcf5aeceb8af7c0f0b22b82322f6c82fd4b	refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/info/commit-graph
deleted file mode 100644
index e0b221014..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/info/packs
deleted file mode 100644
index 327a71c64..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.pack
-P pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.idx
deleted file mode 100644
index 1fc5eb0de..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.pack
deleted file mode 100644
index a41568320..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.rev
deleted file mode 100644
index 62fb503c7..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx
deleted file mode 100644
index 160df578d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes
deleted file mode 100644
index b4e358061..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
deleted file mode 100644
index 0fcc37bce..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev
deleted file mode 100644
index c053e3f5f..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/packed-refs
deleted file mode 100644
index 6ca05c44c..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/packed-refs
+++ /dev/null
@@ -1,3 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-8e623bcf5aeceb8af7c0f0b22b82322f6c82fd4b refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/FETCH_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/FETCH_HEAD
deleted file mode 100644
index cf9cca57e..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/FETCH_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	not-for-merge	branch 'main' of ../../submodules_target
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/HEAD
deleted file mode 100644
index 72f64cea5..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8e623bcf5aeceb8af7c0f0b22b82322f6c82fd4b
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/ORIG_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/ORIG_HEAD
deleted file mode 100644
index 3f8ae3f8b..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/ORIG_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-e9a899083a7e2b25d7a41e69463ce083bf9ef6ef
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/config
deleted file mode 100644
index 8f112a6a1..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/config
+++ /dev/null
@@ -1,14 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-	worktree = ../../../sm_missing_commits_detached
-[remote "origin"]
-	url = ../../submodules_target
-	fetch = +refs/heads/*:refs/remotes/origin/*
-[branch "main"]
-	remote = origin
-	merge = refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/description
deleted file mode 100644
index 893e5cad2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/index
deleted file mode 100644
index 87777da92..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/info/exclude
deleted file mode 100644
index f00680973..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/info/refs
deleted file mode 100644
index d904244d5..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/info/refs
+++ /dev/null
@@ -1,2 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/info/commit-graph
deleted file mode 100644
index e0b221014..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/info/packs
deleted file mode 100644
index 327a71c64..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.pack
-P pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.idx
deleted file mode 100644
index 1fc5eb0de..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.pack
deleted file mode 100644
index a41568320..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.rev
deleted file mode 100644
index 62fb503c7..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx
deleted file mode 100644
index 160df578d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes
deleted file mode 100644
index b4e358061..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
deleted file mode 100644
index 0fcc37bce..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev
deleted file mode 100644
index c053e3f5f..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/packed-refs
deleted file mode 100644
index 2d08bcc8b..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/packed-refs
+++ /dev/null
@@ -1,3 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/FETCH_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/FETCH_HEAD
deleted file mode 100644
index cf9cca57e..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/FETCH_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	not-for-merge	branch 'main' of ../../submodules_target
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/HEAD
deleted file mode 100644
index b870d8262..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/config
deleted file mode 100644
index 34700038f..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/config
+++ /dev/null
@@ -1,14 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-	worktree = ../../../sm_unchanged
-[remote "origin"]
-	url = ../../submodules_target
-	fetch = +refs/heads/*:refs/remotes/origin/*
-[branch "main"]
-	remote = origin
-	merge = refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/config.backup b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/config.backup
deleted file mode 100644
index ddb25ef55..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/config.backup
+++ /dev/null
@@ -1,11 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-	worktree = ../../../sm_unchanged
-[remote "origin"]
-	url = ../submodules_target
-	fetch = +refs/heads/*:refs/remotes/origin/*
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/description
deleted file mode 100644
index 893e5cad2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/index
deleted file mode 100644
index fbef0aac7..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/info/exclude
deleted file mode 100644
index f00680973..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/info/refs
deleted file mode 100644
index d904244d5..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/info/refs
+++ /dev/null
@@ -1,2 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/info/commit-graph
deleted file mode 100644
index e0b221014..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/info/packs
deleted file mode 100644
index 3c8642f9a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
-P pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx
deleted file mode 100644
index 160df578d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes
deleted file mode 100644
index b4e358061..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
deleted file mode 100644
index 0fcc37bce..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev
deleted file mode 100644
index c053e3f5f..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx
deleted file mode 100644
index ec5dbafd3..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
deleted file mode 100644
index c287b9ca4..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev
deleted file mode 100644
index da062a9be..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/packed-refs
deleted file mode 100644
index 2d08bcc8b..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/packed-refs
+++ /dev/null
@@ -1,3 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/FETCH_HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/FETCH_HEAD
deleted file mode 100644
index cf9cca57e..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/FETCH_HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	not-for-merge	branch 'main' of ../../submodules_target
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/HEAD
deleted file mode 100644
index bab955ba6..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/config
deleted file mode 100644
index 81dc858b8..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/config
+++ /dev/null
@@ -1,14 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
-	worktree = ../../../sm_unchanged_detached
-[remote "origin"]
-	url = ../../submodules_target
-	fetch = +refs/heads/*:refs/remotes/origin/*
-[branch "main"]
-	remote = origin
-	merge = refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/description
deleted file mode 100644
index 893e5cad2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/index
deleted file mode 100644
index 01a102dbf..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/info/exclude
deleted file mode 100644
index f00680973..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/info/refs
deleted file mode 100644
index d904244d5..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/info/refs
+++ /dev/null
@@ -1,2 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/info/commit-graph
deleted file mode 100644
index e0b221014..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/info/packs
deleted file mode 100644
index 3c8642f9a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
-P pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx
deleted file mode 100644
index 160df578d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes
deleted file mode 100644
index b4e358061..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
deleted file mode 100644
index 0fcc37bce..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev
deleted file mode 100644
index c053e3f5f..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx
deleted file mode 100644
index ec5dbafd3..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
deleted file mode 100644
index c287b9ca4..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev
deleted file mode 100644
index da062a9be..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/packed-refs
deleted file mode 100644
index 2d08bcc8b..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/packed-refs
+++ /dev/null
@@ -1,3 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/heads/main
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/remotes/origin/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/info/commit-graph
deleted file mode 100644
index ea7416d61..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/info/packs
deleted file mode 100644
index 5ce0b50c8..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.pack
-P pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.idx
deleted file mode 100644
index 605967724..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.mtimes
deleted file mode 100644
index 3b335d331..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.pack
deleted file mode 100644
index e6b8ddb87..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.rev
deleted file mode 100644
index bce72a939..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.idx
deleted file mode 100644
index 0e64238db..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.pack
deleted file mode 100644
index 60f7c5c0d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.rev
deleted file mode 100644
index 7742b9522..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/packed-refs
deleted file mode 100644
index 4db97287a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/packed-refs
+++ /dev/null
@@ -1,2 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-8a303a1d530d9d4e9f31002d4c9d1d8f1cd78940 refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-gitmodules b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-gitmodules
deleted file mode 100644
index 82237af57..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-gitmodules
+++ /dev/null
@@ -1,30 +0,0 @@
-[submodule "sm_changed_file"]
-	path = sm_changed_file
-	url = ..\\submodules_target
-[submodule "sm_missing_commits"]
-	path = sm_missing_commits
-	url = ..\\submodules_target
-[submodule "sm_changed_head"]
-	path = sm_changed_head
-	url = ..\\submodules_target
-[submodule "sm_changed_index"]
-	path = sm_changed_index
-	url = ..\\submodules_target
-[submodule "sm_changed_untracked_file"]
-	path = sm_changed_untracked_file
-	url = ..\\submodules_target
-[submodule "sm_unchanged"]
-	path = sm_unchanged
-	url = ..\\submodules_target
-[submodule "sm_unchanged_detached"]
-	path = sm_unchanged_detached
-	url = ..\\submodules_target
-[submodule "sm_missing_commits_detached"]
-	path = sm_missing_commits_detached
-	url = ..\\submodules_target
-[submodule "sm_added_and_uncommitted"]
-	path = sm_added_and_uncommitted
-	url = ..\\submodules_target
-[submodule "sm_gitmodules_only"]
-	path = sm_gitmodules_only
-	url = ..\\submodules_target
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/README.txt
deleted file mode 100644
index 4333cafa9..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is the target for "submodules" submodule links.
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/dot-git b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/dot-git
deleted file mode 100644
index 4580fd5f8..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/dot-git
+++ /dev/null
@@ -1 +0,0 @@
-gitdir: ../.git/modules/sm_added_and_uncommitted
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/file_to_modify b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/file_to_modify
deleted file mode 100644
index 61c56af21..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/file_to_modify
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a file to modify in submodules.
-It has some history.
-You can add more changes if needed.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/README.txt
deleted file mode 100644
index 4333cafa9..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is the target for "submodules" submodule links.
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/dot-git b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/dot-git
deleted file mode 100644
index 88871e13a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/dot-git
+++ /dev/null
@@ -1 +0,0 @@
-gitdir: ../.git/modules/sm_changed_file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/file_to_modify b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/file_to_modify
deleted file mode 100644
index 998c8314e..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/file_to_modify
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a file to modify in submodules.
-It has some history.
-You can add more changes if needed.
-In this case, the file is changed in the working directory.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/README.txt
deleted file mode 100644
index 4333cafa9..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is the target for "submodules" submodule links.
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/dot-git b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/dot-git
deleted file mode 100644
index d42c6077e..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/dot-git
+++ /dev/null
@@ -1 +0,0 @@
-gitdir: ../.git/modules/sm_changed_head
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/file_to_modify b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/file_to_modify
deleted file mode 100644
index 9effc038a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/file_to_modify
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a file to modify in submodules.
-It has some history.
-You can add more changes if needed.
-This one has been changed and the change has been committed to HEAD.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/README.txt
deleted file mode 100644
index 4333cafa9..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is the target for "submodules" submodule links.
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/dot-git b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/dot-git
deleted file mode 100644
index 1bcb38727..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/dot-git
+++ /dev/null
@@ -1 +0,0 @@
-gitdir: ../.git/modules/sm_changed_index
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/file_to_modify b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/file_to_modify
deleted file mode 100644
index 5d65df931..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/file_to_modify
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a file to modify in submodules.
-It has some history.
-You can add more changes if needed.
-Here the file has staged changes in the submodule.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/README.txt
deleted file mode 100644
index 4333cafa9..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is the target for "submodules" submodule links.
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/dot-git b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/dot-git
deleted file mode 100644
index d97e616ec..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/dot-git
+++ /dev/null
@@ -1 +0,0 @@
-gitdir: ../.git/modules/sm_changed_untracked_file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/file_is_untracked b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/file_is_untracked
deleted file mode 100644
index 07f5e9cca..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/file_is_untracked
+++ /dev/null
@@ -1 +0,0 @@
-This file is untracked in a submodule.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/file_to_modify b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/file_to_modify
deleted file mode 100644
index 61c56af21..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/file_to_modify
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a file to modify in submodules.
-It has some history.
-You can add more changes if needed.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/README.txt
deleted file mode 100644
index 3cdd5cfaf..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-his is the target for "submodules" submodule links.
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/dot-git b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/dot-git
deleted file mode 100644
index 9bf8d19c2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/dot-git
+++ /dev/null
@@ -1 +0,0 @@
-gitdir: ../.git/modules/sm_missing_commits
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/file_to_modify b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/file_to_modify
deleted file mode 100644
index 1809ba67a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/file_to_modify
+++ /dev/null
@@ -1,2 +0,0 @@
-This is a file to modify in submodules.
-It has some history.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/README.txt
deleted file mode 100644
index 3cdd5cfaf..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-his is the target for "submodules" submodule links.
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/dot-git b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/dot-git
deleted file mode 100644
index 00f4d68e7..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/dot-git
+++ /dev/null
@@ -1 +0,0 @@
-gitdir: ../.git/modules/sm_missing_commits_detached
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/file_to_modify b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/file_to_modify
deleted file mode 100644
index 1809ba67a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/file_to_modify
+++ /dev/null
@@ -1,2 +0,0 @@
-This is a file to modify in submodules.
-It has some history.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/README.txt
deleted file mode 100644
index 4333cafa9..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is the target for "submodules" submodule links.
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/dot-git b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/dot-git
deleted file mode 100644
index ea454dbc7..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/dot-git
+++ /dev/null
@@ -1 +0,0 @@
-gitdir: ../.git/modules/sm_unchanged
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/file_to_modify b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/file_to_modify
deleted file mode 100644
index 61c56af21..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/file_to_modify
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a file to modify in submodules.
-It has some history.
-You can add more changes if needed.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/README.txt
deleted file mode 100644
index 4333cafa9..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is the target for "submodules" submodule links.
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/dot-git b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/dot-git
deleted file mode 100644
index b71cae6d0..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/dot-git
+++ /dev/null
@@ -1 +0,0 @@
-gitdir: ../.git/modules/sm_unchanged_detached
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/file_to_modify b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/file_to_modify
deleted file mode 100644
index 61c56af21..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/file_to_modify
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a file to modify in submodules.
-It has some history.
-You can add more changes if needed.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/README.txt b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/README.txt
deleted file mode 100644
index 4333cafa9..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is the target for "submodules" submodule links.
\ No newline at end of file
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/COMMITMESSAGE b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/COMMITMESSAGE
deleted file mode 100644
index e69de29bb..000000000
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/HEAD b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/HEAD
deleted file mode 100644
index 638398fea..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-ref: refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/config b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/config
deleted file mode 100644
index a1c2d0bb1..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/config
+++ /dev/null
@@ -1,7 +0,0 @@
-[core]
-	repositoryformatversion = 0
-	filemode = false
-	bare = false
-	logallrefupdates = true
-	symlinks = false
-	ignorecase = true
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/description b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/description
deleted file mode 100644
index 893e5cad2..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/index b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/index
deleted file mode 100644
index ebd19dcbd..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/index and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/info/exclude b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/info/exclude
deleted file mode 100644
index f00680973..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/info/exclude
+++ /dev/null
@@ -1,6 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/info/refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/info/refs
deleted file mode 100644
index 449a12b01..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/info/refs
+++ /dev/null
@@ -1 +0,0 @@
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc	refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/info/commit-graph b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/info/commit-graph
deleted file mode 100644
index e0b221014..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/info/commit-graph and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/info/packs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/info/packs
deleted file mode 100644
index 3c8642f9a..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/info/packs
+++ /dev/null
@@ -1,3 +0,0 @@
-P pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
-P pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
-
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx
deleted file mode 100644
index 160df578d..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes
deleted file mode 100644
index b4e358061..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack
deleted file mode 100644
index 0fcc37bce..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev
deleted file mode 100644
index c053e3f5f..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx
deleted file mode 100644
index ec5dbafd3..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack
deleted file mode 100644
index c287b9ca4..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev
deleted file mode 100644
index da062a9be..000000000
Binary files a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev and /dev/null differ
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/packed-refs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/packed-refs
deleted file mode 100644
index 6fad0aa27..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/packed-refs
+++ /dev/null
@@ -1,2 +0,0 @@
-# pack-refs with: peeled fully-peeled sorted 
-8bc132afeabc5cbf67bdaf4f92c3e391472a27dc refs/heads/main
diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/file_to_modify b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/file_to_modify
deleted file mode 100644
index 61c56af21..000000000
--- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/file_to_modify
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a file to modify in submodules.
-It has some history.
-You can add more changes if needed.
diff --git a/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs b/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs
index 40b8a3268..d8578adaa 100644
--- a/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs
+++ b/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs
@@ -58,7 +58,8 @@ IPropertySet ILocalRepository.GetProperties(string[] properties, string relative
     {
         relativePath = relativePath.Replace('\\', '/');
         var result = new ValueSet();
-        CommitWrapper? latestCommit = null;
+
+        (CommitWrapper? commit, bool alreadyFetched) latestCommit = (null, false);
 
         var repository = OpenRepository();
 
@@ -68,50 +69,21 @@ IPropertySet ILocalRepository.GetProperties(string[] properties, string relative
             return result;
         }
 
+        // If this repo wasn't fetched from the cache, we'll need to dispose of it at the end of the method.
+        using var repositoryCleanup = (_repositoryCache is null) ? repository : null;
+
         foreach (var propName in properties)
         {
             switch (propName)
             {
                 case "System.VersionControl.LastChangeMessage":
-                    latestCommit ??= FindLatestCommit(relativePath, repository);
-                    if (latestCommit is not null)
-                    {
-                        result.Add(propName, latestCommit.MessageShort);
-                    }
-
-                    break;
                 case "System.VersionControl.LastChangeAuthorName":
-                    latestCommit ??= FindLatestCommit(relativePath, repository);
-                    if (latestCommit is not null)
-                    {
-                        result.Add(propName, latestCommit.AuthorName);
-                    }
-
-                    break;
                 case "System.VersionControl.LastChangeDate":
-                    latestCommit ??= FindLatestCommit(relativePath, repository);
-                    if (latestCommit is not null)
-                    {
-                        result.Add(propName, latestCommit.AuthorWhen);
-                    }
-
-                    break;
                 case "System.VersionControl.LastChangeAuthorEmail":
-                    latestCommit ??= FindLatestCommit(relativePath, repository);
-                    if (latestCommit is not null)
-                    {
-                        result.Add(propName, latestCommit.AuthorEmail);
-                    }
-
-                    break;
                 case "System.VersionControl.LastChangeID":
-                    latestCommit ??= FindLatestCommit(relativePath, repository);
-                    if (latestCommit is not null)
-                    {
-                        result.Add(propName, latestCommit.Sha);
-                    }
-
+                    AddLatestCommitProperty(result, relativePath, propName, repository, ref latestCommit);
                     break;
+
                 case "System.VersionControl.Status":
                     result.Add(propName, GetStatus(relativePath, repository));
                     break;
@@ -131,6 +103,37 @@ IPropertySet ILocalRepository.GetProperties(string[] properties, string relative
         return result;
     }
 
+    private void AddLatestCommitProperty(ValueSet result, string relativePath, string propName, RepositoryWrapper repository, ref (CommitWrapper? commit, bool alreadyFetched) latestCommit)
+    {
+        if (!latestCommit.alreadyFetched)
+        {
+            latestCommit.commit = FindLatestCommit(relativePath, repository);
+            latestCommit.alreadyFetched = true;
+        }
+
+        if (latestCommit.commit is not null)
+        {
+            switch (propName)
+            {
+                case "System.VersionControl.LastChangeMessage":
+                    result.Add(propName, latestCommit.commit.MessageShort);
+                    break;
+                case "System.VersionControl.LastChangeAuthorName":
+                    result.Add(propName, latestCommit.commit.AuthorName);
+                    break;
+                case "System.VersionControl.LastChangeDate":
+                    result.Add(propName, latestCommit.commit.AuthorWhen);
+                    break;
+                case "System.VersionControl.LastChangeAuthorEmail":
+                    result.Add(propName, latestCommit.commit.AuthorEmail);
+                    break;
+                case "System.VersionControl.LastChangeID":
+                    result.Add(propName, latestCommit.commit.Sha);
+                    break;
+            }
+        }
+    }
+
     public IPropertySet GetProperties(string[] properties, string relativePath)
     {
         return ((ILocalRepository)this).GetProperties(properties, relativePath);
@@ -162,6 +165,13 @@ public IPropertySet GetProperties(string[] properties, string relativePath)
 
     private CommitWrapper? FindLatestCommit(string relativePath, RepositoryWrapper repository)
     {
-        return repository.FindLastCommit(relativePath);
+        try
+        {
+            return repository.FindLastCommit(relativePath);
+        }
+        catch
+        {
+            return null;
+        }
     }
 }
diff --git a/extensions/GitExtension/FileExplorerGitIntegration/Models/RepositoryWrapper.cs b/extensions/GitExtension/FileExplorerGitIntegration/Models/RepositoryWrapper.cs
index 7d5ddd416..d4314948a 100644
--- a/extensions/GitExtension/FileExplorerGitIntegration/Models/RepositoryWrapper.cs
+++ b/extensions/GitExtension/FileExplorerGitIntegration/Models/RepositoryWrapper.cs
@@ -298,6 +298,7 @@ internal void Dispose(bool disposing)
             {
                 _repo.Dispose();
                 _repoLock.Dispose();
+                _statusCache.Dispose();
             }
         }
 
diff --git a/extensions/GitExtension/FileExplorerGitIntegration/Models/ThrottledTask.cs b/extensions/GitExtension/FileExplorerGitIntegration/Models/ThrottledTask.cs
index a06d04bf4..dffae6e5c 100644
--- a/extensions/GitExtension/FileExplorerGitIntegration/Models/ThrottledTask.cs
+++ b/extensions/GitExtension/FileExplorerGitIntegration/Models/ThrottledTask.cs
@@ -29,7 +29,7 @@ public ThrottledTask(Action action, TimeSpan interval)
         _interval = interval;
     }
 
-    // The first time Run is called, create a task to invoke _action, and then delay for _interval as a "cooldown".
+    // The first time Run is called, wait until new requests stop getting queued, checking every _interval, then create a task to invoke _action.
     // If Run is not called again while the task is active (during the action or cooldown)
     //   then the task exits normally and resets state back to initial.
     // Otherwise, if Run is called again while the task is active,
@@ -48,11 +48,29 @@ public void Run(CancellationToken cancellationToken = default)
             _currentTask = Task.Run(
                 async () =>
                 {
-                    bool shouldContinue = true;
-                    while (shouldContinue)
+                    bool runAgain = true;
+                    while (runAgain)
                     {
+                        bool waitAgain = false;
+                        do
+                        {
+                            await Task.Delay(_interval, cancellationToken);
+                            lock (_lock)
+                            {
+                                if (_shouldQueue)
+                                {
+                                    _shouldQueue = false;
+                                    waitAgain = true;
+                                }
+                                else
+                                {
+                                    waitAgain = false;
+                                }
+                            }
+                        }
+                        while (!waitAgain);
+
                         _action.Invoke();
-                        await Task.Delay(_interval, cancellationToken);
                         lock (_lock)
                         {
                             if (_shouldQueue)
@@ -61,7 +79,7 @@ public void Run(CancellationToken cancellationToken = default)
                             }
                             else
                             {
-                                shouldContinue = false;
+                                runAgain = false;
                                 _currentTask = null;
                             }
                         }