VCS comparison table
Linus Torvalds
torvalds at osdl.org
Tue Oct 24 07:31:06 BST 2006
On Tue, 24 Oct 2006, Lachlan Patrick wrote:
>
> Can I ask the git folks what Sean meant in the above about a 'command'.
> Are you talking about shell scripts? Is 'git' the only program you need?
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..
These days, most of the simple things like "git log" are all built into
the "git" program, although for anything not built in, it still acts as
just a wrapper, which allows not only random functionality to still be
written in shell (or sometimes perl), but also ends up being the simplest
possible plug-in mechanism: you can define your own commands by just
writing a shell-script thing, calling it "git-mycommand", installing it in
the proper place, and it ends up being accessible as "git mycommand".
That allows for easy prototyping in your language of choice.
> AFAIK, 'bzr' is the sole program in Bazaar, and everything is done with
> command line options to bzr. Is that true of git? To what extent is git
> tied to a [programmable] shell? I've heard someone say there's no
> Windows version of git for some reason, can someone elaborate?
Almost all of "core" git is pure C, which unlike something like python or
perl obviously tends to have a fair amount of system issues. That said,
much of it really is fairly portable, so doing the built-in git stuff
should _largely_ work even natively under Windows with some effort.
The problem ends up being that few enough people seem to develop under
Windows, and the cygwin port works better (because it handles a number of
the portability issues and also handles the scripts that are still shell).
Those two issues seem to mean that not a lot of effort has been put into
aiming for a native windows binary (or into moving away from shell
scripts).
Most of the shell scripts really are fairly simple. So if somebody
_really_ wanted to, it would probably not be hard to spend some effort to
either just write them as C and turn them into built-ins, or porting them
to some other scripting language.
Of course, most Windows users don't seem to really want a command line
interface at all. IDE integration would appear to be more interesting to
some people.
Linus
More information about the bazaar
mailing list