In the compilation database command must be escaped. This can cause problems on some systems (Windows). cmd is added as a list of command line arguments that will not be escaped.
Small aside: phab helps mainly when context is added to the diff (see http://llvm.org/docs/Phabricator.html)
git: git diff -U999999 other-branch
svn: svn diff --diff-cmd=diff -x -U999999
(or you can use the arc diff command line tool)
Apart from that, my comment on the initial thread still stands:
I think we should name the list one "arguments" or (if you prefer) "args"; I think that makes a lot more sense: command: the shell command that is run, arguments: the command line arguments.
I don't see how the arguments are preferred.
I was thinking that the user would either want to use the command line or list arguments. Is there a case where someone would want to do both?
Also, if we permit both, do we need to do any kind of uniquing?
I changed two other locations to range-based for loops, too.
You're probably right. I guess people are not distributing clang tools (yet!), so we probably don't need tools like cmake to output both at the same time.
What I meant with "preferred" is that we could allow specifying both, and then we would use 'arguments', if specified, and otherwise fall back to 'command'. Does that make sense?