From ca848eddd38e2b70767c3e67e8af3caa079e7527 Mon Sep 17 00:00:00 2001 From: Ashley Hauck Date: Mon, 19 Jun 2017 10:57:38 -0700 Subject: [PATCH] Detect git worktrees correctly Git worktrees are represented as a file named .git, with contents that look like: gitdir: E:/cli/.git/worktrees/cli2 --- .../RepoDirectoriesProvider.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/test/Microsoft.DotNet.Tools.Tests.Utilities/RepoDirectoriesProvider.cs b/test/Microsoft.DotNet.Tools.Tests.Utilities/RepoDirectoriesProvider.cs index f5545b2f2..d5e1854fa 100644 --- a/test/Microsoft.DotNet.Tools.Tests.Utilities/RepoDirectoriesProvider.cs +++ b/test/Microsoft.DotNet.Tools.Tests.Utilities/RepoDirectoriesProvider.cs @@ -37,9 +37,14 @@ namespace Microsoft.DotNet.Tools.Test.Utilities string directory = AppContext.BaseDirectory; #endif - while (!Directory.Exists(Path.Combine(directory, ".git")) && directory != null) + while (directory != null) { - directory = Directory.GetParent(directory).FullName; + var gitDirOrFile = Path.Combine(directory, ".git"); + if (Directory.Exists(gitDirOrFile) || File.Exists(gitDirOrFile)) + { + break; + } + directory = Directory.GetParent(directory)?.FullName; } if (directory == null)