Fix upgrade failure when a file has been deleted from the working tree

This commit is contained in:
Joey Hess 2020-03-09 16:59:18 -04:00
parent 53f6de1fdb
commit 4ce518998a
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
4 changed files with 21 additions and 1 deletions

View file

@ -9,6 +9,7 @@ git-annex (8.20200227) UNRELEASED; urgency=medium
that the cwd will be inside the repo being upgraded. In particular,
this fixes a problem where upgrading a v7 repo to v8 caused an ugly
git error message.
* Fix upgrade failure when a file has been deleted from the working tree.
* Improve behavior when a directory git-annex is writing to gets
unmounted. Previously it could in some cases re-create the mount point
and directory tree, and even write object contents to the wrong disk.

View file

@ -101,7 +101,7 @@ populateKeysDb = do
(l, cleanup) <- inRepo $ LsFiles.inodeCaches [top]
forM_ l $ \case
(_f, Nothing) -> giveup "Unable to parse git ls-files --debug output while upgrading git-annex sqlite databases."
(f, Just ic) -> unlessM (liftIO $ isSymbolicLink <$> getSymbolicLinkStatus f) $ do
(f, Just ic) -> unlessM (liftIO $ catchBoolIO $ isSymbolicLink <$> getSymbolicLinkStatus f) $ do
catKeyFile (toRawFilePath f) >>= \case
Nothing -> noop
Just k -> do

View file

@ -33,3 +33,5 @@ the error first apperard in 8.20200226-5
everything worked like a charm until this recent change
> [[fixed|done]] --[[Joey]]

View file

@ -0,0 +1,17 @@
[[!comment format=mdwn
username="joey"
subject="""comment 4"""
date="2020-03-09T20:53:45Z"
content="""
I was able to reverse engineer the error message by deleting one of the
file in the git repository, but not staging the deletion.
That does not seem to match what you were saying about the symlink
existing, but perhaps it was upgrading some other repository where
the file was deleted, or very likely I am failing to understand what you
were trying to explain.
Since what I've fixed is the only way it could throw that exception, I'm
going to assume this bug is fixed, but if you try the next version of
git-annex and it still has the problem, do follow up.
"""]]