I just spend an hour to understand why the following command did not do anything:

$ git annex copy --to someremote SomeDirectory

With SomeDirectory containing a lot of file that are not in the someremote repository. I just realized that the annex from which I run the command did not contain those files either.

I then did

$ git annex get SomeDirectory

So that now the git annex copy command correctly copies the files to the someremote remote.

I hope I won't fall into that trap again, but I think it is very annoying not to know why nothing happened.

Wouldn't it be great if the git annex copy command would indicate why some file are not copied, like:

$ git annex copy --to someremote SomeDirectory
Cannot copy SomeFile1 since it is not present in here, (hint: run git annex get first)
Cannot copy SomeFile2 since it is not present in here, (hint: run git annex get first)
Cannot copy SomeFile3 since it is not present in here, (hint: run git annex get first)
...

May be this kind of information could be provided if the verbose flag is set.

Another awesome (totally subjectively speaking) way of doing it could be to get the file before copying it

$ git annex copy --to someremote SomeDirectory
Cannot copy SomeFile1 since it is not present in here, attempting getting it first
get SomeFile1 (from someotherremote...)
SHA256E-s109353088--71734pq1p4qo6qs1p156r48s2290q7p61p1658029p103591nrs1rr708s064p59
     12,615,808 100%  161.27kB/s    0:01:16 (xfr#1, to-chk=0/1)
ok
copy SomeFile1 (checking someremote...) (to someremote...)
SHA256E-s109353088--71734pq1p4qo6qs1p156r48s2290q7p61p1658029p103591nrs1rr708s064p59
     12,615,808 100%  161.27kB/s    0:01:16 (xfr#1, to-chk=0/1)
ok
Cannot copy SomeFile2 since it is not present in here, attempting getting it first
get SomeFile2 (from someotherremote...)
SHA256E-s109353088--71734pq1p4qo6qs1p156r48s2290q7p61p1658029p103591nrs1rr708s064p59
     12,615,808 100%  161.27kB/s    0:01:16 (xfr#1, to-chk=0/1)
ok
copy SomeFile2 (checking someremote...) (to someremote...)
SHA256E-s109353088--71734pq1p4qo6qs1p156r48s2290q7p61p1658029p103591nrs1rr708s064p59
     12,615,808 100%  161.27kB/s    0:01:16 (xfr#1, to-chk=0/1)
ok
Cannot copy SomeFile3 since it is not present in here, attempting getting it first
get SomeFile3 (from someotherremote...)
SHA256E-s109353088--71734pq1p4qo6qs1p156r48s2290q7p61p1658029p103591nrs1rr708s064p59
     12,615,808 100%  161.27kB/s    0:01:16 (xfr#1, to-chk=0/1)
ok
copy SomeFile3 (checking someremote...) (to someremote...)
SHA256E-s109353088--71734pq1p4qo6qs1p156r48s2290q7p61p1658029p103591nrs1rr708s064p59
     12,615,808 100%  161.27kB/s    0:01:16 (xfr#1, to-chk=0/1)
ok

We could also specify from which remote to get the file with

$ git annex copy --to someremote --from someotherremote SomeDirectory