From 44bc9643ed1b53ef72a0f4089c80ca8ef7310c7a Mon Sep 17 00:00:00 2001 From: Remy Bohmer Date: Fri, 20 Nov 2020 21:19:10 +0100 Subject: Always use Unix EOL for worktree .git and gitdir files Worktree .git and gitdir reference files are written by Git with Unix line ending, even on Windows & macOS. The conversion to relative paths makes these files end with DOS line endings in Windows. The Git integration in Visual Studio 2019 cannot deal with these DOS line endings and considers these worktrees invalid. Signed-off-by: Remy Bohmer Change-Id: I088cfd994f3cc31db4e0ca7791fa0a4ee3ac222f Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/289310 Reviewed-by: Mike Frysinger Tested-by: Remy Bohmer --- project.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/project.py b/project.py index f838c6f4..ad7d59ae 100644 --- a/project.py +++ b/project.py @@ -2702,12 +2702,14 @@ class Project(object): # Some platforms (e.g. Windows) won't let us update dotgit in situ because # of file permissions. Delete it and recreate it from scratch to avoid. platform_utils.remove(dotgit) - # Use relative path from checkout->worktree. - with open(dotgit, 'w') as fp: + # Use relative path from checkout->worktree & maintain Unix line endings + # on all OS's to match git behavior. + with open(dotgit, 'w', newline='\n') as fp: print('gitdir:', os.path.relpath(git_worktree_path, self.worktree), file=fp) - # Use relative path from worktree->checkout. - with open(os.path.join(git_worktree_path, 'gitdir'), 'w') as fp: + # Use relative path from worktree->checkout & maintain Unix line endings + # on all OS's to match git behavior. + with open(os.path.join(git_worktree_path, 'gitdir'), 'w', newline='\n') as fp: print(os.path.relpath(dotgit, git_worktree_path), file=fp) self._InitMRef() -- cgit v1.2.3-54-g00ecf