blob: fcf46c2da7c2d54fae40ca3b23546f1da5122f26 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
<chapter id="gbp.special">
<title>Special usage cases</title>
<sect1 id="gbp.special.dfsgfree">
<title>Handling non-DFSG clean upstream sources</title>
<para>If you have to handle non DFSG clean upstream sources you can use a
different branch which you have to create once:
<screen>
&gitcmd; branch dfsg_clean upstream
</screen>
<para>
This creates the <emphasis>dfsg_clean</emphasis> branch from the tip of
your <emphasis>upstream</emphasis> branch. Then, when importing a new
upstream version, you import the new version on the
<emphasis>upstream</emphasis> branch as usual and just don't merge to the
master branch by default:
</para>
<screen>
&git-import-orig; --no-merge nondfsg-clean-package_10.4.orig.tar.gz
&gitcmd; tag 10.4
</screen>
<para>
After the import you can switch to the dfsg branch and get the newly
imported changes from the upstream branch:
</para>
<screen>
&gitcmd; checkout dfsg_clean
&gitcmd; pull . upstream
</screen>
<para>
Now make this dfsg clean (preverably by a cleanup script), commit your changes and merge to the master branch:
</para>
<screen>
cleanup-script.sh
&gitcmd; commit -a -m "Make source dfsg clean"
&gitcmd; tag 10.4.dfsg
&gitcmd; checkout master
&gitcmd; pull . dfsg_clean
</screen>
<sect1 id="gbp.special.nmus">
<title>Importing NMUs</title>
<para>
First create a branch that holds the NMUs once:
</para>
<screen>
&gitcmd; <option>branch</option> <replaceable>nmu</replaceable>
</screen>
<para>
To import an NMU instead of a new upstream version simply import the
unpacked NUMs source tree into your repository:
</para>
<screen>
&gitcmd; checkout master
&git-import-orig; -u 10-1.1 --upstream-branch=nmu /path/to/nmu-10/
</screen>
<para>
This will import the NMU on the <emphasis>nmu</emphasis> branch instead of
the <emphasis>upstream</emphasis> branch but merge the changes to the
<emphasis>master</emphasis> branch as usual.
</para>
</sect1>
<sect1 id="gbp.special.pbuilder">
<title>Using &pbuilder;</title>
<para>
Since pbuilder use different command line arguments than
&debuild; and &dpkg-buildpackage; we have to use a small script that's
invoked by &git-buildpackage;:
<programlisting>
cat <<EOF >/usr/local/bin/git-pbuilder
#!/bin/sh
# pass all options to dpkg-buildpackage:
pdebuild --debbuildopts "-i\.git -I.git $*"
EOF
chmod a+x /usr/local/bin/git-pbuilder
</programlisting>
Furthermore we need a different clean command, since &pdebuildcmd;
<option>clean</option> means something different than &debuildcmd;
<option>clean</option>. We could put all this on the command line, but
let's put it into the config file to safe typing:
<programlisting>
cat <<EOF > <filename>~/.gbp.conf</filename>
[DEFAULT]
# tell git-buildpackage howto clean the source tree
cleaner = fakeroot debian/rules clean
# this is how we invoke pbuilder, arguments passed to git-buildpackage will be
# passed to dpkg-buildpackge in the chroot
builder = /usr/local/bin/git-pbuilder
</programlisting>
Invoking &git-buildpackage; will now invoke &pdebuildcmd;</para>
<para>
If you don't want this for all your invocations of &git-buildpackage; you can instead
put this into <filename>.git/gbp.conf</filename> in one of your &git; repositories.
</para>
<sect1 id="gbp.special.hacking">
<title>Working on random packages</title>
<para>
Whenever you need to work on an arbitrary Debian package you can check it
right into &git;:
<programlisting>
apt-get source --download-only <filename>package</filename>
git-import-dsc <filename>package</filename>*.dsc
cd <filename>package</filename>
git-branch debian
</programlisting>
<para>
This puts the orig.tar.gz onto the <emphasis>upstream</emphasis> branch and
the Debian patch onto branch <emphasis>debian</emphasis>. Now you can
easily modify the package on the master branch, revert changes you made,
create other branches for testing, see what changes you made, etc.. When
finished just do</para>
<programlisting>
git-commit -a
git-diff debian --
</programlisting>
<para>
to get a nice patch that can be submitted to the Debian BTS.
</para>
</sect1>
</chapter>
|