update proxied exporttree=yes remote on receive of sync branch

Since git-annex sync sends the sync branch first, and only displays the
output of the push to the sync branch, this makes git-annex
post-retrieve's output when updating the exported tree be visible when
syncing.

This also makes syncing with a non-bare repository still update the
exported tree, even when the checked out branch is not able to be
updated. The sync branch gets sent regardless.
This commit is contained in:
Joey Hess 2024-08-07 13:11:06 -04:00
parent 55adbb6694
commit 01edd186e9
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 4 additions and 4 deletions

View file

@ -22,6 +22,7 @@ import Git.Types
import Git.Sha
import qualified Git.Ref
import Command.Export (filterExport, getExportCommit, seekExport)
import Command.Sync (syncBranch)
import qualified Data.Set as S
import qualified Data.ByteString as B
@ -59,7 +60,8 @@ proxyExportTree = do
pushedbranches <- liftIO $
S.fromList . map snd . parseHookInput
<$> B.hGetContents stdin
let waspushed = flip S.member pushedbranches
let waspushed b = S.member b pushedbranches
|| S.member (syncBranch b) pushedbranches
case filter (waspushed . Git.Ref.branchRef . fst . snd) rbs of
[] -> return ()
rbs' -> forM_ rbs' $ \((r, b), _) -> go r b

View file

@ -28,6 +28,7 @@ module Command.Sync (
parseUnrelatedHistoriesOption,
SyncOptions(..),
OperationMode(..),
syncBranch,
) where
import Command

View file

@ -33,9 +33,6 @@ Planned schedule of work:
* Working on `exportreeplus` branch which is groundwork for proxying to
exporttree=yes special remotes. Need to merge it to master.
* `git-annex sync` hides output of git-annex post-retreive, which is a
problem when it's doing things that are expensive.
* Handle cases where a single key is used by multiple files in the exported
tree. Need to download from the special remote in order to export
multiple copies to it. (In particular, this is needed when using