chiark / gitweb /
wip
[talk-2018-dc18-gdr.git] / talk.txt
1 [title slide]
2
3 Hi.
4
5 [context slide]
6
7 Sean Whitton and I are here to present a new git workflow tool for
8 Debian packaging.  It's primarily intended for Debian package
9 maintainers.  It's an alternative to gbp pq and to git-dpm.
10
11 Before I get tell you all about it I need to show where it fits into
12 the ecosystem of Debian package management software.  On this slide we
13 have you, the maintainer, on the left.  On the right we have the
14 Debian repositories.
15
16 You may have heard me plugging dgit once or twice.  You should all use
17 dgit!  dgit push publishes your git history so Debian's users can use
18 it!  But, that's not actually what I am here to talk about today.
19 git-debrebase does not need dgit, and dgit does not need
20 git-debrebase.
21
22 git-debrebase is a tool to help manage your git branch containing the
23 Debian version of a package you maintain.  git-debrebase helps you
24 maintain a useful git branch with the contents you need (for building
25 and uploading).
26
27 It maintains your Debian delta queue - that is, that is, the changes
28 you make, for Debian, to the upstream parts of the package - as a
29 series of commits.
30
31 [usp slide 1]
32
33 git-debrebase offers a standard git-rebase workflow, where you edit
34 the whole package all together.  The experience is very like using
35 plain git-rebase to edit a topic branch.  Delta queue editing can be
36 done at any time, interleaved with packaging work.
37
38 As you make new commits, you may make commits to upstream files, and
39 commits to packaging, in any order.  So you can just git-cherry-pick
40 from upstream.  You can make fixup commits, and use the git-rebase
41 autosquash syntax to have them automatically folded in by the next
42 rebase.  If you wish, you may make "mixed" commits containing both
43 changes to upstream files and changes to packaging files.
44
45 As far as I know there are no other tools that offer these features.
46 Both gbp pq and git-dpm require you to switch to a separate view in
47 order to edit the delta queue.  Some tools have specific functions for
48 cherry-pick, but with none of them you can just cherry pick or git-am
49 onto your current HEAD.
50
51 Of course you can always directly edit the source if you use a plain
52 git merge workflow and non-quilt source package - for example, as
53 described in the dgit-maint-merge tutorial manpage.  But of course
54 that does not maintain the Debian delta as a broken-down series.
55
56 Also, unlike git-dpm and some other tools, git-debrebase has no
57 in-tree metadata, so it can't get out of date or be desynchronised.
58
59 [usp slide 2]
60
61 Unlike with gbp pq and git-dpm, there is no need to ever switch
62 branches.  git-debrebase only uses one branch to handle all for your
63 Debian work.  (Usually you will have an upstream branch as well of
64 course, and if you are working in multiple Debian releases, backports
65 for example, you will have branches for those.)
66
67 Yowr working tree is always immediately buildable with
68 dpkg-buildpackage.  And it is never made dirty by git-debrebase or any
69 of the other tooling.  Because your working tree always has the delta
70 queue applied, it is never dirtied by patch application.  Because
71 there is no metadata, you can never get a metadata conflict.
72
73 Because git-debrebase treats the quilt patches in debian/patches/ as
74 an output, and handles them entirely automatically, your tree is never
75 dirtied by the generation of patches.  And you never need to read any
76 diffs of diffs.
77
78 [usp slide 3]
79
80 And, my last slide of non-bugs:
81
82 git-blame, and git-log on a file, work entirely properly.  For
83 example, if you do git-log on a file from upstream which was changed
84 in the Debian delta queue, git-log will show the Debian delta queue
85 commits, preceded by the upstream history.
86
87 If you run git-blame you will see a correct indication of which
88 upstream and/or delta queue commits introduced each line.  Or, for a
89 file in the debian directory, you will see a correct reporting of
90 which commits in the package's packaging history introduced each line.
91
92 With git-debrebase, you never need to use the quilt program.  You can
93 mostly ignore the 3.0 quilt source format.  (Unfortunately you will
94 still get trouble if you make changes in git which 3.0 quilt cannot
95 represent).
96
97 When you use git-debrebase with 3.0 quilt, the quilt output is always
98 perfect and pretty, just as other people consuming .dscs have come to
99 expect.
100
101 And finally: of course, git-debrebase is compatible with dgit.  You do
102 not need to pass any quilt mode option.  And, you always can upload
103 right away.  All necessary bureaucracy is done automatically by dgit
104 push-source.
105