diff options
Diffstat (limited to 'gbp.html')
-rw-r--r-- | gbp.html | 407 |
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='sigxcpu.org';a='@';n='agx';e=n+a+h; +document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'">'+e+'<\/'+'a'+'>'); +// --> +</script><noscript>agx at sigxcpu dot org</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 <<EOF > ~/.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 <command></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 <agx@sigxcpu.org> +Date: Sat May 10 10:48:41 2014 +0200 + + Set safer env vars + + We can't expect to have a $HOME and we don'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't expect to have a $HOME and we don'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 <<EOF >> ~/.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 <<EOF >> debian/source/local-options +unapply-patches +EOF</code></pre></li> +</ul></li> +<li>"<code>gbp pq import</code>" importiert diese in Git Branch</li> +<li>"<code>gbp pq export</code>" 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 <<EOF >> ~/.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 <<EOF >> debian/source/local-options +auto-commit +single-debian-patch + +cat <<EOF >> 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> |