diff options
author | Joey Hess <joey@kitenet.net> | 2013-02-23 12:32:09 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-02-23 12:41:22 -0400 |
commit | c59733b3b1e2a359d074ce6c351137a09bf363c6 (patch) | |
tree | fd30e95ed7b61cf3b4a1ffd9b175fb10d2f1c450 /Locations.hs | |
parent | 5534aceab89789fc2c284bd700aaa59a8e105937 (diff) |
Additional GIT_DIR support bugfixes. May actually work now.
Two fixes. First, and most importantly, relax the isLinkToAnnex check
to only look for /annex/objects/, not [^|/].git/annex/objects. If
GIT_DIR is used with a detached work tree, the git directory is
not necessarily named .git.
There are important caveats with doing that at all, since git-annex will
make symlinks that point at GIT_DIR, which means that the relative path
between GIT_DIR and GIT_WORK_TREE needs to remain stable across all clones
of the repository.
----
The other fix is just fixing crazy and wrong code that, when GIT_DIR is
set, expects to still find a git repository in the path below the work
tree, and uses some of its configuration, and some of GIT_DIR. What was I
thinking, and why can't I seem to get this code right?
Diffstat (limited to 'Locations.hs')
-rw-r--r-- | Locations.hs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/Locations.hs b/Locations.hs index fcf516bdc..9f892a8f3 100644 --- a/Locations.hs +++ b/Locations.hs @@ -236,11 +236,14 @@ gitAnnexRemotesDir r = addTrailingPathSeparator $ gitAnnexDir r </> "remotes" gitAnnexAssistantDefaultDir :: FilePath gitAnnexAssistantDefaultDir = "annex" -{- Checks a symlink target to see if it appears to point to annexed content. -} +{- Checks a symlink target to see if it appears to point to annexed content. + - + - We only look at paths inside the .git directory, and not at the .git + - directory itself, because GIT_DIR may cause a directory name other + - than .git to be used. + -} isLinkToAnnex :: FilePath -> Bool -isLinkToAnnex s = ('/':d) `isInfixOf` s || d `isPrefixOf` s - where - d = ".git" </> objectDir +isLinkToAnnex s = ('/':objectDir) `isInfixOf` s {- Converts a key into a filename fragment without any directory. - |