The git-debrebase branch format is used by maintainers who are using git-debrebase(1) to manipulate their delta queue.
Branch format
- A git clone of the packaging branch contains
all files under debian/ in the uploaded source package, such as debian/control
If Debian has patched any of the upstream files, e.g. README.md,
those changes may appear as a quilt patch series, in debian/patches/, but that directory is often missing
- git-debrebase(1) creates the directory when it's needed
the changes do appear in the copy of the upstream files in a git clone of the packaging branch
- The git history must have a particular form. There is a formal specification in git-debrebase(5). Maintainers can ensure their history has the right form by following dgit-maint-debrebase(7).
- The upstream source is obtained from upstream git tags, or upstream tarballs imported to git tags using git-import-orig(1).
The .dsc format is usually 3.0 (quilt); others are also supported.
dgit push supports this workflow with no special options.
Common workflow elements
dgit-maint-debrebase(7) is a detailed tutorial. What follows is a very brief summary of that manpage.
New upstream version
- git remote update
- git debrebase new-upstream 1.2.3
Editing the delta queue
- git debrebase -i
Adding new patches
- git-commit(1)
Building source and binary packages
Invoke any build tool without any special options.
For a upload including binaries, it is usually easiest to invoke dgit's wrappers of sbuild/pbuilder.
Forwarding patches upstream
- git checkout -b fixes upstream/master
- git cherry-pick master~2
- submit a pull requests / git-send-email(1) / etc.
Incorporating NMUs
- dgit fetch
- git rebase dgit/dgit/sid
Advantages
- git-debrebase branches are
- directly buildable
- directly editable with only git-commit(1)
- automatically made fast forwarding when published
- have a useful history for git-log(1), git-blame(1).
- There is no need to switch branches to edit the delta queue (unlike with gbp-pq(1))
- There is no need to apply or unapply patches in order to accomplish particular maintainance tasks.
- There is no in-tree metadata (unlike with git-dpm).
The uploaded .dsc has a high quality representation of the delta queue in debian/patches
Contributors do not need to know anything about the branch format in order to prepare patches or MRs that the maintainer can immediately apply to their master branch. They just edit the upstream source or contents of debian/, git-commit(1), and submit their change. git-debrebase(1) automatically splits upstream and packaging changes into separate commits and shuffles them to the right place.
Disadvantages
- git-merge(1) can be used to merge different package maintainers' work only in very limited cases.
