VCS comparison table
David Rientjes
rientjes at cs.washington.edu
Tue Oct 24 07:45:58 BST 2006
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
More information about the bazaar
mailing list