From e1a9b79fa6df2412d45bc7c467f794b8d86f59a3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 14 Apr 2021 18:53:27 -0400 Subject: [PATCH] fix hardcoded origin name in checkAdjustedClone init: Fix a crash when the repo's was cloned from a repo that had an adjusted branch checked out, and the origin remote is not named "origin". The only other hardcoding of the name of origin is in: - Upgrade.V2, which can be ignored probably - Annex.Branch, which doesn't fail if it has some other name, but just doesn't set up the git-annex branch with quite as linear a history in that case. --- Annex/AdjustedBranch.hs | 8 ++++---- CHANGELOG | 2 ++ ...pledfs__58___annex-init_crash_when_remote_name_is.mdwn | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Annex/AdjustedBranch.hs b/Annex/AdjustedBranch.hs index a2b606ef66..bb5321d90a 100644 --- a/Annex/AdjustedBranch.hs +++ b/Annex/AdjustedBranch.hs @@ -613,12 +613,12 @@ checkAdjustedClone = ifM isBareRepo Just (adj, origbranch) -> do let basis@(BasisBranch bb) = basisBranch (originalToAdjusted origbranch adj) unlessM (inRepo $ Git.Ref.exists bb) $ do - unlessM (inRepo $ Git.Ref.exists origbranch) $ do - let remotebranch = Git.Ref.underBase "refs/remotes/origin" origbranch - inRepo $ Git.Branch.update' origbranch remotebranch aps <- fmap commitParent <$> findAdjustingCommit (AdjBranch currbranch) case aps of - Just [p] -> setBasisBranch basis p + Just [p] -> do + unlessM (inRepo $ Git.Ref.exists origbranch) $ + inRepo $ Git.Branch.update' origbranch p + setBasisBranch basis p _ -> giveup $ "Unable to clean up from clone of adjusted branch; perhaps you should check out " ++ Git.Ref.describe origbranch return InAdjustedClone diff --git a/CHANGELOG b/CHANGELOG index c626a14f07..cdbf2c004f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,6 +10,8 @@ git-annex (8.20210331) UNRELEASED; urgency=medium * fsck: When downloading content from a remote, if the content is able to be verified during the transfer, skip checksumming it a second time. * directory: When cp supports reflinks, use it. + * init: Fix a crash when the repo's was cloned from a repo that had an + adjusted branch checked out, and the origin remote is not named "origin". -- Joey Hess Thu, 01 Apr 2021 12:17:26 -0400 diff --git a/doc/bugs/crippledfs__58___annex-init_crash_when_remote_name_is.mdwn b/doc/bugs/crippledfs__58___annex-init_crash_when_remote_name_is.mdwn index 1a4ba82657..42e433d0b0 100644 --- a/doc/bugs/crippledfs__58___annex-init_crash_when_remote_name_is.mdwn +++ b/doc/bugs/crippledfs__58___annex-init_crash_when_remote_name_is.mdwn @@ -51,3 +51,5 @@ overriding `annex.crippledfilesystem`. Entering an adjusted branch in `a` is sufficient to trigger this. [[!tag projects/datalad]] + +> [[fixed|done]] --[[Joey]]