[[!comment format=mdwn
 username="joey"
 subject="""comment 1"""
 date="2016-07-12T17:13:37Z"
 content="""
This is due to git-annex using `git ls-files --others --exclude-standard`
to find files to add. Since that silently skips ignored files, so does
git-annex.

Now that git has `git check-ignore --stdin`, it would be possible for
git-annex to not run `git ls-files` with `--exclude-standard`, and
instead check each file it returns to see if it's ignored, and print out 
a warning message.

But, that would mean a round-trip through the pipe for each filename.
When operating on a directory containing a lot of new 
files, it would probably slow down the processing somewhat.

Hmm, but, `git add somedir` does not warn if there are gitignored files in
somedir; it silently skips them while adding the rest of the directory.
The warning comes only when explicitly listing an ignored file.

So, git-annex could do the same, only passing the filename through
checkingnore when it's a normal file and not a directory. This does
entail statting every command-line parameter though, and passing through
checkignore would still slow things down. Particularly when `git annex add`
is run with a huge list of files to add.

I don't know if it's super-important for `git annex add` to mirror every
behavior of `git add` anyway. Other differences include `git annex add`
with no parameters defaulting to adding ".", and `git annex add`
skipping dotfiles by default.

In v6 mode, you can use `git add` to do the same thing as `git annex add`,
only more slowly. So it could be argued that `git annex add` will remain
separate from `git add` only because its different behavior can be more
useful, and for performance reasons. Which makes slowing `git annex add`
down in order to make it behave more like `git add` seem counterproductive.
"""]]
