In russian keyboard layout encoding (and printouts tradition) double-quotesare used often. While single quotes and back-ticks are used rarely (those are just missed from the layout).
As of now function TGitClient.Commit uses ' commit -m ' + AnsiQuotedStr(AMessage, '"') approach that does not do.
Escaping semantics is determined by MS VC++ runtime for most usual Git/MSys. It is probably different for Git/Cygwin and non-Windows Git implementations.
Probably temp file should be used to carry message. Which solves all escaping problems, but asks for pre-determining of encoding and converting it to windows codepage numbers
More on that:
// Pity, Git/MSys is not aware of temporary auto-deleted files semantics, so for know
// explicit closing file to be done before invoking Git, and deleting to be made after.
// Hopefully that would change later.
// * https://github.com/msysgit/git/issues/27
// ToDo - check that default encoding can differ from UTF8, then choose codepage after ISO encoding label
// * git config --get -z i18n.commitencoding
// * http://www.kernel.org/pub/software/scm/git/docs/git-config.html#_options
// * http://www.kernel.org/pub/software/scm/git/docs/git-commit.html#_discussion