Debian repositories are hosted on
git.debian.org under the pkg-xorg/*
namespace. Each repository is about a single Debian source package.
We have two types of repositories:
-
regular packages: 1 upstream repository → 1 Debian repository → 1
Debian source package (non-native).
-
bundle packages: multiple upstream repositories → 1 Debian
repository → 1 Debian source package (native).
A local git repository can have several remotes. In the context of
Debian packaging, one usually starts by cloning the Debian repository,
so origin will likely point to git.debian.org. One can use
upstream to point to anongit.freedesktop.org. The following
documentation assumes this convention.
The following bits in ~/.gitconfig will make it possible to fetch
updates using the git protocol (anonymously), and to push updates
through ssh without having to fiddle with the remote’s URL (in other
words: using git://git.debian.org everywhere):
[url "ssh://git.debian.org"]
pushInsteadOf = "git://git.debian.org"
To get the repository from git.debian.org one can run debcheckout
$package (or debcheckout $package $package.git), which will use the
Vcs-Git fields in the APT cache to pick the appropriate git
location. To add the upstream remote (using the info stored in
debian/watch), one can use xsf-remote-add-upstream script from the
pkg-xorg/debian/xsf-tools.git
repository.
TODO: There will be more information about how to deal with the
many repositories maintained by the X Strike Force in a later chapter.
The usual workflow is to keep the target suite in debian/changelog
to UNRELEASED until the upload happens, the last commit before a
commit being only dch -r. To achieve that, and to avoid noise since
those packages are comaintained, it’s advised to set the following
variable in ~/.devscripts:
DEBCHANGE_RELEASE_HEURISTIC=changelog