gitup
— A
minimalist, dependency-free program to clone/pull Git
repositories.
gitup |
section [-cklrSV ]
[-C configuration file]
[-d display depth]
[-h commit checksum]
[-I ignore paths that contain this
string] [-p target
path] [-t tag]
[-u pack file]
[-v verbosity]
[-w commit checksum] |
gitup
is a minimalist, dependency-free
program used to clone or synchronize a local copy of a Git repository. It is
not intended to be a full-featured replacement for the devel/git port, but
rather, is intended to provide a convenient way for users to update FreeBSD
source files without having to install devel/git (and all of its related
dependencies) and without the substantial disk overhead that normally
accompany local Git repositories.
gitup
currently only supports anonymous,
encrypted transfers via the "Smart HTTP" protocol over HTTPS.
Configuration options are stored in /usr/local/etc/gitup.conf and
are grouped into commonly used sections (additional custom sections can be
added to this file). The following command line options can be used to
override the default and/or section values:
-C
- The location of the configuration file to use.
-c
- Force
gitup
to clone the repository.
-d
- Limit the display of updated files to the specified number of directories
deep. (0 = display the full path of each file).
-h
- The "have" commit checksum of the repository to use. Only needed
when importing a pack file generated by the official Git client.
-I
- Ignore paths that contain this string. Regular expressions are
supported.
-k
- Save a copy of the pack data.
-l
- Low memory mode -- temporarily stores uncompressed object data to disk
instead of memory.
-p
- Path to an alternative local repository (override the `target_directory`
that is specified in gitup.conf(5)). The SHA1 checksum of the new absolute
target path is appended to the known paths filename in /var/db/gitup
allowing multiple independent copies of the repository to exist.
-r
- Repair the local repository, replacing any files that are missing or have
been modified.
-S
- Specify the source IP address on the local machine to use.
-t
- Fetch the commit referenced by the specified tag.
-u
- Skip the download of the pack data and use the specified file
instead.
-v
- How verbose the output should be (0 = no output, 1 = show only names of
the updated files, 2 = also show all files that are being ignored, 3 =
also show commands sent to the server and additional debugging
information).
-V
- Display the version number and exit.
-w
- The "want" commit checksum of the repository to retrieve.
- /usr/local/etc/gitup.conf
- Default location of the
gitup
configuration
file.
- /var/db/gitup
- Default location where
gitup
stores its lists of
known files. The files stored here are used during subsequent runs to
reconstruct the local repository state and confirm that the local tree is
intact.
Proxy server host, port, username and password values can be
entered in "/usr/local/etc/gitup.conf" or can be specified in the
https_proxy environment variable:
https://server:port/
https://username:password@server:port/
Because gitup
neither uses nor updates the
.git directory, it is not a drop-in replacement for the official Git client.
gitup
should only be used on repositories originally
cloned with the official Git client if there is no intention to ever use the
official Git client on that local repository again.
To keep its footprint as small as possible,
gitup
does not retain pack files downloaded from the
repository (unless explicitly instructed to do so) and does not use a saved
pack file (unless explicitly instructed to do so).
gitup
relies on the known remote files lists stored
in /var/db/gitup and the current state of the local repository to
reconstruct data that would normally be stored in the pack file.
Discrepancies in the local repository will be flagged as errors and
gitup
will attempt to any restore any missing or
modified files from the server, returning the local repository to a clean
state.
Extra care should be given when specifying a commit to pull as
gitup
only performs shallow clones and does not have
access to a repository's full commit history. If a commit is passed in via
the -w command line argument and that commit exists
on a different branch, the Git server will neither object nor inform
gitup
of the branch change and will send a pack file
that will convert the local repository. If the change of branches is
intentional, the relevant section in /usr/local/etc/gitup.conf will need to
be manually updated.
Using the configuration options for commonly used
repositories/branches stored in /usr/local/etc/gitup.conf, to clone/pull a
copy of the most recent revision of stable/12:
gitup stable
To retrieve a copy of freebsd-ports at commit
0123456789abcdef0123456789abcdef01234567:
gitup ports -w
0123456789abcdef0123456789abcdef01234567
gitup
returns EXIT_SUCCESS upon successful
operation, returns 2 if a repair has occurred and returns EXIT_FAILURE upon
any unsuccessful operation.
John Mehr <jmehr@umn.edu> is the author of
gitup
and this man page.