Please describe the problem.

After release 10.20220927 any get or drop command that changes availability of content causes git-annex to issue the following notice:

  git status will show some files to be modified, since content availability has changed and git-annex was unable to update the index. This is only a cosmetic problem affecting git status; git add, git commit, etc won't be affected. To fix the git status display, you can run: git-annex restage

Yet git status is clean and no git-annex restage is needed.

What steps will reproduce the problem?

Use a crippled filesystem on Windows with adjusted unlocked branches and try to get content from a remote or drop content locally.

What version of git-annex are you using? On what operating system?

git-annex version: 10.20220927-g26dea5641
build flags: Assistant Webapp Pairing TorrentParser Benchmark Feeds Testsuite S3 WebDAV
dependency versions: aws-0.22 bloomfilter-2.0.1.0 cryptonite-0.29 DAV-1.3.4 feed-1.3.2.0 ghc-8.10.7 http-client-0.7.9 persistent-sqlite-2.13.0.3 torrent-10000.1.1 uuid-1.3.15 yesod-1.6.1.2
key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
operating system: mingw32 x86_64
supported repository versions: 8 9 10
upgrade supported from repository versions: 2 3 4 5 6 7 8 9 10

The above is for all practical purposes the released version 10.20220927, just a few commits before the release with no code changes.

Windows 10 version 21H2 (build 19044.2006), 64 bit.

Please provide any additional information below.

C:\Users\jkniiv> k:
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B\arkistoidut [adjusted/master(unlocked)]> cd ..
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> duf .
╭─────────────────────────────────────────────────────────────────────╮
│ 1 local device                                                      │
├────────────┬──────┬──────┬───────┬────────┬──────┬──────────────────┤
│ MOUNTED ON │ SIZE │ USED │ AVAIL │  USE%  │ TYPE │ FILESYSTEM       │
├────────────┼──────┼──────┼───────┼────────┼──────┼──────────────────┤
│ K:\        │ 3.6T │ 3.6T │ 34.9G │  99.1% │ NTFS │ Jibun.Tila2109kc │
╰────────────┴──────┴──────┴───────┴────────┴──────┴──────────────────╯
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> git annex-sync --content
merge synced/master (Merging into master...)
Updating 6d4e731..05224ad
Fast-forward
 Jarkon ThinkPad T450s (Win10 v21H1) . B/79698DAC29A079D3-06-06.mrimg | 1 +
 1 file changed, 1 insertion(+)
 create mode 120000 Jarkon ThinkPad T450s (Win10 v21H1) . B/79698DAC29A079D3-06-06.mrimg
(Merging into adjusted branch...)
Updating 51cb822..f175b90
Fast-forward
 Jarkon ThinkPad T450s (Win10 v21H1) . B/79698DAC29A079D3-06-06.mrimg | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 Jarkon ThinkPad T450s (Win10 v21H1) . B/79698DAC29A079D3-06-06.mrimg
ok
pull origin
From G:\Reflect-varmistukset
   f984af1..013ea2d  git-annex     -> origin/git-annex
   6d4e731..05224ad  master        -> origin/master
   6d4e731..05224ad  synced/master -> origin/synced/master
ok
get Jarkon ThinkPad T450s (Win10 v21H1) . B/79698DAC29A079D3-06-06.mrimg (from origin...)
ok
pull origin
ok
(recording state in git...)
push origin
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 4 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 476 bytes | 238.00 KiB/s, done.
Total 5 (delta 2), reused 0 (delta 0), pack-reused 0
To G:\Reflect-varmistukset
   f984af1..3ebe493  git-annex -> synced/git-annex
ok
(recording state in git...)

  git status will show some files to be modified, since content availability has changed and git-annex was unable to update the index. This is only a cosmetic problem affecting git status; git add, git commit, etc won't be affected. To fix the git status display, you can run: git-annex restage
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> git annex version --raw
10.20220927-g26dea5641
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> git status
On branch adjusted/master(unlocked)
nothing to commit, working tree clean
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> git annex drop 79698DAC29A079D3-06-06.mrimg
drop 79698DAC29A079D3-06-06.mrimg (unsafe)
  Could only verify the existence of 1 out of 2 necessary copies

  Rather than dropping this file, try using: git annex move

  (Use --force to override this check, or adjust numcopies.)
failed
drop: 1 failed
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> git annex drop --force 79698DAC29A079D3-06-06.mrimg
drop 79698DAC29A079D3-06-06.mrimg ok
(recording state in git...)

  git status will show some files to be modified, since content availability has changed and git-annex was unable to update the index. This is only a cosmetic problem affecting git status; git add, git commit, etc won't be affected. To fix the git status display, you can run: git-annex restage
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> git status
On branch adjusted/master(unlocked)
nothing to commit, working tree clean
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> echo "Installing version 10.20220823-g34e313f78 in the background"
Installing version 10.20220823-g34e313f78 in the background
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> git annex version --raw
10.20220823-g34e313f78
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> ls 79698DAC29A079D3-06-06.mrimg

    Directory: K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           30.9.2022    14:53             87 79698DAC29A079D3-06-06.mrimg

K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> git annex get 79698DAC29A079D3-06-06.mrimg
get 79698DAC29A079D3-06-06.mrimg (from origin...)
ok
(recording state in git...)
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> git annex drop --force 79698DAC29A079D3-06-06.mrimg
drop 79698DAC29A079D3-06-06.mrimg ok
(recording state in git...)
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> git status
On branch adjusted/master(unlocked)
nothing to commit, working tree clean
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> ls 79698DAC29A079D3-06-06.mrimg

    Directory: K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           30.9.2022    15:01             87 79698DAC29A079D3-06-06.mrimg

K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> head 79698DAC29A079D3-06-06.mrimg
/annex/objects/BLAKE2B160E-s8305341589--ab8ca27391c2f68c1c4d677942deaf5022498752.mrimg
K:\Reflect-varmistukset\Jarkon ThinkPad T450s (Win10 v21H1) . B [adjusted/master(unlocked)]> cat ..\.git\config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[interactive]
        diffFilter = delta --color-only
[remote "origin"]
        url = G:\\Reflect-varmistukset
        fetch = +refs/heads/*:refs/remotes/origin/*
        fetch = ^refs/heads/adjusted/*
        annex-uuid = redacted1-1789-4471-96a0-redactedabcd
[annex]
        thin = true
        backend = MD5E
        maxextensionlength = 8
        uuid = redacted2-45c8-4a86-b348-redactedabcd
        sshcaching = false
        crippledfilesystem = true
        version = 10
        diskreserve = 1000M
[filter "annex"]
        smudge = git-annex smudge -- %f
        clean = git-annex smudge --clean -- %f
[merge]
        renames = true
        directoryRenames = false

# End of transcript or log.

Btw. the git annex-sync alias above is defined to be annex sync --no-commit.

Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)

Git Annex is great. I use it several times a week with my multigigabyte backups, where it gives structure to my image-based backup routines, so you could say I'm a believer. :)

Big thanks, Joey!

fixed --Joey