Purpose of branches

upstream
Upstream code with releases tagged as upstream/VERSION
debian
Debian packaging. The diff of this branch against upstream must not included stuff outside the debian/ subdirectory. Merging upstream code into this branch never conflicts.
up/*
Topic branches with patches intended to be merged with upstream. Any such branch starts by branching from upstream.
deb/*
Debian-specific topic branches with patches that are not intended to be merged with upstream. Any such branch also starts by branching from upstream.
master
Merge-only branch that contains upstream sources, the debian packaging, as well as all patches. The diff of this branch against upstream is identical to the content of the diff.gz of the final source package. This branch is tagged debian/DEBVERSION when a Debian package version is released.
maint/CODENAME
Maintenance branches for already released package versions, e.g. for security fixes of packages versions in stable releases (where CODENAME is the name of the respective release). A maintenance branch is started whenever it is necessary by branching from the corresponding debian/DEBVERSION tag in master.