Currently in a git annex adjust --hide-missing branch, the only way to get missing files is to run git annex sync --content, with appropriate preferred content settings or with -C path to get a specific path. This is kind of klunky for ad-hoc getting files.

It would be possible to make git annex get, git annex copy --from remote, etc operate on hidden files. Some of the infrastructure is there; it may be as simple as using LsFiles.inRepoOrBranch instead of LsFiles.inRepo to seek the files.

Two open questions:

  • Would it make more sense for this to be the default behavior when in the adjusted branch, or for it to be an option, like "--branch=master"?

    One advantage to the latter is that it would also be usable in bare repos, or if you just for some reason want to get files present in some other branch than the current one.

    The former might be easier, but it could also be kind of surprising. git annex get . would download tons of files, which ls doesn't display.

    Of course, both things could be supported too.

  • After getting the files, they'll still be hidden until the branch is updated to include them. When should that happen?

    The current method of re-running git annex adjust --hide-missing will expose them, but the way that works is probably too slow to run after every command. Even if it were fast, it would generate a lot of dangling objects over time. So leave the update up to the user to run the command when they want it? But then the user may get confused, why did it download files and they didn't appear?