Work around bug in git 2.13.0 involving GIT_COMMON_DIR that broke merging changes into adjusted branches.
Might want to remove this when it gets fixed, in case adjusted branches are used in a repo with a great many refs, which would become unnecessarily slow. This commit was supported by the NSF-funded DataLad project.
This commit is contained in:
parent
e858c959f7
commit
9bcaef1ec4
2 changed files with 17 additions and 0 deletions
|
@ -51,6 +51,7 @@ import Annex.Content
|
||||||
import Annex.Perms
|
import Annex.Perms
|
||||||
import Annex.GitOverlay
|
import Annex.GitOverlay
|
||||||
import Utility.Tmp
|
import Utility.Tmp
|
||||||
|
import Utility.CopyFile
|
||||||
import qualified Database.Keys
|
import qualified Database.Keys
|
||||||
import Config
|
import Config
|
||||||
|
|
||||||
|
@ -355,9 +356,23 @@ updateAdjustedBranch tomerge (origbranch, adj) mergeconfig commitmode = catchBoo
|
||||||
misctmpdir <- fromRepo gitAnnexTmpMiscDir
|
misctmpdir <- fromRepo gitAnnexTmpMiscDir
|
||||||
void $ createAnnexDirectory misctmpdir
|
void $ createAnnexDirectory misctmpdir
|
||||||
tmpwt <- fromRepo gitAnnexMergeDir
|
tmpwt <- fromRepo gitAnnexMergeDir
|
||||||
|
git_dir <- fromRepo Git.localGitDir
|
||||||
withTmpDirIn misctmpdir "git" $ \tmpgit -> withWorkTreeRelated tmpgit $
|
withTmpDirIn misctmpdir "git" $ \tmpgit -> withWorkTreeRelated tmpgit $
|
||||||
withemptydir tmpwt $ withWorkTree tmpwt $ do
|
withemptydir tmpwt $ withWorkTree tmpwt $ do
|
||||||
liftIO $ writeFile (tmpgit </> "HEAD") (fromRef updatedorig)
|
liftIO $ writeFile (tmpgit </> "HEAD") (fromRef updatedorig)
|
||||||
|
-- Copy in refs and packed-refs, to work
|
||||||
|
-- around bug in git 2.13.0, which
|
||||||
|
-- causes it not to look in GIT_DIR for refs.
|
||||||
|
refs <- liftIO $ dirContentsRecursive $
|
||||||
|
git_dir </> "refs"
|
||||||
|
let refs' = (git_dir </> "packed-refs") : refs
|
||||||
|
liftIO $ forM_ refs' $ \src ->
|
||||||
|
whenM (doesFileExist src) $ do
|
||||||
|
dest <- relPathDirToFile git_dir src
|
||||||
|
print (src, dest)
|
||||||
|
let dest' = tmpgit </> dest
|
||||||
|
createDirectoryIfMissing True (takeDirectory dest')
|
||||||
|
void $ createLinkOrCopy src dest'
|
||||||
-- This reset makes git merge not care
|
-- This reset makes git merge not care
|
||||||
-- that the work tree is empty; otherwise
|
-- that the work tree is empty; otherwise
|
||||||
-- it will think that all the files have
|
-- it will think that all the files have
|
||||||
|
|
|
@ -6,6 +6,8 @@ git-annex (6.20170511) UNRELEASED; urgency=medium
|
||||||
only one ssh password prompt will be made at a time.
|
only one ssh password prompt will be made at a time.
|
||||||
* Removed dependency on MissingH, instead depending on the split library.
|
* Removed dependency on MissingH, instead depending on the split library.
|
||||||
* Progress is displayed for transfers of files of unknown size.
|
* Progress is displayed for transfers of files of unknown size.
|
||||||
|
* Work around bug in git 2.13.0 involving GIT_COMMON_DIR that broke
|
||||||
|
merging changes into adjusted branches.
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Thu, 11 May 2017 15:16:23 -0400
|
-- Joey Hess <id@joeyh.name> Thu, 11 May 2017 15:16:23 -0400
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue