From 4dcb9dec653e2d91e8f9040f1d9e5621f86ae171 Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Fri, 6 Sep 2024 21:08:19 -0700 Subject: [PATCH 01/11] Delay Git status runner and clean up Git tests --- .github/workflows/DevHome-CI.yml | 6 +- .../GitSubmoduleUnitTests.cs | 3 +- .../Models/GitLocalRepository.cs | 118 ++++++++++-------- .../Models/RepositoryWrapper.cs | 1 + .../Models/ThrottledTask.cs | 28 ++++- 5 files changed, 94 insertions(+), 62 deletions(-) diff --git a/.github/workflows/DevHome-CI.yml b/.github/workflows/DevHome-CI.yml index 3bc86b7f1c..6790e44636 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/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs index ab6011f6f7..76f44b9820 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs @@ -27,13 +27,12 @@ public static void ClassInitialize(TestContext testContext) [ClassCleanup] public static void ClassCleanup() { + _repo = null; if (_sandbox is not null) { _sandbox.Cleanup(); _sandbox = null; } - - _repo = null; } [TestMethod] diff --git a/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs b/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs index 40b8a32689..8ff2791ce4 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs @@ -68,62 +68,72 @@ IPropertySet ILocalRepository.GetProperties(string[] properties, string relative return result; } - foreach (var propName in properties) + try + { + 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); + } + + break; + case "System.VersionControl.Status": + result.Add(propName, GetStatus(relativePath, repository)); + break; + + case "System.VersionControl.CurrentFolderStatus": + var folderStatus = GetFolderStatus(relativePath, repository); + if (folderStatus is not null) + { + result.Add(propName, folderStatus); + } + + break; + } + } + } + finally { - switch (propName) + if (_repositoryCache is null) { - 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); - } - - break; - case "System.VersionControl.Status": - result.Add(propName, GetStatus(relativePath, repository)); - break; - - case "System.VersionControl.CurrentFolderStatus": - var folderStatus = GetFolderStatus(relativePath, repository); - if (folderStatus is not null) - { - result.Add(propName, folderStatus); - } - - break; + repository.Dispose(); } } diff --git a/extensions/GitExtension/FileExplorerGitIntegration/Models/RepositoryWrapper.cs b/extensions/GitExtension/FileExplorerGitIntegration/Models/RepositoryWrapper.cs index 7d5ddd4167..d4314948a9 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 a06d04bf4d..dffae6e5c4 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; } } From fddadaeaf3c4c1f46d6154e60574abee770d2525 Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Fri, 6 Sep 2024 21:55:18 -0700 Subject: [PATCH 02/11] Add to Test.ps1 --- Test.ps1 | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Test.ps1 b/Test.ps1 index 3964c17c2e..fcef74634e 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 { From b518f27066bbd7e5065c776381578f2501acc5f9 Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Fri, 6 Sep 2024 22:44:16 -0700 Subject: [PATCH 03/11] Try to diagnose deployment failures in CI pipeline --- .../GitSubmoduleUnitTests.cs | 4 ++-- .../SandboxHelper.cs | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs index 76f44b9820..08afa37052 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs @@ -19,8 +19,8 @@ public class GitSubmoduleUnitTests public static void ClassInitialize(TestContext testContext) { _sandbox = new(); - var repoPath = _sandbox.CreateSandbox("submodules"); - _sandbox.CreateSandbox("submodules_target"); + var repoPath = _sandbox.CreateSandbox("submodules", testContext); + _sandbox.CreateSandbox("submodules_target", testContext); _repo = new GitLocalRepository(repoPath); } diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/SandboxHelper.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/SandboxHelper.cs index 55019279d9..a3a17e6fa3 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/SandboxHelper.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/SandboxHelper.cs @@ -39,26 +39,35 @@ public void Cleanup() } } - public string CreateSandbox(string directory) + public string CreateSandbox(string directory, TestContext testContext) { var source = new DirectoryInfo(Path.Combine(ResourcesDirectory.FullName, directory)); var target = new DirectoryInfo(Path.Combine(DeployedDirectory.FullName, directory)); - CopyRecursive(source, target); + testContext.WriteLine($"Copying repository from {source.FullName} to {target.FullName}."); + var count = CopyRecursive(source, target); + testContext.WriteLine($"Copied {count} items."); + Assert.AreEqual(source.GetDirectories().Length, target.GetDirectories().Length); + Assert.AreEqual(source.GetFiles().Length, target.GetFiles().Length); return target.FullName; } - private void CopyRecursive(DirectoryInfo source, DirectoryInfo target) + private int CopyRecursive(DirectoryInfo source, DirectoryInfo target) { + int copiedFiles = 0; foreach (var dir in source.GetDirectories()) { + ++copiedFiles; CopyRecursive(dir, target.CreateSubdirectory(FixName(dir.Name))); } foreach (var file in source.GetFiles()) { + ++copiedFiles; file.CopyTo(Path.Combine(target.FullName, FixName(file.Name))); } + + return copiedFiles; } private string FixName(string name) From b22a6bdc24427602790086d59d88ad2f120bbec0 Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Mon, 9 Sep 2024 14:36:26 -0700 Subject: [PATCH 04/11] Remove checked-in submodule tests from resources. Clone and modify test repo on the fly. --- ...FileExplorerGitIntegration.UnitTest.csproj | 13 +- .../GitSubmoduleUnitTests.cs | 165 ++++++++++++++---- .../SandboxHelper.cs | 78 --------- .../resources/.gitattributes | 5 - .../resources/.gitignore | 4 - .../resources/resources_readme.txt | 3 - .../resources/submodules/README.txt | 3 - .../submodules/dot-git/COMMITMESSAGE | 0 .../resources/submodules/dot-git/HEAD | 1 - .../resources/submodules/dot-git/ORIG_HEAD | 1 - .../resources/submodules/dot-git/config | 34 ---- .../resources/submodules/dot-git/description | 1 - .../resources/submodules/dot-git/index | Bin 974 -> 0 bytes .../resources/submodules/dot-git/info/exclude | 6 - .../resources/submodules/dot-git/info/refs | 1 - .../modules/sm_added_and_uncommitted/HEAD | 1 - .../modules/sm_added_and_uncommitted/config | 14 -- .../sm_added_and_uncommitted/description | 1 - .../modules/sm_added_and_uncommitted/index | Bin 225 -> 0 bytes .../sm_added_and_uncommitted/info/exclude | 6 - .../sm_added_and_uncommitted/info/refs | 3 - .../objects/info/commit-graph | Bin 1412 -> 0 bytes .../objects/info/packs | 3 - ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx | Bin 1100 -> 0 bytes ...7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes | Bin 56 -> 0 bytes ...1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack | Bin 41 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev | Bin 56 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx | Bin 1492 -> 0 bytes ...30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack | Bin 1466 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev | Bin 112 -> 0 bytes .../sm_added_and_uncommitted/packed-refs | 3 - .../refs/remotes/origin/HEAD | 1 - .../modules/sm_changed_file/COMMITMESSAGE | 0 .../modules/sm_changed_file/FETCH_HEAD | 1 - .../dot-git/modules/sm_changed_file/HEAD | 1 - .../dot-git/modules/sm_changed_file/ORIG_HEAD | 1 - .../dot-git/modules/sm_changed_file/config | 11 -- .../modules/sm_changed_file/description | 1 - .../dot-git/modules/sm_changed_file/index | Bin 225 -> 0 bytes .../modules/sm_changed_file/info/exclude | 6 - .../dot-git/modules/sm_changed_file/info/refs | 2 - .../sm_changed_file/objects/info/commit-graph | Bin 1412 -> 0 bytes .../sm_changed_file/objects/info/packs | 3 - ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx | Bin 1100 -> 0 bytes ...7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes | Bin 56 -> 0 bytes ...1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack | Bin 41 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev | Bin 56 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx | Bin 1492 -> 0 bytes ...30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack | Bin 1466 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev | Bin 112 -> 0 bytes .../modules/sm_changed_file/packed-refs | 3 - .../modules/sm_changed_head/COMMITMESSAGE | 0 .../modules/sm_changed_head/COMMIT_EDITMSG | 1 - .../modules/sm_changed_head/FETCH_HEAD | 1 - .../dot-git/modules/sm_changed_head/HEAD | 1 - .../dot-git/modules/sm_changed_head/ORIG_HEAD | 1 - .../dot-git/modules/sm_changed_head/config | 11 -- .../modules/sm_changed_head/description | 1 - .../dot-git/modules/sm_changed_head/index | Bin 225 -> 0 bytes .../modules/sm_changed_head/info/exclude | 6 - .../dot-git/modules/sm_changed_head/info/refs | 2 - .../sm_changed_head/objects/info/commit-graph | Bin 1472 -> 0 bytes .../sm_changed_head/objects/info/packs | 3 - ...01333783142a88b5199747b1d4aa993fd8df68.idx | Bin 1688 -> 0 bytes ...1333783142a88b5199747b1d4aa993fd8df68.pack | Bin 2129 -> 0 bytes ...01333783142a88b5199747b1d4aa993fd8df68.rev | Bin 140 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx | Bin 1100 -> 0 bytes ...7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes | Bin 56 -> 0 bytes ...1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack | Bin 41 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev | Bin 56 -> 0 bytes .../modules/sm_changed_head/packed-refs | 3 - .../modules/sm_changed_index/COMMITMESSAGE | 0 .../modules/sm_changed_index/FETCH_HEAD | 1 - .../dot-git/modules/sm_changed_index/HEAD | 1 - .../modules/sm_changed_index/ORIG_HEAD | 1 - .../dot-git/modules/sm_changed_index/config | 11 -- .../modules/sm_changed_index/description | 1 - .../dot-git/modules/sm_changed_index/index | Bin 206 -> 0 bytes .../modules/sm_changed_index/info/exclude | 6 - .../modules/sm_changed_index/info/refs | 2 - .../objects/info/commit-graph | Bin 1412 -> 0 bytes .../sm_changed_index/objects/info/packs | 3 - ...77343301131983b67a949d28b0995936863afe.idx | Bin 1520 -> 0 bytes ...7343301131983b67a949d28b0995936863afe.pack | Bin 1505 -> 0 bytes ...77343301131983b67a949d28b0995936863afe.rev | Bin 116 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx | Bin 1100 -> 0 bytes ...7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes | Bin 56 -> 0 bytes ...1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack | Bin 41 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev | Bin 56 -> 0 bytes .../modules/sm_changed_index/packed-refs | 3 - .../sm_changed_untracked_file/COMMITMESSAGE | 0 .../sm_changed_untracked_file/FETCH_HEAD | 1 - .../modules/sm_changed_untracked_file/HEAD | 1 - .../sm_changed_untracked_file/ORIG_HEAD | 1 - .../modules/sm_changed_untracked_file/config | 11 -- .../sm_changed_untracked_file/description | 1 - .../modules/sm_changed_untracked_file/index | Bin 206 -> 0 bytes .../sm_changed_untracked_file/info/exclude | 6 - .../sm_changed_untracked_file/info/refs | 2 - .../objects/info/commit-graph | Bin 1412 -> 0 bytes .../objects/info/packs | 3 - ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx | Bin 1100 -> 0 bytes ...7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes | Bin 56 -> 0 bytes ...1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack | Bin 41 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev | Bin 56 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx | Bin 1492 -> 0 bytes ...30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack | Bin 1466 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev | Bin 112 -> 0 bytes .../sm_changed_untracked_file/packed-refs | 3 - .../modules/sm_missing_commits/FETCH_HEAD | 1 - .../dot-git/modules/sm_missing_commits/HEAD | 1 - .../modules/sm_missing_commits/ORIG_HEAD | 1 - .../dot-git/modules/sm_missing_commits/config | 11 -- .../modules/sm_missing_commits/description | 1 - .../dot-git/modules/sm_missing_commits/index | Bin 225 -> 0 bytes .../modules/sm_missing_commits/info/exclude | 6 - .../modules/sm_missing_commits/info/refs | 2 - .../objects/info/commit-graph | Bin 1412 -> 0 bytes .../sm_missing_commits/objects/info/packs | 3 - ...f76f1544d89a1d743260bac56cb63a5d2e5f89.idx | Bin 1492 -> 0 bytes ...76f1544d89a1d743260bac56cb63a5d2e5f89.pack | Bin 1465 -> 0 bytes ...f76f1544d89a1d743260bac56cb63a5d2e5f89.rev | Bin 112 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx | Bin 1100 -> 0 bytes ...7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes | Bin 56 -> 0 bytes ...1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack | Bin 41 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev | Bin 56 -> 0 bytes .../modules/sm_missing_commits/packed-refs | 3 - .../sm_missing_commits_detached/FETCH_HEAD | 1 - .../modules/sm_missing_commits_detached/HEAD | 1 - .../sm_missing_commits_detached/ORIG_HEAD | 1 - .../sm_missing_commits_detached/config | 14 -- .../sm_missing_commits_detached/description | 1 - .../modules/sm_missing_commits_detached/index | Bin 225 -> 0 bytes .../sm_missing_commits_detached/info/exclude | 6 - .../sm_missing_commits_detached/info/refs | 2 - .../objects/info/commit-graph | Bin 1412 -> 0 bytes .../objects/info/packs | 3 - ...f76f1544d89a1d743260bac56cb63a5d2e5f89.idx | Bin 1492 -> 0 bytes ...76f1544d89a1d743260bac56cb63a5d2e5f89.pack | Bin 1465 -> 0 bytes ...f76f1544d89a1d743260bac56cb63a5d2e5f89.rev | Bin 112 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx | Bin 1100 -> 0 bytes ...7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes | Bin 56 -> 0 bytes ...1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack | Bin 41 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev | Bin 56 -> 0 bytes .../sm_missing_commits_detached/packed-refs | 3 - .../dot-git/modules/sm_unchanged/FETCH_HEAD | 1 - .../dot-git/modules/sm_unchanged/HEAD | 1 - .../dot-git/modules/sm_unchanged/config | 14 -- .../modules/sm_unchanged/config.backup | 11 -- .../dot-git/modules/sm_unchanged/description | 1 - .../dot-git/modules/sm_unchanged/index | Bin 225 -> 0 bytes .../dot-git/modules/sm_unchanged/info/exclude | 6 - .../dot-git/modules/sm_unchanged/info/refs | 2 - .../sm_unchanged/objects/info/commit-graph | Bin 1412 -> 0 bytes .../modules/sm_unchanged/objects/info/packs | 3 - ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx | Bin 1100 -> 0 bytes ...7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes | Bin 56 -> 0 bytes ...1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack | Bin 41 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev | Bin 56 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx | Bin 1492 -> 0 bytes ...30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack | Bin 1466 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev | Bin 112 -> 0 bytes .../dot-git/modules/sm_unchanged/packed-refs | 3 - .../modules/sm_unchanged_detached/FETCH_HEAD | 1 - .../modules/sm_unchanged_detached/HEAD | 1 - .../modules/sm_unchanged_detached/config | 14 -- .../modules/sm_unchanged_detached/description | 1 - .../modules/sm_unchanged_detached/index | Bin 225 -> 0 bytes .../sm_unchanged_detached/info/exclude | 6 - .../modules/sm_unchanged_detached/info/refs | 2 - .../objects/info/commit-graph | Bin 1412 -> 0 bytes .../sm_unchanged_detached/objects/info/packs | 3 - ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx | Bin 1100 -> 0 bytes ...7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes | Bin 56 -> 0 bytes ...1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack | Bin 41 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev | Bin 56 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx | Bin 1492 -> 0 bytes ...30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack | Bin 1466 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev | Bin 112 -> 0 bytes .../modules/sm_unchanged_detached/packed-refs | 3 - .../dot-git/objects/info/commit-graph | Bin 1292 -> 0 bytes .../submodules/dot-git/objects/info/packs | 3 - ...070ee5deec36e3d78ff2b8c5ea26e01e751199.idx | Bin 1380 -> 0 bytes ...ee5deec36e3d78ff2b8c5ea26e01e751199.mtimes | Bin 96 -> 0 bytes ...70ee5deec36e3d78ff2b8c5ea26e01e751199.pack | Bin 559 -> 0 bytes ...070ee5deec36e3d78ff2b8c5ea26e01e751199.rev | Bin 96 -> 0 bytes ...6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.idx | Bin 1380 -> 0 bytes ...fc56e876eba853e5d5e1cfdb2dcd012ae2cee.pack | Bin 1348 -> 0 bytes ...6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.rev | Bin 96 -> 0 bytes .../resources/submodules/dot-git/packed-refs | 2 - .../resources/submodules/dot-gitmodules | 30 ---- .../sm_added_and_uncommitted/README.txt | 1 - .../sm_added_and_uncommitted/dot-git | 1 - .../sm_added_and_uncommitted/file_to_modify | 3 - .../submodules/sm_changed_file/README.txt | 1 - .../submodules/sm_changed_file/dot-git | 1 - .../submodules/sm_changed_file/file_to_modify | 4 - .../submodules/sm_changed_head/README.txt | 1 - .../submodules/sm_changed_head/dot-git | 1 - .../submodules/sm_changed_head/file_to_modify | 4 - .../submodules/sm_changed_index/README.txt | 1 - .../submodules/sm_changed_index/dot-git | 1 - .../sm_changed_index/file_to_modify | 4 - .../sm_changed_untracked_file/README.txt | 1 - .../sm_changed_untracked_file/dot-git | 1 - .../file_is_untracked | 1 - .../sm_changed_untracked_file/file_to_modify | 3 - .../submodules/sm_missing_commits/README.txt | 1 - .../submodules/sm_missing_commits/dot-git | 1 - .../sm_missing_commits/file_to_modify | 2 - .../sm_missing_commits_detached/README.txt | 1 - .../sm_missing_commits_detached/dot-git | 1 - .../file_to_modify | 2 - .../submodules/sm_unchanged/README.txt | 1 - .../resources/submodules/sm_unchanged/dot-git | 1 - .../submodules/sm_unchanged/file_to_modify | 3 - .../sm_unchanged_detached/README.txt | 1 - .../submodules/sm_unchanged_detached/dot-git | 1 - .../sm_unchanged_detached/file_to_modify | 3 - .../resources/submodules_target/README.txt | 1 - .../submodules_target/dot-git/COMMITMESSAGE | 0 .../resources/submodules_target/dot-git/HEAD | 1 - .../submodules_target/dot-git/config | 7 - .../submodules_target/dot-git/description | 1 - .../resources/submodules_target/dot-git/index | Bin 225 -> 0 bytes .../submodules_target/dot-git/info/exclude | 6 - .../submodules_target/dot-git/info/refs | 1 - .../dot-git/objects/info/commit-graph | Bin 1412 -> 0 bytes .../dot-git/objects/info/packs | 3 - ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx | Bin 1100 -> 0 bytes ...7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes | Bin 56 -> 0 bytes ...1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack | Bin 41 -> 0 bytes ...b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev | Bin 56 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx | Bin 1492 -> 0 bytes ...30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack | Bin 1466 -> 0 bytes ...a30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev | Bin 112 -> 0 bytes .../submodules_target/dot-git/packed-refs | 2 - .../submodules_target/file_to_modify | 3 - 238 files changed, 129 insertions(+), 576 deletions(-) delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/SandboxHelper.cs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/.gitattributes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/.gitignore delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/resources_readme.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/COMMITMESSAGE delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/ORIG_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_added_and_uncommitted/refs/remotes/origin/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/COMMITMESSAGE delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/FETCH_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/ORIG_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_file/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/COMMITMESSAGE delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/COMMIT_EDITMSG delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/FETCH_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/ORIG_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-9201333783142a88b5199747b1d4aa993fd8df68.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_head/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/COMMITMESSAGE delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/FETCH_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/ORIG_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-2077343301131983b67a949d28b0995936863afe.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_index/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/COMMITMESSAGE delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/FETCH_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/ORIG_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_changed_untracked_file/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/FETCH_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/ORIG_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/FETCH_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/ORIG_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d0f76f1544d89a1d743260bac56cb63a5d2e5f89.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_missing_commits_detached/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/FETCH_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/config.backup delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/FETCH_HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/modules/sm_unchanged_detached/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-a1070ee5deec36e3d78ff2b8c5ea26e01e751199.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/objects/pack/pack-dc6fc56e876eba853e5d5e1cfdb2dcd012ae2cee.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-git/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/dot-gitmodules delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/dot-git delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_added_and_uncommitted/file_to_modify delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/dot-git delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_file/file_to_modify delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/dot-git delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_head/file_to_modify delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/dot-git delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_index/file_to_modify delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/dot-git delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/file_is_untracked delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_changed_untracked_file/file_to_modify delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/dot-git delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits/file_to_modify delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/dot-git delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_missing_commits_detached/file_to_modify delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/dot-git delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged/file_to_modify delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/dot-git delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules/sm_unchanged_detached/file_to_modify delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/README.txt delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/COMMITMESSAGE delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/HEAD delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/config delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/description delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/index delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/info/exclude delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/info/refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/info/commit-graph delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/info/packs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.mtimes delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-d3b1b7cf66ad317ab08fb781dba8d8ae68e1b200.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.idx delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.pack delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/objects/pack/pack-ffa30a089fdbfcfdaaea163fd2f9710ef01a00cf.rev delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/dot-git/packed-refs delete mode 100644 extensions/GitExtension/FileExplorerGitIntegration.UnitTest/resources/submodules_target/file_to_modify diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/FileExplorerGitIntegration.UnitTest.csproj b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/FileExplorerGitIntegration.UnitTest.csproj index 860681a3ae..c68acca1fd 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/FileExplorerGitIntegration.UnitTest.csproj +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/FileExplorerGitIntegration.UnitTest.csproj @@ -13,19 +13,10 @@ - - + + - - - - - - - - - \ No newline at end of file diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs index 08afa37052..c5c044ff32 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs @@ -2,41 +2,133 @@ // Licensed under the MIT License. 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 _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", testContext); - _sandbox.CreateSandbox("submodules_target", testContext); - _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(); + + // 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."); + 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() { _repo = null; - if (_sandbox is not null) + GC.Collect(2); + if (_repoPath is not null) { - _sandbox.Cleanup(); - _sandbox = null; + for (var retries = 0; retries < 3; ++retries) + { + try + { + Directory.Delete(_repoPath, true); + break; + } + catch (System.UnauthorizedAccessException) + { + Thread.Sleep(100); + } + } } } [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")] @@ -45,7 +137,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) @@ -57,55 +148,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 a3a17e6fa3..0000000000 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/SandboxHelper.cs +++ /dev/null @@ -1,78 +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 _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, TestContext testContext) - { - var source = new DirectoryInfo(Path.Combine(ResourcesDirectory.FullName, directory)); - var target = new DirectoryInfo(Path.Combine(DeployedDirectory.FullName, directory)); - testContext.WriteLine($"Copying repository from {source.FullName} to {target.FullName}."); - var count = CopyRecursive(source, target); - testContext.WriteLine($"Copied {count} items."); - - Assert.AreEqual(source.GetDirectories().Length, target.GetDirectories().Length); - Assert.AreEqual(source.GetFiles().Length, target.GetFiles().Length); - return target.FullName; - } - - private int CopyRecursive(DirectoryInfo source, DirectoryInfo target) - { - int copiedFiles = 0; - foreach (var dir in source.GetDirectories()) - { - ++copiedFiles; - CopyRecursive(dir, target.CreateSubdirectory(FixName(dir.Name))); - } - - foreach (var file in source.GetFiles()) - { - ++copiedFiles; - file.CopyTo(Path.Combine(target.FullName, FixName(file.Name))); - } - - return copiedFiles; - } - - 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 16986b4433..0000000000 --- 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 a817cf846c..0000000000 --- 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 3807fc1f84..0000000000 --- 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 a24ee880a8..0000000000 --- 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 e69de29bb2..0000000000 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 638398fea2..0000000000 --- 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 87d28f9a38..0000000000 --- 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 f209c6addb..0000000000 --- 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 893e5cad24..0000000000 --- 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 905f4c108a46fa8d6d7de2d7ca028a9640f35b63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 974 zcmZ?q402{*U|<4b?z9_w4)EwiKS{f>|GuKD#uT6!6f`b@u^1Sb{Uw5LOR4tpZC${t z;~yBb&@5&8!s!g$dg+-Zx%nxjIjO}^#c9{`-IOkg^b=51WD1qq%xsQe8zYB=wDqQyjCeFa{0Ko*Z zx(^zyf3+uOfBN3_{*w+rp6ITneuqJ#I5$2qB_%Z_J~1yPzBDg6KQ}kCq$D+kfdS}F zcg5Yy_oUs}`JdCMs{vuy0|XPu!fGx*(A?yV#JqH%$!VE6sX%og^OTbNdVt~BCG~^r z2*QvD2qut4(7cS)M45OmpK?QcDt(GeA)f1|WBSU4a22k50;7RqP|&yp#sbnN&c>&H&A58#-%^y zf*H7iTpe9}UG+*TN?>YX=78yjPg`K(3=Amdr6eBB`XmzY&u;lgiJraUeHVh9-Srvx z(lT>W<4f}6bMsR&(<(uFLxNmgfs`bJk%9r2hTMI>PbY3A8$FzGH7!l-*RvH#nzLUY XS|?f{%eQ~Q!a0m8!CT+#-Jb^l4a`do 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 a5196d1be8..0000000000 --- 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 7b89c2baeb..0000000000 --- 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 e0b221014fb90d23d35c19e6604957586168d43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412 zcmZ>E5Aa}QWMT04ba7*V02d(J2f}1=advSGfwEV)yEqy_*sL)S8bq=dAlL)KVg%Yc ziib`ZFahHWhM9rvk%n1-ejW(S3bdCdSblkckd*v|p5G^#JfEmOF8N@f7SVmsX#J}_ zG5gc^uJ@mG`0+${E%iHnN!I71-n{Pme&E9cap;~}T2zSK z^6Px(m0qrx$zfHet$KZlT&A1NgXaD7zP*3*)BWK`_aFt4t{`s_2NBK%>ksY%r5$MD z!;y9=Pew!TzTc-4w~~z>PPm$uCid&uiX=@?SVPr_q}|xCB*j?6Z6O5xm%qF&wE zMyb_A+nfU4mEnqz4C@xPJUA4jI9<!-t+R(qf@%D-v>oOj0Vwl_(;!zOsJu#ef@9VyF7?ojO^&~EyUeo>9$#9r zPU6(K4l&BGT><7F2@&F+z`3pV2PcnHvQGHzU!9XoSL+-xcrxUl5 zjUG<8nwBQ^>)DDVP1BG6jnw`)GBquK_GJEnFB<26S4^|H8}sXf^q0^F2371fXPuiF z-@n}M5c6@(f#ty4^XX8`9W?Vh_O~tuDG<>r`G0!; z?po@1`jV{AN4M%68BV>$>;U6%56R&CY)SBF;b?@la_UAURm-HSj_zd z7GrmT#p635dm*rRDh2WbfwVJ_4~$!8AkESW$y1Epz#_8;$X*Tkt^6_X234P1;mc?%aYmlPG z4EOE&#$PJSt#Z#i*!9F9$Ufmrv+s+!0TRNchEE=yid>|wpJJA^M@xn8##1HR!iRG_ zk~St8C;8n_^wQu={c`id!rfnjyoU^U93ECL`@p1N zZJ(#4c!Vh?p-H9mir1EvmkM5dD`D$A*FKx4P{Oov}PA6+SNK+~!-PO7m2E zPP-yDdyVXhBL@{TyF%Q)>|7!fa9bhF+OSzSBVhAqt-9YK(tG-L9IBp_JIUX_PW!u85j6w+6u)KID{H9vXJ zYgJF3_wW+C+}CYuS8iV{YP)<}>_N9r5>9gj{3Ha=Zn(Wl>;JcB^Nd%>aHZCE{$#XE za`&3e4GKUt5u!o!hl% zB!c%# zzFZM%-SS6?b?Ku^OYZ!ca%s+$Bvn?6Xhn5n{oN7#44+;Jb8TU(n8Vv+$k$-N!(6WN z?}7LS{xY#+7nYa=-S+Uc{!pz{xv}*5>J`dPC!$y{U+6KdzrYvoKPB{Nf33ATm*t&V z3Ue|acYod1>LPnY=8?b>r@vEooOz+7BXfcOyn*7w1*{cwj7R%y5-CqV7jSk z1*VlVTfAD&*t9;nq@u9gM15;S|Mc$Z+zg%%`OKFAbzsIR*0ASe_$$T$NbxW S{;ql@W`F5tA>RinhVuY=rLE=w 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 da062a9bef53a5041991f4b3011eb0aa9645b94d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmWIYbctYKU|@t|E+EYd#N0s41jIZ*%nrmHK+FupAixU5oIniH!w1A{K+N)gF&D@D q+kgJ9dL?Fm>1QF|2Pua0%h#92F!V0{re2o!MC$J<^{emSTn7Mf;uwPf 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 2d08bcc8b1..0000000000 --- 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 4b0a875958..0000000000 --- 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 e69de29bb2..0000000000 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 cf9cca57e8..0000000000 --- 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 638398fea2..0000000000 --- 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 d4581f1bae..0000000000 --- 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 6d80d0295e..0000000000 --- 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 893e5cad24..0000000000 --- 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 43ac442aed3c8a6fb0aeaf534f218b94199f1fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmZ?q402{*U|<5_v>Tgm^S#nafzd!QC}>;)V*zOsXX8`9W?Vh_O~tuDG<>r`E5Aa}QWMT04ba7*V02d(J2f}1=advSGfwEV)yEqy_*sL)S8bq=dAlL)KVg%Yc ziib`ZFahHWhM9rvk%n1-ejW(S3bdCdSblkckd*v|p5G^#JfEmOF8N@f7SVmsX#J}_ zG5gc^uJ@mG`0+${E%iHnN!I71-n{Pme&E9cap;~}T2zSK z^6Px(m0qrx$zfHet$KZlT&A1NgXaD7zP*3*)BWK`_aFt4t{`s_2NBK%>ksY%r5$MD z!;y9=Pew!TzTc-4w~~z>PPm$uCid&uiX=@?SVPr_q}|xCB*j?6Z6O5xm%qF&wE zMyb_A+nfU4mEnqz4C@xPJUA4jI9<!-t+R(qf@%D-v>oOj0Vwl_(;!zOsJu#ef@9VyF7?ojO^&~EyUeo>9$#9r zPU6(K4l&BGT><7F2@&F+z`3pV2PcnHvQGHzU!9XoSL+-xcrxUl5 zjUG<8nwBQ^>)DDVP1BG6jnw`)GBquK_GJEnFB<26S4^|H8}sXf^q0^F2371fXPuiF z-@n}M5c6@(f#ty4^XX8`9W?Vh_O~tuDG<>r`G0!; z?po@1`jV{AN4M%68BV>$>;U6%56R&CY)SBF;b?@la_UAURm-HSj_zd z7GrmT#p635dm*rRDh2WbfwVJ_4~$!8AkESW$y1Epz#_8;$X*Tkt^6_X234P1;mc?%aYmlPG z4EOE&#$PJSt#Z#i*!9F9$Ufmrv+s+!0TRNchEE=yid>|wpJJA^M@xn8##1HR!iRG_ zk~St8C;8n_^wQu={c`id!rfnjyoU^U93ECL`@p1N zZJ(#4c!Vh?p-H9mir1EvmkM5dD`D$A*FKx4P{Oov}PA6+SNK+~!-PO7m2E zPP-yDdyVXhBL@{TyF%Q)>|7!fa9bhF+OSzSBVhAqt-9YK(tG-L9IBp_JIUX_PW!u85j6w+6u)KID{H9vXJ zYgJF3_wW+C+}CYuS8iV{YP)<}>_N9r5>9gj{3Ha=Zn(Wl>;JcB^Nd%>aHZCE{$#XE za`&3e4GKUt5u!o!hl% zB!c%# zzFZM%-SS6?b?Ku^OYZ!ca%s+$Bvn?6Xhn5n{oN7#44+;Jb8TU(n8Vv+$k$-N!(6WN z?}7LS{xY#+7nYa=-S+Uc{!pz{xv}*5>J`dPC!$y{U+6KdzrYvoKPB{Nf33ATm*t&V z3Ue|acYod1>LPnY=8?b>r@vEooOz+7BXfcOyn*7w1*{cwj7R%y5-CqV7jSk z1*VlVTfAD&*t9;nq@u9gM15;S|Mc$Z+zg%%`OKFAbzsIR*0ASe_$$T$NbxW S{;ql@W`F5tA>RinhVuY=rLE=w 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 da062a9bef53a5041991f4b3011eb0aa9645b94d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmWIYbctYKU|@t|E+EYd#N0s41jIZ*%nrmHK+FupAixU5oIniH!w1A{K+N)gF&D@D q+kgJ9dL?Fm>1QF|2Pua0%h#92F!V0{re2o!MC$J<^{emSTn7Mf;uwPf 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 2d08bcc8b1..0000000000 --- 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 e69de29bb2..0000000000 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 69c80d9174..0000000000 --- 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 cf9cca57e8..0000000000 --- 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 b870d82622..0000000000 --- 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 a306ccd25b..0000000000 --- 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 3c6a531512..0000000000 --- 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 893e5cad24..0000000000 --- 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 98f1002dfdb48d38d1f7b36ffd68a5edf5c81e0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmZ?q402{*U|<5_v>RIt)Y6RZz-XWt6f`b@v4FIRv+=24Gp?Ters7;68ot?}ap_OF zUE5Aa}QWMT04ba7*V02d(J2f}1=advSGfwK3wyEqy_*sN0^G>BwfgJ2H`ixFrm zv6u;{b`%e67%&6l0EStB?2(39fqotc%m%cVCRl!XfRL2@g`VFhnLMAUJ}&uSpcbLE zEk)30QfpwFjq$Z9(_$*OZ4Y$mK4`T5)t;FB>3i4vPdfZ~qPv#*oxUXN^HFbJcYQzb zVUu=~k$z6oU+>e04onh=)6Y0`Pc1DfL~i+YzVk{iSIp$Fs?%1zzCf=E}8w}^uX=YsVIcY)GV0gwO!j zg>yHGdUaf$YJG`G9VNVSXT+5-b4JPYo;xG>2YT2xu2QurSabWGn*Y!>}lj zO)3@x>cNVI8`YOis-Do~_$#-|Jp17Br6o&#NpS8;Un#AUzvkU_`SMMP8j;6-uuB#n z(D6FBOyMqlXi& zrlpDfdbT1-Q)^p_pwFb%z&0D>Yg4AhRBqcI=wkZuzmeJ>N2aFb&z{Ub@I~YN?}}+Q zcVm8ikp2?-z@UoV=B#rwctr|yPwT{b!KVe(X3A*0srilf0XFiE8ce@$k|;# z#aP2_CU@#e;oOa)UftP8CTF~M>^^9;{?(qC{powx`%gOjc%r+O`klTc>+?}>UUz*z z@L`j7laYQ-(_im-{|{KK<$0g+b9%4%p2drIL`%G4*`TQVI=IS0Q@Cfr(bKbkXbCL2 zn0xxrfk^^!`Wc7rsij4Q$SuFlcV6jfAfx#V6|pX%FNPOiNG_bdPvwaI%M~*@tm?E? zuP>3ybhCNTyno)e_iui>Km6z(q#)82F&?0#t$-!3uZq)ZLH?~=h;QIi&Ht3I_%C?)@<+5pL2h=yw15NLgm>! zA#S=%KCfBV?CcIP;pF-{H`r6DtnF=3jFf4Z-#^3VNy|DluPpgkbk=_ou$VmpEILbo z#W=7WWL^N|#{kpLAz+aSET7mkfO5BhMfL%p7>K_G$d>`C{R6B@{sP6n0*mSjAZ-T} z+W{1d1j;u9#V$-@G&XM*(dyVLIo*BZl~ptCZ`{wQG@P^Y$29ZC`w|eEtO~-sS=^J#?nwyOSP$qh_z_7LEA^0Nn5p5>=KN< z3{ys|)i%`9iZz2SOo_pC8KWg-hGNp2b8~vm)AP*5d-;Bs&-42d?T@(u03a!Tush0h zPHvi4^kcZP!>(1|>F-sLt>)fpj&BuNP$XX!IY~bIX?%LXE9qMJRjSikHC9DdQ_)GT zBAyZ|>K}10a)#Je?t4npEH5m7dDry~TE-G)EXUk1@-TBC99w-ts>d>p9aZ-qA3q-z zvs)&ai44qx37d;!N893sq>Z9Y=DS4DuQ4_uT}-8AE-CcB*#kcQ&u*)8HTct4wsnw; za(g(nHlVz?&28C;^ntch6JVf(xUeFXY)R)tkT>~<%QA<1dw2o?ZGLYA4t>o28E=M{ zoXWStW3kPZ`WRFY!V6*bjX4VETc&@etlh#Gi?6aU%mo7hM$rB&ar@%5pxck(8jiC; zeQnoZQ0Pa-A%!8x5!3g-1xTgCzSW^_s8MAWZHuKgMAF3If(754mp`2VqwJG1dTrNYv0==K|UrPaa};ye=kcK;z99<_G=D4N(-!@GcX5 z$n!-#T&$4e65JGw3HE%BAQ;Joh+d49orrqBDUe@DX-k=wZM!&ci_7cacAgxMsO9fJ z)%)tk9c5u~MavSGUq86Jv(!PtDG^_(QFhSU(=LNcGExcd8O0EBM*gs34_d)am{k2< z5^jx;)gj?c*fssMID-!%5cWjDs{{^P0)kEg!9}jP{-+Rus#!r=hsxcxK2* z!yhf8h#&d;X=9K=oa(6_e$b9e2JiSNXX8uO^Kt|ozE40j+o{K5k~}V zSTRvRT>a$$IYhf8hv%VPrE1_C4x1_AT>FKcwG^f<;Tm$$E3(NfQI8uPd_1~oBt0GT zO+H24()v<@X{CWzPa!g~Otsp<-{`x!7uKfQ=X+yaDSuY9#M3YTr8sJmlv^Sc$mo1* zZK!RlP{Y-<26a2FY8>S#dupf*H%`}??5;1BVD4(mhg?bdOTsqTnZO2r251lIfh*gM z<7x`PwB#N;=(jVSlTdiEoW8f_5worbI0k>0g<{Aa7`>736U@rGB8qFQ%wk(bT(qPv zoxFvq6J-fxY#xR&L(3Y*{N@g2%(&;0Vt z!M~1n)q`iV;Qn&RdC|$C zz&vS*v*_GRGHe{x2M=-BuG(3jN=kLn)9nlz&F6LjSD{v^--GBJj0GBvG53;Y?YkuzVXVcnf5pCXGnctF!$59L-&qmKQ0q}6C3vF HQcEQOhPN0E 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 160df578df1d2662d38664e81e589ea8e7ed901d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1100 zcmexg;-AdGz`z8=qk#AjU<4{1#iL;`Y|?;tQ|vLP(|J1=Bs}&0acxq^?{}UohqgII z0Mj|o<&E3Vr>!-t+R(qf@%D-v>oOj0Vwl_(;!zOsJu#ef@9VyFRJ83>Vufz-XWt6f`b@v4FIRv+=24Gp?Ters7;68ot?}ap_OF zUWtc0N-IajsO4v 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 f006809736..0000000000 --- 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 d904244d54..0000000000 --- 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 e0b221014fb90d23d35c19e6604957586168d43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412 zcmZ>E5Aa}QWMT04ba7*V02d(J2f}1=advSGfwEV)yEqy_*sL)S8bq=dAlL)KVg%Yc ziib`ZFahHWhM9rvk%n1-ejW(S3bdCdSblkckd*v|p5G^#JfEmOF8N@f7SVmsX#J}_ zG5gc^uJ@mG`0+${E%iHnN!I71-n{Pme&E9cap;~}T2zSK z^6Px(m0qrx$zfHet$KZlT&A1NgXaD7zP*3*)BWK`_aFt4t{`s_2NBK%>ksY%r5$MD z!;y9=Pew!TzTc-4w~~z>PPm$uCid&uiX=@?SVPr_q}|xCB*j?6Z6O5xm%qF&wE zMyb_A+nfU4mEnqz4C@xPJUA4jI9<yV6%mtK_eFcU``GQ=&%Xu^;U6%L9a@kN%wdyXAGHTU^#2bvyT6 zm&xb#v&wBgAtsz$K`~OM&6AdOYF=6L5m>Y-0E;SM`NsGTSQPF6vgZKBDu8qrkPl32 z%+5eQFuqyV0OK8)_ZYo_#c2kt^6_X234P1;mc?%aYmlPG z4EOE&#$PJSt#Z#i*!9F9$Ufmrv+s+!0TRNchEE=yid>|wpJJA^M@xn8##1HR!iRG_ zk~St8C;8n_^wQu={c`id!rfnjyoU^U93ECL`@p1N zZJ(#4c!Vh?p-H9mir1EvmkM5dD`D$A*FKx4P{Oov}PA6+SNK+~!-PO7m2E zPP-yDdyVXhBL@{TyF%Q)>|7!fa9bhF+OSzSBVhAqt-9YK(tG-L9IBp_JIUX_PW!u85j6w+6u)KID{H9vXJ zYgJF3_wW+C+}CYuS8iV{YP)<}>_N9r5>9gj{3Ha=Zn(Wl>;JcB^Nd%>aHZCE{$#XE za`&3e4GKUt5u!o!hl% zB!c%# zzFZM%-SS6?b?Ku^OYZ!ca%s+$Bvn?6Xhn5n{oN7#44+;JbM4@)nB&^Jk?XJnkMnn@ ze~$4N-g|u4lf4@;-P$9k<9*woT3;^Riiu0rZL_(baC+VDcy}W<+VUcg;XTb`$9DK{ zcXyxa@WW5#@?VS3zdtp)@+_M5z)>eOCpAn=V&xT{vp$Q%>(tjx)6@PczwPwDx2m5R zXZ<%}Sio8_$JoTcz}PU5qo}mxW9e1xl^Tf!W_Dk*k6oR7KV%NK%VBeA6TQEh;yE0F zQ>V?GEEPXVe*WzFlV*mUoKRu%da}m>``u6FRja;reUIfRD!b0kFh4>*I<>*KV$SS? zGmI2j8CW+me!_0ghMm%%UpIf5eu14W^o?2i+}V=%_ut7Q)}9^5JxoVb+-0y>Y42x#V2c$HVRLt?-I6r}(fq4UCF-6uq z5cphp*>k9uJ_Rm?x)^?0YsJxL-tP#n|6AZi9M-*op|j5!}_%V{vs5A 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 160df578df1d2662d38664e81e589ea8e7ed901d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1100 zcmexg;-AdGz`z8=qk#AjU<4{1#iL;`Y|?;tQ|vLP(|J1=Bs}&0acxq^?{}UohqgII z0Mj|o<&E3Vr>!-t+R(qf@%D-v>oOj0Vwl_(;!zOsJu#ef@9VyFQ9vOcqO~z-XWt6f`b@v4FIRv+=24Gp?Ters7;68ot?}ap_OF zU-p{~d?!TGuBTdy&7P0}6K7yRF)tI$UT7<3I447g$&EDm13_vcqrhl3fv L_E5Aa}QWMT04ba7*V02d(J2f}1=advSGfwEV)yEqy_*sL)S8bq=dAlL)KVg%Yc ziib`ZFahHWhM9rvk%n1-ejW(S3bdCdSblkckd*v|p5G^#JfEmOF8N@f7SVmsX#J}_ zG5gc^uJ@mG`0+${E%iHnN!I71-n{Pme&E9cap;~}T2zSK z^6Px(m0qrx$zfHet$KZlT&A1NgXaD7zP*3*)BWK`_aFt4t{`s_2NBK%>ksY%r5$MD z!;y9=Pew!TzTc-4w~~z>PPm$uCid&uiX=@?SVPr_q}|xCB*j?6Z6O5xm%qF&wE zMyb_A+nfU4mEnqz4C@xPJUA4jI9<!-t+R(qf@%D-v>oOj0Vwl_(;!zOsJu#ef@9VyF7?ojO^&~EyUeo>9$#9r zPU6(K4l&BGT><7F2@&F+z`3pV2PcnHvQGHzU!9XoSL+-xcrxUl5 zjUG<8nwBQ^>)DDVP1BG6jnw`)GBquK_GJEnFB<26S4^|H8}sXf^q0^F2371fXPuiF z-@n}M5c6@(f#ty4^XX8`9W?Vh_O~tuDG<>r`G0!; z?po@1`jV{AN4M%68BV>$>;U6%56R&CY)SBF;b?@la_UAURm-HSj_zd z7GrmT#p635dm*rRDh2WbfwVJ_4~$!8AkESW$y1Epz#_8;$X*Tkt^6_X234P1;mc?%aYmlPG z4EOE&#$PJSt#Z#i*!9F9$Ufmrv+s+!0TRNchEE=yid>|wpJJA^M@xn8##1HR!iRG_ zk~St8C;8n_^wQu={c`id!rfnjyoU^U93ECL`@p1N zZJ(#4c!Vh?p-H9mir1EvmkM5dD`D$A*FKx4P{Oov}PA6+SNK+~!-PO7m2E zPP-yDdyVXhBL@{TyF%Q)>|7!fa9bhF+OSzSBVhAqt-9YK(tG-L9IBp_JIUX_PW!u85j6w+6u)KID{H9vXJ zYgJF3_wW+C+}CYuS8iV{YP)<}>_N9r5>9gj{3Ha=Zn(Wl>;JcB^Nd%>aHZCE{$#XE za`&3e4GKUt5u!o!hl% zB!c%# zzFZM%-SS6?b?Ku^OYZ!ca%s+$Bvn?6Xhn5n{oN7#44+;Jb8TU(n8Vv+$k$-N!(6WN z?}7LS{xY#+7nYa=-S+Uc{!pz{xv}*5>J`dPC!$y{U+6KdzrYvoKPB{Nf33ATm*t&V z3Ue|acYod1>LPnY=8?b>r@vEooOz+7BXfcOyn*7w1*{cwj7R%y5-CqV7jSk z1*VlVTfAD&*t9;nq@u9gM15;S|Mc$Z+zg%%`OKFAbzsIR*0ASe_$$T$NbxW S{;ql@W`F5tA>RinhVuY=rLE=w 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 da062a9bef53a5041991f4b3011eb0aa9645b94d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmWIYbctYKU|@t|E+EYd#N0s41jIZ*%nrmHK+FupAixU5oIniH!w1A{K+N)gF&D@D q+kgJ9dL?Fm>1QF|2Pua0%h#92F!V0{re2o!MC$J<^{emSTn7Mf;uwPf 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 2d08bcc8b1..0000000000 --- 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 cf9cca57e8..0000000000 --- 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 638398fea2..0000000000 --- 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 bab955ba6f..0000000000 --- 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 0128627bff..0000000000 --- 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 893e5cad24..0000000000 --- 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 ae1a81398c28dc5dad6df69740ffb14a0f57de77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmZ?q402{*U|<5_v>W>wq?+7iU^Gw+3L2NdSU}p?=5EZd57J*k9~e}z+njZ7W_SWQ6uu$4|WE= zw9K5;_>%ni-29Zxv`UcPkRVrAASKCQq+r06VyxjdlRI^#aPCG?ukP$4lQUjBo;>3D WqDO$IibM2iq5YTOrIYK99{~VEVnHSV 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 f006809736..0000000000 --- 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 500eca25f0..0000000000 --- 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 e0b221014fb90d23d35c19e6604957586168d43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412 zcmZ>E5Aa}QWMT04ba7*V02d(J2f}1=advSGfwEV)yEqy_*sL)S8bq=dAlL)KVg%Yc ziib`ZFahHWhM9rvk%n1-ejW(S3bdCdSblkckd*v|p5G^#JfEmOF8N@f7SVmsX#J}_ zG5gc^uJ@mG`0+${E%iHnN!I71-n{Pme&E9cap;~}T2zSK z^6Px(m0qrx$zfHet$KZlT&A1NgXaD7zP*3*)BWK`_aFt4t{`s_2NBK%>ksY%r5$MD z!;y9=Pew!TzTc-4w~~z>PPm$uCid&uiX=@?SVPr_q}|xCB*j?6Z6O5xm%qF&wE zMyb_A+nfU4mEnqz4C@xPJUA4jI9<7?ojO^&~EyUeo>9$#9r zPU6(K4l&BGT><7F2@&F+z`3pV2PcnHvQGHzU!9XoSL+-xcrxUl5 zjUG<8nwBQ^>)DDVP1BG6jnw`)GBquK_GJEnFB<26S4^|H8}sXf^q0^F2371fXPuiF z-@n}M5c6@(f#ty4^XX8`9W?Vh_O~tuDG<>r`G0!; z?po@1`jV{AN4M%68BV>$>;U6%56R&CY)SBF;b?@la_UAURm-HScFXm z7Ih1N#p6358(99ZmH_#{IAwJL^5cMPAkDlE7`MPY#pn$zGJAmRuAn4t607G&ZqY}m%olzRg3fFn6mqY!>9g_rq%#zN7&N< 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 a41568320e18f3ba5c362fdd85c971c9d0007d51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1465 zcmWG=boORoU|<4b{;7NwbLMt?^BqzUVfa4hQLFkt^6_X234P1;mc?%aYmlPG z4EOE&#$PJSt#Z#i*!9F9$Ufmrv+s+!0TRNchEE=yid>|wpJJA^M@xn8##1HR!iRG_ zk~St8C;8n_^wQu={c`id!rfnjyoU^U93ECL`@p1N zZJ(#4c!Vh?p-H9mir1EvmkM5dD`D$A*FKx4P{Oov}PA6+SNK+~!-PO7m2E zPP-yDdyVXhBL@{TyF%Q)>|7!fa9bhF+OSzSBVhAqt-9YK(tG-L9IBp_JIUX_PW!u85j6w+6u)KID{H9vXJ zYgJF3_wW+C+}CYuS8iV{YP)<}>_N9r5>9gj{3Ha=Zn(Wl>;JcB^Nd%>aHZCE{$#XE za`&3e4GKUt5u!o!hl% zB7z?a?);f@Y0i}-RaT2=MRjBS-4Xl@4{r)>+rm~chquR&ufc$axm@Mn z1Mv_1Wn#xJEHMeX?crFO6bx4T5EMK%R93a z=43wZ{<^KzMfQlyBY`DOf2Zy^^Fm2S<^unD1I33aaTRmCH_lJsXJFpISiFF>Vvezi zfq}7MAV*PY$;Z;G+AB2@H|&)D{JQze^b724p>NF6=gyYAzyD4iN8r?HGbc;MPm-TM zd;X-EVJ8(1?$oYby2b0?tn%wmPn)Y|xyb!K$j7i~wtN6~a|_JuzGff0I{ALc9B!Ax z=F%p5e>KH(FwC7$Ve)#i#{v7@PvupszIA<%b7;Th7b@ zrkk2pU|Kn|#jEv!-t+R(qf@%D-v>oOj0Vwl_(;!zOsJu#ef@9VyFW^0F$W5-fzd!QC}>;)V*zPno4YZ;K1hEFePB?$bP7zIfdR!ldkM~6=_{pG^4Gk(E?>SWQ6uu$4|WE= zw9K5;_>%ni-29Zxv`UcPkRVrAASKCQq+r06VyxjdlRI^#aPCG?ukP$4lQUjBCi6UC Vc_Zb};Jmi2M6CFR?(?H%sQ{gxL&N|8 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 f006809736..0000000000 --- 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 d904244d54..0000000000 --- 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 e0b221014fb90d23d35c19e6604957586168d43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412 zcmZ>E5Aa}QWMT04ba7*V02d(J2f}1=advSGfwEV)yEqy_*sL)S8bq=dAlL)KVg%Yc ziib`ZFahHWhM9rvk%n1-ejW(S3bdCdSblkckd*v|p5G^#JfEmOF8N@f7SVmsX#J}_ zG5gc^uJ@mG`0+${E%iHnN!I71-n{Pme&E9cap;~}T2zSK z^6Px(m0qrx$zfHet$KZlT&A1NgXaD7zP*3*)BWK`_aFt4t{`s_2NBK%>ksY%r5$MD z!;y9=Pew!TzTc-4w~~z>PPm$uCid&uiX=@?SVPr_q}|xCB*j?6Z6O5xm%qF&wE zMyb_A+nfU4mEnqz4C@xPJUA4jI9<7?ojO^&~EyUeo>9$#9r zPU6(K4l&BGT><7F2@&F+z`3pV2PcnHvQGHzU!9XoSL+-xcrxUl5 zjUG<8nwBQ^>)DDVP1BG6jnw`)GBquK_GJEnFB<26S4^|H8}sXf^q0^F2371fXPuiF z-@n}M5c6@(f#ty4^XX8`9W?Vh_O~tuDG<>r`G0!; z?po@1`jV{AN4M%68BV>$>;U6%56R&CY)SBF;b?@la_UAURm-HScFXm z7Ih1N#p6358(99ZmH_#{IAwJL^5cMPAkDlE7`MPY#pn$zGJAmRuAn4t607G&ZqY}m%olzRg3fFn6mqY!>9g_rq%#zN7&N< 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 a41568320e18f3ba5c362fdd85c971c9d0007d51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1465 zcmWG=boORoU|<4b{;7NwbLMt?^BqzUVfa4hQLFkt^6_X234P1;mc?%aYmlPG z4EOE&#$PJSt#Z#i*!9F9$Ufmrv+s+!0TRNchEE=yid>|wpJJA^M@xn8##1HR!iRG_ zk~St8C;8n_^wQu={c`id!rfnjyoU^U93ECL`@p1N zZJ(#4c!Vh?p-H9mir1EvmkM5dD`D$A*FKx4P{Oov}PA6+SNK+~!-PO7m2E zPP-yDdyVXhBL@{TyF%Q)>|7!fa9bhF+OSzSBVhAqt-9YK(tG-L9IBp_JIUX_PW!u85j6w+6u)KID{H9vXJ zYgJF3_wW+C+}CYuS8iV{YP)<}>_N9r5>9gj{3Ha=Zn(Wl>;JcB^Nd%>aHZCE{$#XE za`&3e4GKUt5u!o!hl% zB7z?a?);f@Y0i}-RaT2=MRjBS-4Xl@4{r)>+rm~chquR&ufc$axm@Mn z1Mv_1Wn#xJEHMeX?crFO6bx4T5EMK%R93a z=43wZ{<^KzMfQlyBY`DOf2Zy^^Fm2S<^unD1I33aaTRmCH_lJsXJFpISiFF>Vvezi zfq}7MAV*PY$;Z;G+AB2@H|&)D{JQze^b724p>NF6=gyYAzyD4iN8r?HGbc;MPm-TM zd;X-EVJ8(1?$oYby2b0?tn%wmPn)Y|xyb!K$j7i~wtN6~a|_JuzGff0I{ALc9B!Ax z=F%p5e>KH(FwC7$Ve)#i#{v7@PvupszIA<%b7;Th7b@ zrkk2pU|Kn|#jEv!-t+R(qf@%D-v>oOj0Vwl_(;!zOsJu#ef@9VyFTiB&H&A58#-%^y zf*H7iTpe9}UG+*TN?>Z!uIIa}u`jVmyPj$-_FaMpCeFZsVqQw((X3A*0srilf0XFi zE8ce@$k|<=fiEpHCpEq#KR!1RE5Aa}QWMT04ba7*V02d(J2f}1=advSGfwEV)yEqy_*sL)S8bq=dAlL)KVg%Yc ziib`ZFahHWhM9rvk%n1-ejW(S3bdCdSblkckd*v|p5G^#JfEmOF8N@f7SVmsX#J}_ zG5gc^uJ@mG`0+${E%iHnN!I71-n{Pme&E9cap;~}T2zSK z^6Px(m0qrx$zfHet$KZlT&A1NgXaD7zP*3*)BWK`_aFt4t{`s_2NBK%>ksY%r5$MD z!;y9=Pew!TzTc-4w~~z>PPm$uCid&uiX=@?SVPr_q}|xCB*j?6Z6O5xm%qF&wE zMyb_A+nfU4mEnqz4C@xPJUA4jI9<!-t+R(qf@%D-v>oOj0Vwl_(;!zOsJu#ef@9VyF7?ojO^&~EyUeo>9$#9r zPU6(K4l&BGT><7F2@&F+z`3pV2PcnHvQGHzU!9XoSL+-xcrxUl5 zjUG<8nwBQ^>)DDVP1BG6jnw`)GBquK_GJEnFB<26S4^|H8}sXf^q0^F2371fXPuiF z-@n}M5c6@(f#ty4^XX8`9W?Vh_O~tuDG<>r`G0!; z?po@1`jV{AN4M%68BV>$>;U6%56R&CY)SBF;b?@la_UAURm-HSj_zd z7GrmT#p635dm*rRDh2WbfwVJ_4~$!8AkESW$y1Epz#_8;$X*Tkt^6_X234P1;mc?%aYmlPG z4EOE&#$PJSt#Z#i*!9F9$Ufmrv+s+!0TRNchEE=yid>|wpJJA^M@xn8##1HR!iRG_ zk~St8C;8n_^wQu={c`id!rfnjyoU^U93ECL`@p1N zZJ(#4c!Vh?p-H9mir1EvmkM5dD`D$A*FKx4P{Oov}PA6+SNK+~!-PO7m2E zPP-yDdyVXhBL@{TyF%Q)>|7!fa9bhF+OSzSBVhAqt-9YK(tG-L9IBp_JIUX_PW!u85j6w+6u)KID{H9vXJ zYgJF3_wW+C+}CYuS8iV{YP)<}>_N9r5>9gj{3Ha=Zn(Wl>;JcB^Nd%>aHZCE{$#XE za`&3e4GKUt5u!o!hl% zB!c%# zzFZM%-SS6?b?Ku^OYZ!ca%s+$Bvn?6Xhn5n{oN7#44+;Jb8TU(n8Vv+$k$-N!(6WN z?}7LS{xY#+7nYa=-S+Uc{!pz{xv}*5>J`dPC!$y{U+6KdzrYvoKPB{Nf33ATm*t&V z3Ue|acYod1>LPnY=8?b>r@vEooOz+7BXfcOyn*7w1*{cwj7R%y5-CqV7jSk z1*VlVTfAD&*t9;nq@u9gM15;S|Mc$Z+zg%%`OKFAbzsIR*0ASe_$$T$NbxW S{;ql@W`F5tA>RinhVuY=rLE=w 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 da062a9bef53a5041991f4b3011eb0aa9645b94d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmWIYbctYKU|@t|E+EYd#N0s41jIZ*%nrmHK+FupAixU5oIniH!w1A{K+N)gF&D@D q+kgJ9dL?Fm>1QF|2Pua0%h#92F!V0{re2o!MC$J<^{emSTn7Mf;uwPf 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 2d08bcc8b1..0000000000 --- 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 cf9cca57e8..0000000000 --- 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 bab955ba6f..0000000000 --- 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 81dc858b8e..0000000000 --- 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 893e5cad24..0000000000 --- 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 01a102dbf1f291a847e8a41e80c8e3e8b136a1c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmZ?q402{*U|<5_v>ThdIp-{ofYCrPC}>;)V*zOsXX8`9W?Vh_O~tuDG<>r`CT~DI$SJ8H^MRxHRPM`+YibE7|DbgsW+3 gV!xiPNYYF+`~CEGs^gmknFj`T?<#D))_%DK0B__+J^%m! 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 f006809736..0000000000 --- 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 d904244d54..0000000000 --- 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 e0b221014fb90d23d35c19e6604957586168d43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412 zcmZ>E5Aa}QWMT04ba7*V02d(J2f}1=advSGfwEV)yEqy_*sL)S8bq=dAlL)KVg%Yc ziib`ZFahHWhM9rvk%n1-ejW(S3bdCdSblkckd*v|p5G^#JfEmOF8N@f7SVmsX#J}_ zG5gc^uJ@mG`0+${E%iHnN!I71-n{Pme&E9cap;~}T2zSK z^6Px(m0qrx$zfHet$KZlT&A1NgXaD7zP*3*)BWK`_aFt4t{`s_2NBK%>ksY%r5$MD z!;y9=Pew!TzTc-4w~~z>PPm$uCid&uiX=@?SVPr_q}|xCB*j?6Z6O5xm%qF&wE zMyb_A+nfU4mEnqz4C@xPJUA4jI9<!-t+R(qf@%D-v>oOj0Vwl_(;!zOsJu#ef@9VyF7?ojO^&~EyUeo>9$#9r zPU6(K4l&BGT><7F2@&F+z`3pV2PcnHvQGHzU!9XoSL+-xcrxUl5 zjUG<8nwBQ^>)DDVP1BG6jnw`)GBquK_GJEnFB<26S4^|H8}sXf^q0^F2371fXPuiF z-@n}M5c6@(f#ty4^XX8`9W?Vh_O~tuDG<>r`G0!; z?po@1`jV{AN4M%68BV>$>;U6%56R&CY)SBF;b?@la_UAURm-HSj_zd z7GrmT#p635dm*rRDh2WbfwVJ_4~$!8AkESW$y1Epz#_8;$X*Tkt^6_X234P1;mc?%aYmlPG z4EOE&#$PJSt#Z#i*!9F9$Ufmrv+s+!0TRNchEE=yid>|wpJJA^M@xn8##1HR!iRG_ zk~St8C;8n_^wQu={c`id!rfnjyoU^U93ECL`@p1N zZJ(#4c!Vh?p-H9mir1EvmkM5dD`D$A*FKx4P{Oov}PA6+SNK+~!-PO7m2E zPP-yDdyVXhBL@{TyF%Q)>|7!fa9bhF+OSzSBVhAqt-9YK(tG-L9IBp_JIUX_PW!u85j6w+6u)KID{H9vXJ zYgJF3_wW+C+}CYuS8iV{YP)<}>_N9r5>9gj{3Ha=Zn(Wl>;JcB^Nd%>aHZCE{$#XE za`&3e4GKUt5u!o!hl% zB!c%# zzFZM%-SS6?b?Ku^OYZ!ca%s+$Bvn?6Xhn5n{oN7#44+;Jb8TU(n8Vv+$k$-N!(6WN z?}7LS{xY#+7nYa=-S+Uc{!pz{xv}*5>J`dPC!$y{U+6KdzrYvoKPB{Nf33ATm*t&V z3Ue|acYod1>LPnY=8?b>r@vEooOz+7BXfcOyn*7w1*{cwj7R%y5-CqV7jSk z1*VlVTfAD&*t9;nq@u9gM15;S|Mc$Z+zg%%`OKFAbzsIR*0ASe_$$T$NbxW S{;ql@W`F5tA>RinhVuY=rLE=w 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 da062a9bef53a5041991f4b3011eb0aa9645b94d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmWIYbctYKU|@t|E+EYd#N0s41jIZ*%nrmHK+FupAixU5oIniH!w1A{K+N)gF&D@D q+kgJ9dL?Fm>1QF|2Pua0%h#92F!V0{re2o!MC$J<^{emSTn7Mf;uwPf 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 2d08bcc8b1..0000000000 --- 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 ea7416d6195e1170a7bbcbe083cd37bcb3b8d5aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1292 zcmZ>E5Aa}QWMT04ba7*V02d(J2f}1=advSGfwCLiT^x;|>^Be^M6&!qut!PDK>9k7ZAM2%c1whY& zFc7e$UCLV_npytonrV}S;4|GeeXiHFeEW~E0OgpVYIxFa>|axBvn8o&dw8JGq8qdB u?!WqP-P4uYAOoOkIMS{)1(u~ZiT 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 5ce0b50c88..0000000000 --- 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 60596772466b9d22873e495f5ff8e3a18e83c3be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1380 zcmexg;-AdGz`z8=Fu(|83ahr<7pAWrFj5`h%ZaR3RV&0DOm~K<` zsca8^w?5zJU*qVL$+CFyQ4W)kgm)8HmDxRzuzO zMayh=9f~)YQSlzXFRU_J!x{3eIFd_%ZTwmc##+jTu+%x5#yQo}Q%y E0R0WCPyhe` 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 3b335d331fe1061dc69abc0bfaba4fbf8513ba09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmeYb@pWZjU|MU%5{JuABN)3+pSap_Md0I?q}h5!Hn 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 e6b8ddb875d32d8172a5299f89ae518212df4e36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmV+~0?_?XK|@Ob00062000ZHIe46ldqyxw zq_T~bR(r3VWW2XllaH+l%n~mfDFm^->r755wG;T-c7D()X>c?Ee;i&n&ScdD_mjlt zb$m|71QKwyYhC$2e`2R(FO^jVLQGqNn{WFSQQET^$tsbWmO$^!JJu)gSUduD5J|S{ z0f0PsoSVSDjctQ6v#@?~X;N-}N@-4NaePT)QF>|#7XX4|37=_>Xc$}S!%MHRX5Jc~;!VQ3&^=FBM5VQalti5XziNulP z9Oxd`z-{Kun^r|MvQ5ziK#J(m4+9YJWhCa9*=HdUPa{ONQI)l6baC*QY+oURvtWBp zLA;D1*pVE#+=Z;@Xj7^B`K49ACfO#btgp4#eY!7ms%0;^ol{wEdO+|dpuZS>GH8tI zbeUU|fB)*iJg;xPA8{#sd}LQYSzAhHWq@{goO{j^JRukW2Lu8lXMqNIoO{l)n|Z@- xMgR?}0~Tq4KX{zm#uhZeezG#NFaQun0;-`04&~nLHsjZi^0>w7Cg2`*5t*4U`Vs&D 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 bce72a939e9e16c52cc4525759b1a011686f7373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmWIYbctYKU|@t|79hi|>r*D23*ous60rM?i&EdO-Pv`IqnnQogt*Xvro z{YO|Nf^SQy_VI09z^mgQ7_`tVW%|PDc5>zXH5xB!cH2ET7$RpPe!`2Lqhw?F;r*9B zIV&IDlNUEFd6tvEXnn2CmZYlf;ekSnZp^y7|LVVWPgiPpXlb%pSESvH@>PDK>9k7Z zAM2%cT?SUN!Mt<*<{L8T`plK>m$}~QFfHPLPkge}l8_bhscMXWZ@lDYIkCv^MZ=1c z{Z&P27mjjoah$#T!*Qh>ukUc%$ObuF`6J_Vxv2kZ;&YL;a$K%6>mNB8CHKBxarONa zhqym6`|j!1a|#~c*zNaUFsVc!?NC^UxK(@gM_*u304$@JU4g}xAuzu70*k-(Kru%k z{tx8y0BKR6+(V!^>z(|gdF^?-TJ2)vWd3ftb3tgG&O4149VJdb=LGCgXD+)jZwX7flk*;u&7H8dSXnvQGe`sx0J`{DZse4cOkQGYA|0NC_3vlG)*72?uR>ouE$XN}3_f zUz^)en1B2mT6Y9nFy0L5&x?&p}c^KxrG#DOh|r zSMt>S9&fA-?LD)it=K&CazgDPYH`@&&}S^WeszdJxN7J@bef+0F?t4cKR0VMIks$k zZxtFDRch2DcRA@B;UIU8MEm ze*pOkYIQ+=rBzm8gq<ww<#HC>oWKuzWdR%EkQ%i*DH`RAibn606Uf%W0^*B+x2#-b$u&>*-$WXeLXd{ zeMy@dWDcyV65=Rlyc*xhebv!$2q6*w{4$~pZK3ZFyvmtasUXfV11 z(SFtw4l1Q#&kUsd*iGu}QHDLPaU>-2;buA~P%g13wu1&JyO>@fAe(nRT^26H@=&Nr z7kljS+uoEbi!W>f-Hr_{3{Ejf+glqmQ3FTPFCH&r)l>?6c1B$M4cd`;;HL5>zWz~g zGUVqQ+nq$f0c+QE7NL+v!hwWf10?r1c|En*1!!lhsF15$AUl}h;JbJ_|qpIve zHhm2P)2kvQr-t{_a63ehowth~eVbbJdGgc7HLy?JTLG_db0pka3ovK zR%_%_Q}XWR)tNPoMqWWuMfLHUs_h-gO|XxF6q}KBS&Nj41{^Bu_`Z45f9FiHvd=DM ztDSE-5o2doxWvHzjTY`hv!G7l!NJLOZ3hhS4*{aqPn%}%n8IGc@W?LVpbq#yOV!3uRU*9t6glI%->CS fE(opDdADPtV7L6z0^WYlxz@K%Onuo>vBwbrG5Z!= 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 4db97287af..0000000000 --- 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 82237af579..0000000000 --- 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 4333cafa98..0000000000 --- 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 4580fd5f88..0000000000 --- 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 61c56af214..0000000000 --- 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 4333cafa98..0000000000 --- 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 88871e13ac..0000000000 --- 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 998c8314e3..0000000000 --- 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 4333cafa98..0000000000 --- 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 d42c6077ea..0000000000 --- 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 9effc038ad..0000000000 --- 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 4333cafa98..0000000000 --- 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 1bcb387276..0000000000 --- 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 5d65df9312..0000000000 --- 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 4333cafa98..0000000000 --- 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 d97e616eca..0000000000 --- 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 07f5e9cca0..0000000000 --- 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 61c56af214..0000000000 --- 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 3cdd5cfaf0..0000000000 --- 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 9bf8d19c20..0000000000 --- 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 1809ba67a9..0000000000 --- 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 3cdd5cfaf0..0000000000 --- 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 00f4d68e74..0000000000 --- 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 1809ba67a9..0000000000 --- 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 4333cafa98..0000000000 --- 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 ea454dbc77..0000000000 --- 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 61c56af214..0000000000 --- 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 4333cafa98..0000000000 --- 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 b71cae6d03..0000000000 --- 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 61c56af214..0000000000 --- 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 4333cafa98..0000000000 --- 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 e69de29bb2..0000000000 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 638398fea2..0000000000 --- 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 a1c2d0bb10..0000000000 --- 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 893e5cad24..0000000000 --- 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 ebd19dcbd93ecdc9337687f7d3818f292fbc30ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmZ?q402{*U|<5_wCnlq>fuotX*V|X2rc>B0~CXT#w9QokT!8PKJ{zH)sx>;oC`$5 zHyboA{V5mBz!l``=;G_DS5i>|QwuiF;_`&F>#5cfoI78@#2FY+%u7i;n)OK};Gf;{ zj}kq5#rrME5Aa}QWMT04ba7*V02d(J2f}1=advSGfwEV)yEqy_*sL)S8bq=dAlL)KVg%Yc ziib`ZFahHWhM9rvk%n1-ejW(S3bdCdSblkckd*v|p5G^#JfEmOF8N@f7SVmsX#J}_ zG5gc^uJ@mG`0+${E%iHnN!I71-n{Pme&E9cap;~}T2zSK z^6Px(m0qrx$zfHet$KZlT&A1NgXaD7zP*3*)BWK`_aFt4t{`s_2NBK%>ksY%r5$MD z!;y9=Pew!TzTc-4w~~z>PPm$uCid&uiX=@?SVPr_q}|xCB*j?6Z6O5xm%qF&wE zMyb_A+nfU4mEnqz4C@xPJUA4jI9<!-t+R(qf@%D-v>oOj0Vwl_(;!zOsJu#ef@9VyF7?ojO^&~EyUeo>9$#9r zPU6(K4l&BGT><7F2@&F+z`3pV2PcnHvQGHzU!9XoSL+-xcrxUl5 zjUG<8nwBQ^>)DDVP1BG6jnw`)GBquK_GJEnFB<26S4^|H8}sXf^q0^F2371fXPuiF z-@n}M5c6@(f#ty4^XX8`9W?Vh_O~tuDG<>r`G0!; z?po@1`jV{AN4M%68BV>$>;U6%56R&CY)SBF;b?@la_UAURm-HSj_zd z7GrmT#p635dm*rRDh2WbfwVJ_4~$!8AkESW$y1Epz#_8;$X*Tkt^6_X234P1;mc?%aYmlPG z4EOE&#$PJSt#Z#i*!9F9$Ufmrv+s+!0TRNchEE=yid>|wpJJA^M@xn8##1HR!iRG_ zk~St8C;8n_^wQu={c`id!rfnjyoU^U93ECL`@p1N zZJ(#4c!Vh?p-H9mir1EvmkM5dD`D$A*FKx4P{Oov}PA6+SNK+~!-PO7m2E zPP-yDdyVXhBL@{TyF%Q)>|7!fa9bhF+OSzSBVhAqt-9YK(tG-L9IBp_JIUX_PW!u85j6w+6u)KID{H9vXJ zYgJF3_wW+C+}CYuS8iV{YP)<}>_N9r5>9gj{3Ha=Zn(Wl>;JcB^Nd%>aHZCE{$#XE za`&3e4GKUt5u!o!hl% zB!c%# zzFZM%-SS6?b?Ku^OYZ!ca%s+$Bvn?6Xhn5n{oN7#44+;Jb8TU(n8Vv+$k$-N!(6WN z?}7LS{xY#+7nYa=-S+Uc{!pz{xv}*5>J`dPC!$y{U+6KdzrYvoKPB{Nf33ATm*t&V z3Ue|acYod1>LPnY=8?b>r@vEooOz+7BXfcOyn*7w1*{cwj7R%y5-CqV7jSk z1*VlVTfAD&*t9;nq@u9gM15;S|Mc$Z+zg%%`OKFAbzsIR*0ASe_$$T$NbxW S{;ql@W`F5tA>RinhVuY=rLE=w 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 da062a9bef53a5041991f4b3011eb0aa9645b94d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmWIYbctYKU|@t|E+EYd#N0s41jIZ*%nrmHK+FupAixU5oIniH!w1A{K+N)gF&D@D q+kgJ9dL?Fm>1QF|2Pua0%h#92F!V0{re2o!MC$J<^{emSTn7Mf;uwPf 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 6fad0aa277..0000000000 --- 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 61c56af214..0000000000 --- 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. From 41bd4385f8f1bd32a0a5a4dd443628f85c364f59 Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Mon, 9 Sep 2024 15:01:44 -0700 Subject: [PATCH 05/11] git config identity for Submodule unit test commits --- .../GitSubmoduleUnitTests.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs index c5c044ff32..4172f23f6e 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs @@ -42,6 +42,10 @@ public static void ClassInitialize(TestContext _) 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 -- ."); From ab354db4859ab5c21348dffad3f899d53da59cee Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Mon, 9 Sep 2024 15:17:03 -0700 Subject: [PATCH 06/11] Set git identity for submodule also --- .../GitSubmoduleUnitTests.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs index 4172f23f6e..9b4d7bed07 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs @@ -85,6 +85,8 @@ public static void ClassInitialize(TestContext _) // 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."); From fe589f11e5868292960acf38edb8578bbf1be9de Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Mon, 9 Sep 2024 15:46:49 -0700 Subject: [PATCH 07/11] Add backoff to cleanup retry --- .../GitLocalRepositoryProviderUnitTests.cs | 15 ++++++++++++++- .../GitSubmoduleUnitTests.cs | 6 ++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitLocalRepositoryProviderUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitLocalRepositoryProviderUnitTests.cs index 750ed7cb8a..7e3ee342d5 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitLocalRepositoryProviderUnitTests.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitLocalRepositoryProviderUnitTests.cs @@ -63,7 +63,20 @@ public static void ClassCleanup() dirInfo.Attributes = FileAttributes.Normal; } - Directory.Delete(RepoPath, true); + int milliseconds = 100; + for (var retries = 0; retries < 5; ++retries) + { + try + { + Directory.Delete(RepoPath, true); + break; + } + catch (System.UnauthorizedAccessException) + { + Thread.Sleep(milliseconds); + milliseconds *= 2; + } + } } } diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs index 9b4d7bed07..4e76eaf798 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs @@ -118,7 +118,8 @@ public static void ClassCleanup() GC.Collect(2); if (_repoPath is not null) { - for (var retries = 0; retries < 3; ++retries) + int milliseconds = 100; + for (var retries = 0; retries < 5; ++retries) { try { @@ -127,7 +128,8 @@ public static void ClassCleanup() } catch (System.UnauthorizedAccessException) { - Thread.Sleep(100); + Thread.Sleep(milliseconds); + milliseconds *= 2; } } } From 4338b57729bfa7873c9cf54fdf502f9e52ca4b6e Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Mon, 9 Sep 2024 16:05:15 -0700 Subject: [PATCH 08/11] Add cleanup and backoff loop to GitCommandRunnerTests --- .../GitCommandRunnerTests.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitCommandRunnerTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitCommandRunnerTests.cs index 2f42cabb4e..c1862e76c0 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitCommandRunnerTests.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitCommandRunnerTests.cs @@ -65,7 +65,20 @@ public static void ClassCleanup() dirInfo.Attributes = FileAttributes.Normal; } - Directory.Delete(RepoPath, true); + int milliseconds = 100; + for (var retries = 0; retries < 5; ++retries) + { + try + { + Directory.Delete(RepoPath, true); + break; + } + catch (System.UnauthorizedAccessException) + { + Thread.Sleep(milliseconds); + milliseconds *= 2; + } + } } } From ff3835f4d002e36e30c20efda5693b9f75268a4f Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Tue, 10 Sep 2024 11:18:52 -0700 Subject: [PATCH 09/11] PR feedback, adding DirectoryHelper --- common/Helpers/DirectoryHelper.cs | 59 ++++++++ .../GitCommandRunnerTests.cs | 16 +- .../GitLocalRepositoryProviderUnitTests.cs | 16 +- .../GitSubmoduleUnitTests.cs | 16 +- .../Models/GitLocalRepository.cs | 139 ++++++++++-------- 5 files changed, 139 insertions(+), 107 deletions(-) create mode 100644 common/Helpers/DirectoryHelper.cs diff --git a/common/Helpers/DirectoryHelper.cs b/common/Helpers/DirectoryHelper.cs new file mode 100644 index 0000000000..167cdd7e4a --- /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 Serilog.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, 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/GitCommandRunnerTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitCommandRunnerTests.cs index c1862e76c0..c644f7e230 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,20 +66,7 @@ public static void ClassCleanup() dirInfo.Attributes = FileAttributes.Normal; } - int milliseconds = 100; - for (var retries = 0; retries < 5; ++retries) - { - try - { - Directory.Delete(RepoPath, true); - break; - } - catch (System.UnauthorizedAccessException) - { - Thread.Sleep(milliseconds); - milliseconds *= 2; - } - } + DirectoryHelper.DeleteDirectoryWithRetries(RepoPath, true, 5, 100, false); } } diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitLocalRepositoryProviderUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitLocalRepositoryProviderUnitTests.cs index 7e3ee342d5..98a987b6c9 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,20 +64,7 @@ public static void ClassCleanup() dirInfo.Attributes = FileAttributes.Normal; } - int milliseconds = 100; - for (var retries = 0; retries < 5; ++retries) - { - try - { - Directory.Delete(RepoPath, true); - break; - } - catch (System.UnauthorizedAccessException) - { - Thread.Sleep(milliseconds); - milliseconds *= 2; - } - } + DirectoryHelper.DeleteDirectoryWithRetries(RepoPath, true, 5, 100, false); } } diff --git a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs index 4e76eaf798..c0b35b8fa5 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration.UnitTest/GitSubmoduleUnitTests.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +using DevHome.Common.Helpers; using FileExplorerGitIntegration.Models; using LibGit2Sharp; using Windows.Devices.Geolocation; @@ -118,20 +119,7 @@ public static void ClassCleanup() GC.Collect(2); if (_repoPath is not null) { - int milliseconds = 100; - for (var retries = 0; retries < 5; ++retries) - { - try - { - Directory.Delete(_repoPath, true); - break; - } - catch (System.UnauthorizedAccessException) - { - Thread.Sleep(milliseconds); - milliseconds *= 2; - } - } + DirectoryHelper.DeleteDirectoryWithRetries(_repoPath, true, 5, 100, false); } } diff --git a/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs b/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs index 8ff2791ce4..dabe416a79 100644 --- a/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs +++ b/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs @@ -68,72 +68,65 @@ IPropertySet ILocalRepository.GetProperties(string[] properties, string relative return result; } - try - { - 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); - } - - break; - case "System.VersionControl.Status": - result.Add(propName, GetStatus(relativePath, repository)); - break; - - case "System.VersionControl.CurrentFolderStatus": - var folderStatus = GetFolderStatus(relativePath, repository); - if (folderStatus is not null) - { - result.Add(propName, folderStatus); - } - - break; - } - } - } - finally + // 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) { - if (_repositoryCache is null) + switch (propName) { - repository.Dispose(); + 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); + } + + break; + case "System.VersionControl.Status": + result.Add(propName, GetStatus(relativePath, repository)); + break; + + case "System.VersionControl.CurrentFolderStatus": + var folderStatus = GetFolderStatus(relativePath, repository); + if (folderStatus is not null) + { + result.Add(propName, folderStatus); + } + + break; } } @@ -141,6 +134,15 @@ IPropertySet ILocalRepository.GetProperties(string[] properties, string relative return result; } + private void AddLatestCommitProperty(ValueSet result, string relativePath, string propName, RepositoryWrapper repository) + { + var latestCommit = FindLatestCommit(relativePath, repository); + if (latestCommit is not null) + { + result.Add(propName, latestCommit.Sha); + } + } + public IPropertySet GetProperties(string[] properties, string relativePath) { return ((ILocalRepository)this).GetProperties(properties, relativePath); @@ -172,6 +174,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; + } } } From b30f7643b849b2c0b2929500748a996134815912 Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Tue, 10 Sep 2024 11:25:16 -0700 Subject: [PATCH 10/11] Cleanup GetProperties for latest-commit props --- .../Models/GitLocalRepository.cs | 69 ++++++++----------- 1 file changed, 30 insertions(+), 39 deletions(-) diff --git a/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs b/extensions/GitExtension/FileExplorerGitIntegration/Models/GitLocalRepository.cs index dabe416a79..d8578adaaf 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(); @@ -76,45 +77,13 @@ IPropertySet ILocalRepository.GetProperties(string[] properties, string relative 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; @@ -134,12 +103,34 @@ IPropertySet ILocalRepository.GetProperties(string[] properties, string relative return result; } - private void AddLatestCommitProperty(ValueSet result, string relativePath, string propName, RepositoryWrapper repository) + private void AddLatestCommitProperty(ValueSet result, string relativePath, string propName, RepositoryWrapper repository, ref (CommitWrapper? commit, bool alreadyFetched) latestCommit) { - var latestCommit = FindLatestCommit(relativePath, repository); - if (latestCommit is not null) + if (!latestCommit.alreadyFetched) + { + latestCommit.commit = FindLatestCommit(relativePath, repository); + latestCommit.alreadyFetched = true; + } + + if (latestCommit.commit is not null) { - result.Add(propName, latestCommit.Sha); + 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; + } } } From f9cbd9d1ba790dc21316e6f0dc270bb282d120f2 Mon Sep 17 00:00:00 2001 From: Ryan Shepherd Date: Tue, 10 Sep 2024 11:55:23 -0700 Subject: [PATCH 11/11] PR feedback --- common/Helpers/DirectoryHelper.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/Helpers/DirectoryHelper.cs b/common/Helpers/DirectoryHelper.cs index 167cdd7e4a..b471770259 100644 --- a/common/Helpers/DirectoryHelper.cs +++ b/common/Helpers/DirectoryHelper.cs @@ -10,11 +10,11 @@ namespace DevHome.Common.Helpers; public static class DirectoryHelper { - private static readonly Serilog.ILogger _log = Log.ForContext("SourceContext", nameof(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, int maxRetries = 3, int initialRetryDelayMs = 100, bool throwOnFailure = true) + public static void DeleteDirectoryWithRetries(string directoryPath, bool recursive = true, int maxRetries = 3, int initialRetryDelayMs = 100, bool throwOnFailure = true) { ArgumentOutOfRangeException.ThrowIfNullOrEmpty(directoryPath); ArgumentOutOfRangeException.ThrowIfNegative(maxRetries);