On Mon, 23 Oct 2006, Linus Torvalds wrote: > Historically, "git" was _only_ a wrapper program. When you did > > git log > > it just executed the real program called "git-log", which was often a > shell-script. That was just so that things could easily be extended, and > you could use shell-script for simple one-liner things, and native C for > more "core" stuff. > > For example, "git log" used to be a one-line shell-script that just did > > git-rev-list --pretty HEAD | LESS=-S ${PAGER:-less} > > but it ended up being a lot more capable, and eventually just rewritten > as an internal command.. > Some of the internal commands that have been coded in C are actually much better handled by the shell in the first place. It's much simpler to write and extend as well as being much more traceable for runtime problems. The shell commands that would be used for most of these git routines have options for requesting it to be more verbose so the user actually has a lot more power over reporting and/or logging. In addition it tends to be more portable and the amount of code is drastically reduced in a script style of programming. The criticisms against such use of shell scripting tends to be a matter of personal taste. People believe, for some reason or another, that it is a lower-class type of programming that is less robust and is harder to understand. Seldom have there been cogent arguments for coding such features in C as opposed to shell scripting, especially in the case of git where the shell becomes a very powerful ally. David - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html