summaryrefslogtreecommitdiff
path: root/gbp.html
diff options
context:
space:
mode:
Diffstat (limited to 'gbp.html')
-rw-r--r--gbp.html407
1 files changed, 407 insertions, 0 deletions
diff --git a/gbp.html b/gbp.html
new file mode 100644
index 0000000..9a9f346
--- /dev/null
+++ b/gbp.html
@@ -0,0 +1,407 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="generator" content="pandoc">
+ <meta name="author" content="Guido Günther agx@sigxcpu.org" />
+ <title>Debian Pakete in Git entwickeln</title>
+ <meta name="apple-mobile-web-app-capable" content="yes" />
+ <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+ <link rel="stylesheet" href="reveal.js/css/reveal.min.css"/>
+ <style type="text/css">code{white-space: pre;}</style>
+ <link rel="stylesheet" href="reveal.js/css/theme/simple.css" id="theme">
+ <!-- If the query includes 'print-pdf', include the PDF print sheet -->
+ <script>
+ if( window.location.search.match( /print-pdf/gi ) ) {
+ var link = document.createElement( 'link' );
+ link.rel = 'stylesheet';
+ link.type = 'text/css';
+ link.href = 'reveal.js/css/print/pdf.css';
+ document.getElementsByTagName( 'head' )[0].appendChild( link );
+ }
+ </script>
+ <!--[if lt IE 9]>
+ <script src="reveal.js/lib/js/html5shiv.js"></script>
+ <![endif]-->
+</head>
+<body>
+ <div class="reveal">
+ <div class="slides">
+
+<section>
+ <h1 class="title">Debian Pakete in Git entwickeln</h1>
+ <h2 class="author">Guido Günther <script type="text/javascript">
+<!--
+h='&#x73;&#x69;&#x67;&#120;&#x63;&#112;&#x75;&#46;&#x6f;&#114;&#x67;';a='&#64;';n='&#x61;&#x67;&#120;';e=n+a+h;
+document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'">'+e+'<\/'+'a'+'>');
+// -->
+</script><noscript>&#x61;&#x67;&#120;&#32;&#x61;&#116;&#32;&#x73;&#x69;&#x67;&#120;&#x63;&#112;&#x75;&#32;&#100;&#x6f;&#116;&#32;&#x6f;&#114;&#x67;</noscript></h2>
+ <h3 class="date"></h3>
+</section>
+
+<section id="warum" class="slide level1">
+<h1>Warum</h1>
+<ul>
+<li>Versionskontrolle</li>
+<li>Mehrere Branches: experimental, sid, stable, backports</li>
+<li>Arbeit im Team</li>
+</ul>
+</section>
+<section id="warum-ii" class="slide level1">
+<h1>Warum II</h1>
+<p>Erleichterung wiederkehrender Aufgaben</p>
+<ul>
+<li>Bestehendes Debian Paket importieren - um mal schnell was zu ändern</li>
+<li>ändern, bauen, testen, ändern, bauen, testen, ändern, ...</li>
+<li>Neue Upstream Version importieren</li>
+<li>debian/changelog schreiben</li>
+<li>Patches hinzufügen, aktualisieren, entfernen</li>
+</ul>
+</section>
+<section id="die-werkzeuge" class="slide level1">
+<h1>Die Werkzeuge</h1>
+<ul>
+<li>git-buildpackage</li>
+<li>git</li>
+<li>cowdancer aka cowbuilder</li>
+<li>pristine-tar</li>
+</ul>
+<aside class="notes">
+gbp benutzt jede Menge andere Tools: dpkg-buildpackage, debuild, cowbuilder, ...
+</aside>
+</section>
+<section id="gbp-supercommand" class="slide level1">
+<h1>gbp supercommand</h1>
+<ul>
+<li>buildpackage - Bauen von Paketen</li>
+<li>import-orig - Upstream Tarball importieren</li>
+<li>import-dsc - Debian Paket importieren</li>
+<li>config - gbp Konfiguration anzeigen</li>
+</ul>
+<aside class="notes">
+Die wichtigsten Tools
+</aside>
+</section>
+<section id="gbp-supercommand-ii" class="slide level1">
+<h1>gbp supercommand II</h1>
+<ul>
+<li>dch - Changelog generieren</li>
+<li>pq - Patches managen</li>
+<li>import-dscs - mehrere Versionen importieren</li>
+</ul>
+<aside class="notes">
+Sollte man kennen, erleichtern das Leben
+</aside>
+</section>
+<section id="gbp-supercommand-iii" class="slide level1">
+<h1>gbp supercommand III</h1>
+<ul>
+<li>clone - Git Repository clonen</li>
+<li>pull - Git Repository aktualsieren</li>
+<li><p>create-remote-repo - Remote repository erzeugen</p></li>
+<li>(import-srpm)</li>
+<li><p>(pq-rpm)</p></li>
+</ul>
+<aside class="notes">
+<ul>
+<li>Eher selten</li>
+<li>RPM support</li>
+</ul>
+</aside>
+</section>
+<section id="layout" class="slide level1">
+<h1>Layout</h1>
+<figure>
+<img src="branches.png" alt="Gbp Branches" /><figcaption>Gbp Branches</figcaption>
+</figure>
+<aside class="notes">
+<ul>
+<li>Packaging Branch, Uptream Branch, Tags</li>
+</ul>
+</aside>
+</section>
+<section id="layout-1" class="slide level1">
+<h1>Layout</h1>
+<ul>
+<li>Packaging Branch - pro Debian Release</li>
+<li>Upstream Branch</li>
+<li>pristine-tar Branch - ein mal pro Repository</li>
+</ul>
+<figure>
+<img src="pristine_tar.png" alt="pristine-tar" /><figcaption>pristine-tar</figcaption>
+</figure>
+</section>
+<section id="vorbereitungen" class="slide level1">
+<h1>Vorbereitungen</h1>
+</section>
+<section class="slide level1">
+
+<h2 id="konfiguration">Konfiguration</h2>
+<pre><code>cat &lt;&lt;EOF &gt; ~/.gbp.conf
+[DEFAULT]
+sign-tags = True
+keyid = 0xB999CDB58C8DDBD2
+pristine-tar = True
+
+[buildpackage]
+postbuild = lintian $GBP_CHANGES_FILE
+cleaner = /bin/true
+pbuilder = True
+EOF</code></pre>
+</section>
+<section class="slide level1">
+
+<h2 id="konfiguration-ii">Konfiguration II</h2>
+<ul>
+<li>/etc/git-buildpackage/gbp.conf</li>
+<li>~/.gbp.conf</li>
+<li>Im Repsitory
+<ul>
+<li>.gbp.conf</li>
+<li>debian/gbp.conf</li>
+<li>.git/gbp.conf</li>
+</ul></li>
+<li><p>Anzeigen mit</p>
+<pre><code>gbp config &lt;command&gt;</code></pre></li>
+</ul>
+</section>
+<section class="slide level1">
+
+<h2 id="chroots-erstellen">Chroots erstellen</h2>
+<pre><code>git-pbuilder create
+DIST=wheezy git-pbuilder create
+DIST=wheezy-backports git-pbuilder create</code></pre>
+</section>
+<section id="wie-anfangen" class="slide level1">
+<h1>Wie anfangen?</h1>
+<h2 id="mit-bestehendem-paket">Mit bestehendem Paket</h2>
+<pre><code>gbp import-dsc python-dateutil_1.4.3-2.dsc
+gbp import-dsc --download http://.../python-dateutil_1.4.3-2.dsc
+gbp import-dsc --download python-dateutil</code></pre>
+</section>
+<section id="debian-paket-bauen" class="slide level1">
+<h1>Debian Paket bauen</h1>
+<pre><code>gbp buildpackge [--git-ignore-new]</code></pre>
+</section>
+<section class="slide level1">
+
+<h2 id="der-ablauf">Der Ablauf</h2>
+<ul>
+<li>Repository aufräumen</li>
+<li>Orig Tarball erstellen (von Tag)</li>
+<li>Builder aufrufen</li>
+<li>Hooks aufrufen</li>
+</ul>
+</section>
+<section class="slide level1">
+
+<figure>
+<img src="gbp-buildpackage.png" alt="gbp buildpackage" /><figcaption>gbp buildpackage</figcaption>
+</figure>
+</section>
+<section id="neue-upstream-version-importieren" class="slide level1">
+<h1>Neue Upstream Version importieren</h1>
+</section>
+<section class="slide level1">
+
+<h2 id="aus-tarball">Aus Tarball</h2>
+<pre><code>gbp import-orig python-dateutil_1.4.3.orig.tar.gz
+gbp import-orig --uscan</code></pre>
+</section>
+<section id="upstream-benutzt-git" class="slide level1">
+<h1>Upstream benutzt Git</h1>
+<ul>
+<li><p>Debian Branch erstellen</p>
+<pre><code>gbp checkout -b debian/sid</code></pre></li>
+<li><p>Konfiguration anpassen</p>
+<pre><code>[DEFAULT]
+debian-branch = debian/sid
+upstream-tag = v%(version)s
+upstream-branch = master</code></pre></li>
+<li><code>gbp import-orig</code> entfällt</li>
+<li><p>sonst alles beim alten</p></li>
+</ul>
+</section>
+<section class="slide level1">
+
+<h2 id="neue-upstream-version-paketieren">Neue Upstream Version paketieren</h2>
+<pre><code> gbp checkout debian/sid
+ git merge v1.0.0
+ gbp dch --snapshot --auto
+ gbp buildpackage --git-pristinte-tar-commit</code></pre>
+</section>
+<section id="changelogs" class="slide level1">
+<h1>ChangeLogs</h1>
+</section>
+<section class="slide level1">
+
+<h2 id="commit-message">Commit Message</h2>
+<pre><code>commit a629df279795cd703b1815f3363541256ddbab6a
+Author: Guido Günther &lt;agx@sigxcpu.org&gt;
+Date: Sat May 10 10:48:41 2014 +0200
+
+ Set safer env vars
+
+ We can&#39;t expect to have a $HOME and we don&#39;t want to default to anything
+ than the test driver.
+
+ Closes: #734975, #738383</code></pre>
+<h2 id="debianchangelog">debian/changelog</h2>
+<pre><code>* [a629df2] Set safer env vars. We can&#39;t expect to have a $HOME and we don&#39;t
+ want to default to anything than the test driver.
+ (Closes: #734975, #738383)</code></pre>
+</section>
+<section class="slide level1">
+
+<h2 id="konfiguration-1">Konfiguration</h2>
+<pre><code>cat &lt;&lt;EOF &gt;&gt; ~/.gbp.conf
+
+[dch]
+meta = True
+id-length = 7
+full = True
+git-author = True
+multimaint-merge = True
+EOF</code></pre>
+</section>
+<section class="slide level1">
+
+<h2 id="changlogs-erstellen">Changlogs erstellen</h2>
+<pre><code>gbp dch --snapshot --auto
+gbp dch --release --auto</code></pre>
+</section>
+<section id="patches" class="slide level1">
+<h1>Patches</h1>
+</section>
+<section class="slide level1">
+
+<h2 id="das-konzept">Das Konzept</h2>
+<ul>
+<li>Debian Source Format 3.0 (quilt)
+<ul>
+<li>hat Patches in debian/patches</li>
+<li><p>werden während des Builds angewendet</p>
+<pre><code>cat &lt;&lt;EOF &gt;&gt; debian/source/local-options
+unapply-patches
+EOF</code></pre></li>
+</ul></li>
+<li>&quot;<code>gbp pq import</code>&quot; importiert diese in Git Branch</li>
+<li>&quot;<code>gbp pq export</code>&quot; exportiert diese wieder</li>
+</ul>
+<aside class="notes">
+<ul>
+<li>Am Beispiel von libvirt vorführen</li>
+<li>--commit</li>
+<li>drop</li>
+<li>gbp pq apply --topic=foo <patch></li>
+</ul>
+</aside>
+</section>
+<section class="slide level1">
+
+<h3 id="vorteile">Vorteile</h3>
+<ul>
+<li>orientiert sich stark an der Arbeit mit Quilt</li>
+<li>patches leicht an Upstream mailbar</li>
+<li>Upstream Sourcen immer unmodifiziert</li>
+<li>Patches leicht kategorisierbar (Gbp-Pq: Topic topic)</li>
+</ul>
+<h3 id="nachteile">Nachteile</h3>
+<ul>
+<li>Upstream kann nicht einfach cherry-picken</li>
+<li>Bei Merges muss man PQ selber pflegen</li>
+</ul>
+</section>
+<section class="slide level1">
+
+<h2 id="konfiguration-2">Konfiguration</h2>
+<pre><code>cat &lt;&lt;EOF &gt;&gt; ~/.gbp.conf
+
+[pq]
+patch-numbers = False
+EOF</code></pre>
+</section>
+<section class="slide level1">
+
+<h2 id="alternativen">Alternativen</h2>
+<ul>
+<li><p>Gepatchter Packaging Branch</p>
+<pre><code>cat &lt;&lt;EOF &gt;&gt; debian/source/local-options
+auto-commit
+single-debian-patch
+
+cat &lt;&lt;EOF &gt;&gt; debian/.gitignore
+patches/</code></pre>
+<ul>
+<li>dpkg-source packt alle Änderungen zum Upsteam-Tarball in <code>debian/patches/debian-changes</code></li>
+</ul></li>
+<li><p>Alternative Tools: git-dpm, TopGit, TNT</p></li>
+</ul>
+</section>
+<section id="bestehende-historie-importieren" class="slide level1">
+<h1>Bestehende Historie importieren</h1>
+<pre><code>gbp import-dscs --debsnap python-libvirt
+gbp import-dscs path/to/*.dsc</code></pre>
+</section>
+<section id="debugging" class="slide level1">
+<h1>Debugging</h1>
+<ul>
+<li>alle Log-Meldungen von gbp beginnen mit 'gbp:'</li>
+<li>--[git]-verbose</li>
+<li>gbp config im Repository ausführen</li>
+<li>gbp <command> --help</li>
+</ul>
+</section>
+<section id="weitere-tools" class="slide level1">
+<h1>Weitere Tools</h1>
+<ul>
+<li>gitpkg</li>
+<li>git-dpm</li>
+<li>dgit</li>
+</ul>
+<figure>
+<img src="popcon-vc-build-tools.png" alt="Popcon VC build tools" /><figcaption>Popcon VC build tools</figcaption>
+</figure>
+</section>
+<section id="fragen-kommentare" class="slide level1">
+<h1>Fragen? Kommentare?</h1>
+<ul>
+<li>Website: <a href="">https://honk.sigxcpu.org/piki/projects/git-buildpackage/</a></li>
+<li>Manual: <a href="">http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html</a></li>
+<li>Mailing Liste: <a href="">http://lists.sigxcpu.org/mailman/listinfo/git-buildpackage</a></li>
+<li><a href="">https://wiki.debian.org/GitPackagingWorkflow</a></li>
+<li><a href="">https://wiki.debian.org/GitPackaging</a></li>
+<li><a href="">https://wiki.debian.org/git-pbuilder</a></li>
+</ul>
+</section>
+ </div>
+ </div>
+
+
+ <script src="reveal.js/lib/js/head.min.js"></script>
+ <script src="reveal.js/js/reveal.min.js"></script>
+
+ <script>
+
+ // Full list of configuration options available here:
+ // https://github.com/hakimel/reveal.js#configuration
+ Reveal.initialize({
+ controls: true,
+ progress: true,
+ history: true,
+ center: true,
+ theme: 'moon', // available themes are in /css/theme
+ transition: 'fade', // default/cube/page/concave/zoom/linear/fade/none
+
+ // Optional libraries used to extend on reveal.js
+ dependencies: [
+ { src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } },
+ { src: 'reveal.js/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
+ { src: 'reveal.js/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
+// { src: 'reveal.js/plugin/search/search.js', async: true, condition: function() { return !!document.body.classList; }, }
+// { src: 'reveal.js/plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
+]});
+ </script>
+ </body>
+</html>