support --unlock-present adjustment of view branches
When generating the view, check if the key is present. When syncing in a view branch with an adjustment, run adjustedBranchRefreshFull the same as is done when syncing in other adjusted branches. This is needed because the docs for git-annex adjust --unlock-present suggest using git-annex sync to update the branch when annex.adjustedbranchrefresh is not set. Note that, with annex.adjustedbranchrefresh set, it just works! The adjusted branch gets updated in the usual way and it doesn't matter that there's a view branch underneath. And of course, re-running git-annex adjut --unlock-present also works, as suggested in the docs. Sponsored-by: Erik Bjäreholt on Patreon
This commit is contained in:
parent
7d839176c3
commit
1c4f4b449a
5 changed files with 40 additions and 11 deletions
|
@ -33,6 +33,7 @@ import Annex.GitOverlay
|
|||
import Annex.Link
|
||||
import Annex.CatFile
|
||||
import Annex.Concurrent
|
||||
import Annex.Content.Presence
|
||||
import Logs
|
||||
import Logs.MetaData
|
||||
import Logs.View
|
||||
|
@ -510,6 +511,15 @@ applyView'' mkviewedfile getfilemetadata view madj l clean conv = do
|
|||
Nothing -> stagesymlink uh f k
|
||||
Just (LinkAdjustment UnlockAdjustment) ->
|
||||
stagepointerfile uh f k mtreeitemtype
|
||||
Just (LinkPresentAdjustment UnlockPresentAdjustment) ->
|
||||
ifM (inAnnex k)
|
||||
( stagepointerfile uh f k mtreeitemtype
|
||||
, stagesymlink uh f k
|
||||
)
|
||||
Just (PresenceAdjustment HideMissingAdjustment _) ->
|
||||
whenM (inAnnex k)
|
||||
( stagesymlink uh f k
|
||||
)
|
||||
_ -> stagesymlink uh f k
|
||||
|
||||
stagesymlink uh f k = do
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
git-annex (10.20230228) UNRELEASED; urgency=medium
|
||||
|
||||
* Support adjusted view branches. Using git-annex view in an adjusted
|
||||
branch, or git-annex adjust in a view branch will enter an adjusted
|
||||
view branch. --unlock and --unlock-present adjustments are supported.
|
||||
|
||||
-- Joey Hess <id@joeyh.name> Mon, 27 Feb 2023 12:31:14 -0400
|
||||
|
||||
git-annex (10.20230227) upstream; urgency=medium
|
||||
|
||||
* Fix more breakage caused by git's fix for CVE-2022-24765, this time
|
||||
|
|
|
@ -451,23 +451,26 @@ updateBranches (Just branch, madj) = do
|
|||
]
|
||||
unless ok $
|
||||
giveup $ "failed to update view"
|
||||
case madj' of
|
||||
Nothing -> noop
|
||||
Just adj -> updateadjustedbranch adj
|
||||
-- When in an adjusted branch, propigate any changes
|
||||
-- made to it back to the original branch. The adjusted
|
||||
-- branch may also need to be updated, if the adjustment
|
||||
-- is not stable, and the usual configuration does not
|
||||
-- update it.
|
||||
-- made to it back to the original branch.
|
||||
Nothing -> case madj of
|
||||
Just adj -> do
|
||||
let origbranch = branch
|
||||
propigateAdjustedCommits origbranch adj
|
||||
unless (adjustmentIsStable adj) $
|
||||
annexAdjustedBranchRefresh <$> Annex.getGitConfig >>= \case
|
||||
0 -> adjustedBranchRefreshFull adj origbranch
|
||||
_ -> return ()
|
||||
propigateAdjustedCommits branch adj
|
||||
updateadjustedbranch adj
|
||||
Nothing -> noop
|
||||
|
||||
-- Update the sync branch to match the new state of the branch
|
||||
inRepo $ updateBranch (syncBranch branch) (fromViewBranch branch)
|
||||
where
|
||||
-- The adjusted branch may also need to be updated, if the adjustment
|
||||
-- is not stable, and the usual configuration does not update it.
|
||||
updateadjustedbranch adj = unless (adjustmentIsStable adj) $
|
||||
annexAdjustedBranchRefresh <$> Annex.getGitConfig >>= \case
|
||||
0 -> adjustedBranchRefreshFull adj branch
|
||||
_ -> return ()
|
||||
|
||||
updateBranch :: Git.Branch -> Git.Branch -> Git.Repo -> IO ()
|
||||
updateBranch syncbranch updateto g =
|
||||
|
|
|
@ -59,7 +59,7 @@ and will also propagate commits back to the original branch.
|
|||
|
||||
* `--lock`
|
||||
|
||||
Lock all annexed file in the adjusted branch. This may be preferred
|
||||
Lock all annexed files in the adjusted branch. This may be preferred
|
||||
by those who like seeing broken symlinks when the content of an
|
||||
annexed file is not present.
|
||||
|
||||
|
@ -128,6 +128,8 @@ and will also propagate commits back to the original branch.
|
|||
|
||||
[[git-annex-sync]](1)
|
||||
|
||||
[[git-annex-view]](1)
|
||||
|
||||
# AUTHOR
|
||||
|
||||
Joey Hess <id@joeyh.name>
|
||||
|
|
|
@ -44,6 +44,10 @@ into the `_` directory and committing will unset the metadata.
|
|||
The name of the `_` directory can be changed using the annex.viewunsetdirectory
|
||||
git config.
|
||||
|
||||
In a view, annexed files are usually locked, but when both this command
|
||||
and [[git-annex-adjust]](1) are used, files in the view will be
|
||||
adjusted.
|
||||
|
||||
# OPTIONS
|
||||
|
||||
* The [[git-annex-common-options]](1) can be used.
|
||||
|
@ -62,6 +66,8 @@ git config.
|
|||
|
||||
[[git-annex-vcycle]](1)
|
||||
|
||||
[[git-annex-adjust]](1)
|
||||
|
||||
# AUTHOR
|
||||
|
||||
Joey Hess <id@joeyh.name>
|
||||
|
|
Loading…
Reference in a new issue