Git is a source code management tool that came into be as a way to handle the large and distributed nature of Linux kernel development. It has since been increasingly adopted for a variety of projects. The git home page is http://git.or.cz.
Getting git[]
Get git from the git home page. Get at least version 1.5.
Installing git[]
Git can supposedly be installed on a wide variety of systems. That doesn't mean it's necessarily trivial. Here are per-system notes on installing git.
Linux[]
This is the main target system for git, so it builds and installs quite readily. The default makefile just works. Untar git, and build/install:
% cd git-1.5.2.2 % make prefix=/usr (or /usr/local, or /opt if you prefer) ... lots of output ... % su # make install prefix=/usr (to match above prefix)
The "make uninstall" target should also work, but it does not. Uninstall target is traditionally unsupported by GIT build system. If you want to uninstall/upgrade GIT later, use packaged releases from your GNU/Linux distribution or install it into a dedicated directory.
Mac OS X[]
The easiest way is to use fink to install git. It "just works."
FreeBSD[]
FreeBSD Ports collection lets you to install git quickly:
# cd /usr/ports/devel/git && make install clean
When in doubt, consult Packages and Ports section of FreeBSD Handbook.
Solaris[]
Makefile doesn't adhere to POSIX 'make' syntax, so use GNU 'make'.
If you don't have "libcurl" and "curl" executable, define the NO_CURL variable to GNU 'make'. For example,
jesus% cd /tmp/git-1.5.2.2 jesus% gmake prefix=/usr NO_CURL=1 all
Disabling curl will compile without curl, but since that is used to support the http and ftp protocol, this will also disable support for "http:" and "ftp:" urls. This should be fine as the main git repository for Icarus Verilog is accessed via a "git:" url.
In the case of SunOS, Makefile sets the INSTALL variable to "ginstall". If that command isn't found, set the variable instead to "/usr/ucb/install", known in the Solaris man pages as install(1B). For example,
root@jesus # gmake prefix=/usr NO_CURL=1 INSTALL=/usr/ucb/install install
Makefile is incompatible with install(1M). The first problem you would notice is relatively minor. For example, the syntax of
$(INSTALL) -d -m755 '$(DESTDIR_SQ)$(bindir_SQ)'
is incorrect because there is no whitespace between the -m option and its mode argument. The second problem is severe. You will see
install: git-convert-objects was not found anywhere!
resulting from
$(INSTALL) $(ALL_PROGRAMS) '$(DESTDIR_SQ)$(gitexecdir_SQ)'
install(1M) searches for the first program, git-convert-objects, in all of the "directories" that follow it. If the file is not found, install(1M) states this and exits. Well, most of those things are not directories. They're more programs. Makefile was obviously not expecting the semantics of install(1M).