sync: Warn when a remote's export is not updated to the current tree because export tracking is not configured.
Only display the warning when the current branch has a tree that is not the same as the tree in the export. Note that it doesn't check to see if the current tree is in incompleteExportedTreeish; it might be worth checking that and reminding the user about an incomplete export, but when export tracking is not configured, they are probably not in the right clone of the repository to resolve the incomplete export. This commit was sponsored by Ethan Aubin.
This commit is contained in:
parent
f35ba87ea6
commit
9adee3f2fb
5 changed files with 38 additions and 7 deletions
|
@ -64,6 +64,7 @@ exportToRemotes rs = do
|
|||
Annex.changeState $ \st -> st { Annex.errcounter = 0 }
|
||||
start <- liftIO getCurrentTime
|
||||
void $ Command.Sync.seekExportContent rs
|
||||
=<< join Command.Sync.getCurrBranch
|
||||
-- Look at command error counter to see if the export
|
||||
-- didn't work.
|
||||
failed <- (> 0) <$> Annex.getState Annex.errcounter
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
git-annex (6.20180927) UNRELEASED; urgency=medium
|
||||
|
||||
* sync: Warn when a remote's export is not updated to the current
|
||||
tree because export tracking is not configured.
|
||||
|
||||
-- Joey Hess <id@joeyh.name> Thu, 27 Sep 2018 15:27:20 -0400
|
||||
|
||||
git-annex (6.20180926) upstream; urgency=medium
|
||||
|
||||
[ Joey Hess ]
|
||||
|
|
|
@ -189,7 +189,7 @@ seek o = allowConcurrentOutput $ do
|
|||
|
||||
whenM shouldsynccontent $ do
|
||||
syncedcontent <- seekSyncContent o dataremotes
|
||||
exportedcontent <- seekExportContent exportremotes
|
||||
exportedcontent <- withbranch $ seekExportContent exportremotes
|
||||
-- Transferring content can take a while,
|
||||
-- and other changes can be pushed to the
|
||||
-- git-annex branch on the remotes in the
|
||||
|
@ -680,22 +680,39 @@ syncFile ebloom rs af k = onlyActionOn' k $ do
|
|||
-
|
||||
- Returns True if any file transfers were made.
|
||||
-}
|
||||
seekExportContent :: [Remote] -> Annex Bool
|
||||
seekExportContent rs = or <$> forM rs go
|
||||
seekExportContent :: [Remote] -> CurrBranch -> Annex Bool
|
||||
seekExportContent rs (currbranch, _) = or <$> forM rs go
|
||||
where
|
||||
go r = withExclusiveLock (gitAnnexExportLock (Remote.uuid r)) $ do
|
||||
db <- Export.openDb (Remote.uuid r)
|
||||
ea <- Remote.exportActions r
|
||||
exported <- case remoteAnnexExportTracking (Remote.gitconfig r) of
|
||||
Nothing -> getExport (Remote.uuid r)
|
||||
Nothing -> nontracking r
|
||||
Just b -> do
|
||||
mcur <- inRepo $ Git.Ref.tree b
|
||||
case mcur of
|
||||
Nothing -> getExport (Remote.uuid r)
|
||||
Nothing -> nontracking r
|
||||
Just cur -> do
|
||||
Command.Export.changeExport r ea db cur
|
||||
return [Exported cur []]
|
||||
Export.closeDb db `after` fillexport r ea db exported
|
||||
|
||||
nontracking r = do
|
||||
exported <- getExport (Remote.uuid r)
|
||||
maybe noop (warnnontracking r exported) currbranch
|
||||
return exported
|
||||
|
||||
warnnontracking r exported currb = inRepo (Git.Ref.tree currb) >>= \case
|
||||
Just currt | not (any (\ex -> exportedTreeish ex == currt) exported) ->
|
||||
showLongNote $ unwords
|
||||
[ "Not updating export to " ++ Remote.name r
|
||||
, "to reflect changes to the tree, because export"
|
||||
, "tracking is not enabled. "
|
||||
, "(Use git-annex export's --tracking option"
|
||||
, "to enable it.)"
|
||||
]
|
||||
_ -> noop
|
||||
|
||||
|
||||
fillexport _ _ _ [] = return False
|
||||
fillexport r ea db (Exported { exportedTreeish = t }:[]) =
|
||||
|
|
|
@ -43,7 +43,7 @@ versions of files stored in them. If a special remote is set up to do
|
|||
that, it can be used as a key/value store and the limitations in the above
|
||||
paragraph do not appy. Note that dropping content from such a remote is
|
||||
not supported. See individual special remotes' documentation for
|
||||
details of how to enable such versioning.
|
||||
details of how to enable such versioning.
|
||||
|
||||
# OPTIONS
|
||||
|
||||
|
@ -55,7 +55,11 @@ details of how to enable such versioning.
|
|||
|
||||
This makes the export track changes that are committed to
|
||||
the branch. `git annex sync --content` and the git-annex assistant
|
||||
will update exports when it commits to the branch they are tracking.
|
||||
will update exports with commits made to the branch.
|
||||
|
||||
This is a local configuration setting, similar to a git remote's tracking
|
||||
branch. You'll need to run `git annex export --tracking` in each
|
||||
repository you want the export to track.
|
||||
|
||||
* `--fast`
|
||||
|
||||
|
|
|
@ -17,3 +17,5 @@ have a tracking branch, to help the user understand why it's not syncing
|
|||
their recent changes to it.
|
||||
|
||||
--[[Joey]]
|
||||
|
||||
> [[done]] --[[Joey]]
|
||||
|
|
Loading…
Reference in a new issue