Git-2.0.4

Introduction to Git

Git is a free and open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Branching and merging are fast and easy to do. Git is used for version control of files, much like tools such as Mercurial, Bazaar, Subversion-1.8.9, CVS-1.11.23, Perforce, and Team Foundation Server.

This package is known to build and work properly using an LFS-7.5 platform.

Package Information

Additional Downloads

Git Dependencies

Recommended

Optional

PCRE-8.35, Subversion-1.8.9 with Perl bindings (for git svn), and Tk-8.6.1 (gitk, a simple Git repository viewer, uses Tk at runtime)

Optional (to create the man pages and html docs)

xmlto-0.0.26 and AsciiDoc

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/git

Installation of Git

Install Git by running the following commands:

./configure --prefix=/usr         \
            --with-gitconfig=/etc/gitconfig &&
make

If you have installed AsciiDoc you can create the html version of the man pages and other docs:

make html

If you have installed AsciiDoc and xmlto-0.0.26 you can create the man pages:

make man

To check the results, issue: make test.

Now, as the root user:

make install

If you created the man pages, install them as the root user:

make install-man

If you created the html docs, install them as the root user:

make htmldir=/usr/share/doc/git-2.0.4 install-html              &&
mkdir -p /usr/share/doc/git-2.0.4/man-pages/{html,text}         &&
mv       /usr/share/doc/git-2.0.4/{git*.txt,man-pages/text}     &&
mv       /usr/share/doc/git-2.0.4/{git*.,index.,man-pages/}html &&
mkdir    /usr/share/doc/git-2.0.4/technical/{html,text}         &&
mv       /usr/share/doc/git-2.0.4/technical/{*.txt,text}        &&
mv       /usr/share/doc/git-2.0.4/technical/{*.,}html           &&
mkdir    /usr/share/doc/git-2.0.4/howto/{html,text}             &&
mv       /usr/share/doc/git-2.0.4/howto/{*.txt,text}            &&
mv       /usr/share/doc/git-2.0.4/howto/{*.,}html

Alternatively, If you downloaded the man pages untar them as the root user:

tar -xf ../git-manpages-2.0.4.tar.xz -C /usr/share/man --no-same-owner --no-overwrite-dir

If you downloaded the html docs untar them as the root user:

mkdir -p /usr/share/doc/git-2.0.4/man-pages/{html,text}         &&

tar -xf  ../git-htmldocs-2.0.4.tar.xz \
    -C   /usr/share/doc/git-2.0.4 --no-same-owner --no-overwrite-dir &&

find /usr/share/doc/git-2.0.4 -type d -exec chmod 755 {} \;     &&
find /usr/share/doc/git-2.0.4 -type f -exec chmod 644 {} \;     &&

mv       /usr/share/doc/git-2.0.4/{git*.txt,man-pages/text}     &&
mv       /usr/share/doc/git-2.0.4/{git*.,index.,man-pages/}html &&
mkdir    /usr/share/doc/git-2.0.4/technical/{html,text}         &&
mv       /usr/share/doc/git-2.0.4/technical/{*.txt,text}        &&
mv       /usr/share/doc/git-2.0.4/technical/{*.,}html           &&
mkdir    /usr/share/doc/git-2.0.4/howto/{html,text}             &&
mv       /usr/share/doc/git-2.0.4/howto/{*.txt,text}            &&
mv       /usr/share/doc/git-2.0.4/howto/{*.,}html

Command Explanations

--with-gitconfig=/etc/gitconfig: This sets /etc/gitconfig as the file that stores the default, system wide, Git settings.

--without-python: Use this switch if Python is not installed.

--with-libpcre: Use this switch if PCRE is installed.

tar -xf ../git-manpages-2.0.4.tar.gz -C /usr/share/man --no-same-owner: This untars git-manpages-2.0.4.tar.gz. The -C option makes tar change directory to /usr/share/man before it starts to decompress the docs. The --no-same-owner option stops tar from preserving the user and group details of the files. This is useful as that user or group may not exist on your system; this could (potentially) be a security risk.

mv /usr/share/doc/git-2.0.4 ...: These commands move some of the files into subfolders to make it easier to sort through the docs and find what you're looking for.

find ... chmod ...: These commands correct the permissions in the shipped documentation tar file.

--libexecdir=/usr/lib: This option puts the git-core directory in /usr/lib instead of /usr/libexec in accordance with the old version of the FHS used before LFS-7.5.

Configuring Git

Config Files

~/.gitconfig and /etc/gitconfig

Contents

Installed Programs: git, git-receive-pack and git-upload-archive (hardlinked to each other), git-shell, git-cvsserver, git-upload-pack, and gitk
Installed Libraries: None
Installed Directories: /usr/libexec/git-core, /usr/share/doc/git-2.0.4, /usr/share/git-core, /usr/share/git-gui, /usr/share/gitk, /usr/share/gitweb, /usr/lib/perl5/site_perl/<5.x.y>/Git and /usr/lib/perl5/site_perl/<5.x.y>/<arch-linux>/auto/Git

Short Descriptions

git

is the stupid content tracker.

git-cvsserver

is a CVS server emulator for Git.

gitk

is a graphical Git repository browser (needs Tk-8.6.1).

git-receive-pack

is invoked by git send-pack and updates the repository with the information fed from the remote end.

git-shell

is a login shell for SSH accounts to provide restricted Git access.

git-upload-archive

is invoked by git archive --remote and sends a generated archive to the other end over the git protocol.

git-upload-pack

is invoked by git fetch-pack, it discovers what objects the other side is missing, and sends them after packing.

Last updated on 2014-07-31 06:58:42 +0000