avoid changing gitdir
authorJoey Hess <joeyh@joeyh.name>
Mon, 14 Jul 2025 17:52:13 +0000 (13:52 -0400)
committerJoey Hess <joeyh@joeyh.name>
Mon, 14 Jul 2025 18:22:27 +0000 (14:22 -0400)
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

index 9b620938084de784133bce32dd305002e57756be..6d536f9f3d968f23bb0a91060f81d397dc7a48d9 100644 (file)
@@ -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