From 9cdcbedf2d9a1db5d9f2e9cb7260dc692f6d5d5f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 14 Jul 2025 13:52:13 -0400 Subject: [PATCH] avoid changing gitdir This code dates back 10 years to commit e322826e33ede47a2d9c5f979fd629627bcd709c. But as far as I can tell, it was never necessary. Notice that the comment added in that commit doesn't match the code -- it says it adjusts the Repo when the filesystem doesn't support symlinks, but it actually only adjusts the Repo when the filesystem *does* support symlinks. Testing in a submodule after this change, annex symlinks still point to .git/annex/objects/. (Note that gitAnnexLink contains a special case for submodules on filesystem not supporting symlinks. I have verified that special case still works. Without that special case, the annex links look like eg "../.git/modules/foo/annex/objects", and with them, they look like ".git/annex/objects" --- Annex/Fixup.hs | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/Annex/Fixup.hs b/Annex/Fixup.hs index 9b62093808..6d536f9f3d 100644 --- a/Annex/Fixup.hs +++ b/Annex/Fixup.hs @@ -104,7 +104,7 @@ fixupUnusualRepos r@(Repo { location = l@(Local { worktree = Just w, gitdir = d (replacedotgit >> unsetcoreworktree) `catchNonAsync` \e -> hPutStrLn stderr $ "warning: unable to convert submodule to form that will work with git-annex: " ++ show e - return $ r' + return $ r { config = M.delete "core.worktree" (config r) } | otherwise = ifM (needsGitLinkFixup r) @@ -114,8 +114,8 @@ fixupUnusualRepos r@(Repo { location = l@(Local { worktree = Just w, gitdir = d (replacedotgit >> worktreefixup) `catchNonAsync` \e -> hPutStrLn stderr $ "warning: unable to convert .git file to symlink that will work with git-annex: " ++ show e - setworktreepath r' - else setworktreepath r' + setworktreepath r + else setworktreepath r , return r ) where @@ -138,11 +138,11 @@ fixupUnusualRepos r@(Repo { location = l@(Local { worktree = Just w, gitdir = d fmap toOsPath . headMaybe . lines <$> readFile commondirfile - setworktreepath r'' = readcommondirfile >>= \case - Just gd -> return $ r'' + setworktreepath r' = readcommondirfile >>= \case + Just gd -> return $ r' { mainWorkTreePath = Just gd } - Nothing -> return r'' + Nothing -> return r' worktreefixup = readcommondirfile >>= \case Just gd -> do @@ -153,13 +153,6 @@ fixupUnusualRepos r@(Repo { location = l@(Local { worktree = Just w, gitdir = d R.createSymbolicLink (fromOsPath linktarget) $ fromOsPath $ dotgit literalOsPath "annex" Nothing -> return () - - -- Repo adjusted, so that symlinks to objects that get checked - -- in will have the usual path, rather than pointing off to the - -- real .git directory. - r' - | coreSymlinks c = r { location = l { gitdir = dotgit } } - | otherwise = r fixupUnusualRepos r _ = return r needsSubmoduleFixup :: Repo -> Bool