Git-2.39.2
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-6.3.2,
Bazaar, Subversion-1.14.2,
CVS,
Perforce, and
Team Foundation Server.
This package is known to build and work properly
using an LFS 11.3 platform.
Package Information
Download (HTTP): https://www.kernel.org/pub/software/scm/git/git-2.39.2.tar.xz
Download MD5 sum: 32d34dc65ae0955cc68c7152b5ca8b13
Download size: 6.8 MB
Estimated disk space required: 392 MB (with downloaded documentation, add 18 MB to build documentation)
Estimated build time: 0.3 SBU (with parallelism=4; add 0.4 SBU for building documentation and 1.6 SBU (disk speed dependent) for tests, both with parallelism=4)
Additional Downloads
Git Dependencies
Recommended
cURL-7.88.1 (needed to use Git over
http, https, ftp or ftps)
Optional
GnuPG-2.4.0 (runtime, may be used to sign
Git commits or tags, or verify the signatures
of them),
OpenSSH-9.2p1 (runtime, needed to use
Git over ssh),
pcre2-10.42 (or the deprecated PCRE-8.45), in either case configured with
--enable-jit
,
Subversion-1.14.2 with Perl bindings
(runtime, for git svn),
Tk-8.6.13
(gitk, a simple Git
repository viewer, uses Tk at runtime),
Valgrind-3.20.0,
Authen::SASL and
MIME::Base64
(both runtime, for git send-email),
and IO-Socket-SSL-2.081 (runtime, for
git send-email to connect to a SMTP server with
SSL encryption)
Optional (to create the man pages, html docs
and other docs)
xmlto-0.0.28 and
asciidoc-10.2.0
,
and also
dblatex
(for the PDF version of the user manual), and
docbook2x to
create info pages
User Notes:
https://wiki.linuxfromscratch.org/blfs/wiki/git
Installation of Git
Install Git by running the following
commands:
./configure --prefix=/usr \
--with-gitconfig=/etc/gitconfig \
--with-python=python3 &&
make
You can build the man pages and/or html docs, or
use downloaded ones. If you choose to build them, use the next two
instructions.
If you have installed asciidoc-10.2.0 you can
create the html version of the man pages and other docs:
make html
If you have installed asciidoc-10.2.0 and
xmlto-0.0.28 you can create the man pages:
make man
The test suite can be run in parallel mode. To run the test suite, issue:
make test. If run as a normal user, 0 tests should be
reported as failed in the final summary.
Now, as the root
user:
make perllibdir=/usr/lib/perl5/5.36/site_perl install
If you created the man pages and/or html docs
Install the man pages as the
root
user:
make install-man
Install the html docs as the
root
user:
make htmldir=/usr/share/doc/git-2.39.2 install-html
If you downloaded the man pages and/or html docs
If you downloaded the man pages untar them as the
root
user:
tar -xf ../git-manpages-2.39.2.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 -vp /usr/share/doc/git-2.39.2 &&
tar -xf ../git-htmldocs-2.39.2.tar.xz \
-C /usr/share/doc/git-2.39.2 --no-same-owner --no-overwrite-dir &&
find /usr/share/doc/git-2.39.2 -type d -exec chmod 755 {} \; &&
find /usr/share/doc/git-2.39.2 -type f -exec chmod 644 {} \;
Reorganize text and html in the html-docs (both methods)
For both methods, the html-docs include a lot of plain text files.
Reorganize the files as the
root
user:
mkdir -vp /usr/share/doc/git-2.39.2/man-pages/{html,text} &&
mv /usr/share/doc/git-2.39.2/{git*.txt,man-pages/text} &&
mv /usr/share/doc/git-2.39.2/{git*.,index.,man-pages/}html &&
mkdir -vp /usr/share/doc/git-2.39.2/technical/{html,text} &&
mv /usr/share/doc/git-2.39.2/technical/{*.txt,text} &&
mv /usr/share/doc/git-2.39.2/technical/{*.,}html &&
mkdir -vp /usr/share/doc/git-2.39.2/howto/{html,text} &&
mv /usr/share/doc/git-2.39.2/howto/{*.txt,text} &&
mv /usr/share/doc/git-2.39.2/howto/{*.,}html &&
sed -i '/^<a href=/s|howto/|&html/|' /usr/share/doc/git-2.39.2/howto-index.html &&
sed -i '/^\* link:/s|howto/|&html/|' /usr/share/doc/git-2.39.2/howto-index.txt
Command Explanations
--with-gitconfig=/etc/gitconfig
: This sets
/etc/gitconfig
as the file that stores
the default, system wide, Git
settings.
--with-python=python3
: Use this switch to use
Python 3, instead of the EOL'ed
Python 2. Python is used for the
git p4 interface to Perforce repositories,
and also used in some tests.
--with-libpcre2
: Use this switch if
PCRE2 is installed and has been built with
the non-default JIT enabled.
--with-libpcre1
: As an alternative to PCRE2, use this
switch if the deprecated PCRE is installed
and has been built with the non-default JIT enabled.
tar -xf ../git-manpages-2.39.2.tar.gz -C
/usr/share/man --no-same-owner: This untars
git-manpages-2.39.2.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.39.2 ...: 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.
Configuring Git
Config Files
~/.gitconfig
and
/etc/gitconfig
Contents
Installed Programs:
git, git-receive-pack, git-upload-archive, and
git-upload-pack (hardlinked to each
other), git-cvsserver, git-shell, gitk, and scalar
Installed Libraries:
None
Installed Directories:
/usr/libexec/git-core, and
/usr/share/{doc/git-2.39.2,git-core,git-gui,gitk,gitweb}
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.13)
|
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
|
scalar |
is a repository management tool that optimizes Git for use in
large repositories
|