add --force-small: Send all non-regular files through addFile

Running `git annex add --force-small` on a modified submodule fails
when the submodule path is fed to hash-object.  This failure is
unlikely to be triggered by a caller passing a submodule explicitly to
`git annex add` because there's nothing useful that annex-add can do
with a submodule.  A more likely scenario for hitting this failure is
that the caller passes "." or a subdirectory to `annex-add` while a
submodule underneath the specified path happens to be modified.

addSmallOverridden already routes symbolic links through addFile
rather than using the custom hash-object/update-index call.  The
latter is valid only for regular files, so extend this condition so
that everything that isn't a regular file goes through addFile.  Doing
so avoids the above error because submodules come in as directories.
This commit is contained in:
Kyle Meyer 2020-03-23 15:45:15 -04:00 committed by Joey Hess
parent c0ceb969e6
commit 39131b55ca
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38

View file

@ -108,7 +108,7 @@ addSmallOverridden file = do
showNote "adding content to git repository"
let file' = fromRawFilePath file
s <- liftIO $ getSymbolicLinkStatus file'
if isSymbolicLink s
if not (isRegularFile s)
then addFile file
else do
-- Can't use addFile because the clean filter will