diff --git a/Annex/View.hs b/Annex/View.hs index 35ba205707..55ac5ba097 100644 --- a/Annex/View.hs +++ b/Annex/View.hs @@ -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 diff --git a/CHANGELOG b/CHANGELOG index 0f7c7ce6c7..407f6a238a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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 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 diff --git a/Command/Sync.hs b/Command/Sync.hs index f378950592..8a977cfc2c 100644 --- a/Command/Sync.hs +++ b/Command/Sync.hs @@ -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 = diff --git a/doc/git-annex-adjust.mdwn b/doc/git-annex-adjust.mdwn index 746e287069..fd573ec904 100644 --- a/doc/git-annex-adjust.mdwn +++ b/doc/git-annex-adjust.mdwn @@ -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 diff --git a/doc/git-annex-view.mdwn b/doc/git-annex-view.mdwn index 2182420573..f1a22d2f85 100644 --- a/doc/git-annex-view.mdwn +++ b/doc/git-annex-view.mdwn @@ -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