On Wed, 26 Jun 2013 13:00:13 -0700 (PDT)
supertol felixo...@gmail.com wrote:
Is there any version of git that works as a standalone executable
file (can still depend on libraries, ofc).
Means, i'd be lookinf for a git.exe (+ dependencies) that i can just
drop to a folder and use to initialize a repo in that folder, without
having git installed and without git somehow 'polluting' the system.
A true standalone command line tool.
It *seems* to work when i copy the entire git/bin folder over. Can
anyone confirm this works, or does that have side effects?
It's a bit complicated:
1) There's a single top-level Git binary, which is simply called `git`,
and which is responsible for handling individual commands (like
`git push`) either by itself or by dispatching them to other
programs.
2) Now there's a handful of legacy `git-whatever` programs, most of
which are symlinks to that top-level `git` binary. They are there
to not break existing scripts which rely on their presence.
3) Some bits of Git functionality are implemented not by the main
program but other programs. Notable examples are `git rebase`,
`git submodule` and `git svn`.
On my Debian system I could do
$ vdir /usr/lib/git-core/
and just look at which entries are symlinks and which are regular
files to get the idea.
4) While most of Git is implemented in C, some bits of it are
implemented in POSIX shell (`git rebase` is a notable example),
and others are implemented in Perl (`git svn` is a notable example).
While the shell scripts are usually self-contained, `git svn` depends
on the presence of a rather extensive Perl library to interact with
Subversion servers; for this reason Git for Windows even bundles this
whole stuff.
So, in the end:
* No, there's no single executable.
* Mere copying the main Git binary could work for some fair percent of
Git functionality -- unless you call a Git command using the legacy
`git-whatever` convention or attempt to call something not implemented
by the main Git binary itself, for instance, `git rebase`.
* Everything implemented in Perl will be out of the game, for the same
reason.
Another thing to consider is that Git does not makes any promises about
how exactly various commands it supports are implemented: for instance,
some day `git rebase` might be re-implemeted using C and hence will be
supported directly by the main Git binary.
If you really need a self-contained executable, consider looking at
Fossil [1] -- it (in my eyes) is inferiour to Git feature-wise, but its
binaries are routinely dependent only on libc, libz (but it could be
compiled in statically) and libssl if you want SSL support.
And it's self-serving, including an extensive built-in web UI.
I'm using it in several places and for simple things it works bearable,
especially if you're not too much into command-line stuff (I am, so
that's why bearable and not wonderful) ;-)
1. http://www.fossil-scm.org/
--
You received this message because you are subscribed to the Google Groups Git
for human beings group.
To unsubscribe from this group and stop receiving emails from it, send an email
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.