<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Versionskontrolle Archive - Entwicklungshilfe NRW</title>
	<atom:link href="https://entwicklungshilfe.nrw/blog/tag/versionskontrolle/feed/" rel="self" type="application/rss+xml" />
	<link>https://entwicklungshilfe.nrw/blog/tag/versionskontrolle/</link>
	<description>PHP-Schulungen für effektive Webentwicklung, praxisorientierte Workshops und Seminare für besseres Webdevelopment</description>
	<lastBuildDate>Mon, 23 Sep 2019 18:10:01 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://entwicklungshilfe.nrw/wp-content/uploads/2026/02/cropped-favicon-32x32.png</url>
	<title>Versionskontrolle Archive - Entwicklungshilfe NRW</title>
	<link>https://entwicklungshilfe.nrw/blog/tag/versionskontrolle/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Git auf der Command Line CLI einsetzen</title>
		<link>https://entwicklungshilfe.nrw/blog/2016/02/11/git-auf-der-command-line-cli/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2016/02/11/git-auf-der-command-line-cli/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Mautz]]></dc:creator>
		<pubDate>Thu, 11 Feb 2016 07:58:00 +0000</pubDate>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Entwicklertools]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Seminar]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Versionskontrolle]]></category>
		<category><![CDATA[Workshop]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=382</guid>

					<description><![CDATA[<p>Git ist ein häufig genutztes Versionstool in PHP-Projekten. Allerdings wird häufig mit grafischen Oberflächen wie Sourcetree gearbeitet. Webdeveloper nutzen diese Tools häufig, ohne genau zu wissen, was im Hintergrund genau passiert. Daher zeigen wir dir in diesem Artikel, wie du das alles schnell und effektiv auf der Command Line nutzen kannst. Das hat einige Vorteile: Du bist [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/02/11/git-auf-der-command-line-cli/">Git auf der Command Line CLI einsetzen</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Git ist ein häufig genutztes Versionstool in PHP-Projekten. Allerdings wird häufig mit grafischen Oberflächen wie <a href="https://www.sourcetreeapp.com/" target="_blank" rel="noopener noreferrer">Sourcetree</a> gearbeitet. Webdeveloper nutzen diese Tools häufig, ohne genau zu wissen, was im Hintergrund genau passiert. Daher zeigen wir dir in diesem Artikel, wie du das alles schnell und effektiv auf der Command Line nutzen kannst. Das hat einige Vorteile: Du bist schneller und hast gleichzeitig viel mehr <a href="http://www.entwicklungshilfe.nrw/blog/category/git-schulung/">Wissen über Git</a> und Kontrolle über deine Software und Arbeitsschritte.</p>
<figure id="attachment_391" aria-describedby="caption-attachment-391" style="width: 300px" class="wp-caption alignleft"><a href="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/terminal-git-log.png" rel="attachment wp-att-391"><img decoding="async" class="wp-image-391 size-medium" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/terminal-git-log-300x148.png" alt="Terminal Git-Log - www.slant.co" width="300" height="148" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/terminal-git-log-300x148.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/terminal-git-log-768x380.png 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/terminal-git-log.png 976w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/terminal-git-log-300x148@2x.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-391" class="wp-caption-text">Terminal Git-Log &#8211; www.slant.co</figcaption></figure>
<p>In Stellenausschreibungen steht heute immer öfter die Anforderung, Git über die Command Line zu nutzen. Gerade bei <a href="https://www.gulp.de/knowledge-base/markt-und-trends/umfrage-ergebnis-noch-junior-oder-schon-senior.html" target="_blank" rel="noopener noreferrer">Senior-Entwicklern</a> wird dieses Wissen bereits explizit vorausgesetzt. Das <a href="https://de.wikipedia.org/wiki/Kommandozeile" target="_blank" rel="noopener noreferrer">Command-Line</a>-Wissen kannst du dann auch anwenden, wenn dir kein Rechner mit Sourcetree zur Verfügung steht, weil du dich vielleicht direkt auf den Linux-Servern lokal oder remote bewegen musst.</p>
<h2>Git Commands, die tatsächlich gebraucht werden</h2>
<p>Es sind nicht so viele <a href="https://confluence.atlassian.com/bitbucketserver/basic-git-commands-776639767.html" target="_blank" rel="noopener noreferrer">Git Commands</a>, die für die tägliche Arbeit gebraucht werden, wie man vielleicht glaubt. Hier mal ein einfacher Task mit den Git-Commands direkt auf der Command Line.</p>
<h3>Git Repository klonen</h3>
<p><strong>git clone https://url.com/example-repo</strong></p>
<figure id="attachment_393" aria-describedby="caption-attachment-393" style="width: 300px" class="wp-caption alignleft"><a href="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-Repository-klonen.jpg" rel="attachment wp-att-393"><img fetchpriority="high" decoding="async" class="wp-image-393 size-medium" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-Repository-klonen-300x213.jpg" alt="Git-Repository klonen" width="300" height="213" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-Repository-klonen-300x213.jpg 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-Repository-klonen-768x546.jpg 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-Repository-klonen-1024x728.jpg 1024w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-Repository-klonen-269x192.jpg 269w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-Repository-klonen.jpg 1920w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-Repository-klonen-300x213@2x.jpg 600w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-Repository-klonen-768x546@2x.jpg 1536w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-Repository-klonen-269x192@2x.jpg 538w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-393" class="wp-caption-text">Git Repository klonen</figcaption></figure>
<p>Mit dem Git Command wird das Repo in das Verzeichnis &#8222;example-repo&#8220; geklont. Gibt man hinter der URL ein anderes Ziel oder Target an, wird ein anderer Ordner genommen. Das macht bei der späteren Anwendung keinen Unterschied, kann aber zu mehr Übersicht in der Dateistruktur genutzt werden. Mit der Angabe von &#8222;.&#8220; wird das Repository in das aktuelle Verzeichnis geklont. Das ist zwar ein seltener Anwendungsfall, spart einem aber bei Bedarf Zeit. Dafür muss der Ordner allerdings vollständig leer sein. Auch die Verzeichnisse der PHP-IDEs, wie <a href="http://www.entwicklungshilfe.nrw/seminare/phpstorm-best-practice/">PhpStorm</a>, dürfen hier nicht vorhanden sein.</p>
<h3>Branch erstellen</h3>
<p><strong>git checkout -b myNewTask</strong><br />
Mit dem Checkout-Befehl und dem Parameter -b wird ein neuer Branch &#8222;myNewTask&#8220; erstellt und automatisch auf diesen gewechselt. Hier ist darauf zu achten, auf welchen Branch man sich zu dem Zeitpunkt der Erstellung befindet, und natürlich auch darauf, dass man den aktuellsten Stand auscheckt – also vorher ein &#8222;git pull&#8220; ausgeführt hat.</p>
<h3>Developing auf dem Branch</h3>
<p><strong>git add . &amp;&amp; git commit -m “#myNewBranch add css file”</strong><br />
oder<br />
<strong>git add layout/mynewtask.css &amp;&amp; git commit -m “#myNewBranch add css file”</strong></p>
<figure id="attachment_392" aria-describedby="caption-attachment-392" style="width: 300px" class="wp-caption alignleft"><a href="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Developing-auf-dem-Branch.jpg" rel="attachment wp-att-392"><img decoding="async" class="wp-image-392 size-medium" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Developing-auf-dem-Branch-300x200.jpg" alt="Developing auf dem Branch" width="300" height="200" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Developing-auf-dem-Branch-300x200.jpg 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Developing-auf-dem-Branch-768x512.jpg 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Developing-auf-dem-Branch-1024x683.jpg 1024w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Developing-auf-dem-Branch.jpg 1920w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Developing-auf-dem-Branch-300x200@2x.jpg 600w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Developing-auf-dem-Branch-768x512@2x.jpg 1536w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-392" class="wp-caption-text">Developing auf dem Branch</figcaption></figure>
<p>Generell soll ja bei jeder funktionierenden Änderung ein Commit gemacht werden. Hier ist Disziplin gefragt. Grafische Tools wie Sourcetree verleiten jedoch dazu, dies zu einem späteren Zeitpunkt zu machen. Hier kann man sehr einfach einzelne geänderte Zeilen separaten Commits zuweisen. Das bedeutet leider noch lange nicht, dass der Commit tatsächlich alles tut, was er soll, und wie gewünscht funktioniert hat.</p>
<p>Insofern ist es besser, regelmäßig kleine Commits zu machen. Der Git-Add-Befehl dient dabei einmal für das separate File und einmal für alles seit dem letzten Commit. Auch hier gilt: Regelmäßige und sinnvolle Commits machen einem das Leben leichter und sind effektiver. Vorher ist es zudem immer sinnvoll, sich die aktuellen Änderungen mit &#8222;git status&#8220; noch einmal anzeigen zu lassen. Denn schließlich kommt es vor, dass man etwas übersehen hat. Das trifft auch auf von der Applikation generierte Files zu, die eventuell noch über .gitignore ausgeschlossen werden müssen.</p>
<h3>Commit Messages</h3>
<figure id="attachment_394" aria-describedby="caption-attachment-394" style="width: 300px" class="wp-caption alignleft"><a href="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Commit-Messages.jpg" rel="attachment wp-att-394"><img loading="lazy" decoding="async" class="wp-image-394 size-medium" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Commit-Messages-300x200.jpg" alt="Commit-Messages" width="300" height="200" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Commit-Messages-300x200.jpg 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Commit-Messages-768x512.jpg 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Commit-Messages-1024x682.jpg 1024w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Commit-Messages.jpg 1280w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Commit-Messages-300x200@2x.jpg 600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-394" class="wp-caption-text">Commit Messages</figcaption></figure>
<p>Damit man die Historie einer Entwicklung nachvollziehen kann, sind Commit Messages wichtig. Diese müssen aussagekräftig sein und beinhalten idealerweise eine <a href="http://www.entwicklungshilfe.nrw/seminare/phpstorm-effektiv-mit-ticketsystem-nutzen/">Ticket-ID</a>. Denn somit können die Arbeitsschritte direkt zugeordnet werden. Nicht aussagekräftige Commit Messages indes schaden dem Team und einem selbst.</p>
<p>Mit <a href="https://git-scm.com/book/uz/v2/Customizing-Git-Git-Hooks" target="_blank" rel="noopener noreferrer">Pre Hooks</a> ist es möglich, Commits ohne Ticket-ID direkt zu unterbinden. Das kann sogar erweitert werden, dass sich das Ticket im richtigen Status befinden muss. Solche Maßnahmen einzuführen und umzusetzen, ist allerdings nicht so einfach wie deren technische Implementierung.</p>
<p>Es gibt einige Spaßseiten zu dem Thema wie beispielsweise <a href="http://www.commitlogsfromlastnight.com/" target="_blank" rel="noopener noreferrer">Commits from last night</a> – dabei ist das Thema doch eigentlich sehr ernst. Denn es dient der Dokumentation der eigenen Arbeit und zeigt, dass du ein Profi bist. Soll heißen: Arbeite immer möglichst professionell. Das ist wichtig und richtig.</p>
<h2>Git-flow installieren und sofort nutzen</h2>
<p><strong>git flow feature start myNewBranch</strong><br />
<strong>git flow feature finish myNewBranch</strong></p>
<figure id="attachment_395" aria-describedby="caption-attachment-395" style="width: 300px" class="wp-caption alignleft"><a href="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-flow.jpg" rel="attachment wp-att-395"><img loading="lazy" decoding="async" class="wp-image-395 size-medium" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-flow-300x200.jpg" alt="Git-Flow" width="300" height="200" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-flow-300x200.jpg 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-flow-768x512.jpg 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-flow-1024x683.jpg 1024w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-flow.jpg 1920w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-flow-300x200@2x.jpg 600w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-flow-768x512@2x.jpg 1536w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-395" class="wp-caption-text">Git-flow</figcaption></figure>
<p><a href="http://www.entwicklungshilfe.nrw/seminare/git-flow-git-branching-model-fuer-agile-software-projekte/">Git-flow</a> hat sich in vielen Projekten bewährt und wird vor allem gerne bei neuen Projekten eingesetzt. Auf dem <a href="http://www.rogoit.de/webdesign-typo3-blog-duisburg/category/mac-snippet/" target="_blank" rel="noopener noreferrer">Mac</a> ist es schnell mit <a href="http://brew.sh/" target="_blank" rel="noopener noreferrer">Homebrew</a> installiert, und nach einem &#8222;git flow init&#8220; kann es nach einigen Bestätigungen der Default-Settings sofort eingesetzt werden. Mit dem oben aufgeführten Start-Befehl wird dabei ein neuer Branch aus dem aktuellen Develop Branch erstellt. Danach kann man sein Feature entwickeln und mit dem Finish-Befehl wieder abschließen. Hier wird ein Merge zurück in den Develop Branch ausgeführt und der Feature Branch sofort gelöscht. Falls man das aber nicht unbedingt möchte, geht es auch mit Hotfixes und Releases.</p>
<p>Eine gute Übersicht zu all dem bietet <a href="http://danielkummer.github.io/git-flow-cheatsheet/" target="_blank" rel="noopener noreferrer">http://danielkummer.github.io/git-flow-cheatsheet/</a>. Ausführliche Informationen zu Git-flow gibt es außerdem unter <a href="https://github.com/nvie/gitflow" target="_blank" rel="noopener noreferrer">https://github.com/nvie/gitflow</a>. Wir haben uns im praktischen Einsatz dazu entschlossen, nach dem Git-Flow-Workflow zu arbeiten, die zusammengeführten Branches allerdings zu archivieren und zu erhalten.</p>
<h2>Git-Workflow nur auf der Command Line</h2>
<figure id="attachment_386" aria-describedby="caption-attachment-386" style="width: 337px" class="wp-caption alignleft"><a href="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-auf-der-Command-Line-CLI.png" rel="attachment wp-att-386"><img loading="lazy" decoding="async" class="wp-image-386 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-auf-der-Command-Line-CLI.png" alt="Git auf der Command Line CLI" width="337" height="208" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-auf-der-Command-Line-CLI.png 337w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-auf-der-Command-Line-CLI-300x185.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-auf-der-Command-Line-CLI-103x65.png 103w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-auf-der-Command-Line-CLI-163x102.png 163w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-auf-der-Command-Line-CLI-103x65@2x.png 206w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/Git-auf-der-Command-Line-CLI-163x102@2x.png 326w" sizes="auto, (max-width: 337px) 100vw, 337px" /></a><figcaption id="caption-attachment-386" class="wp-caption-text">Git auf der Command Line CLI</figcaption></figure>
<p>Der Git-flow ist eine Zusammenfassung von Befehlen, die man selbstverständlich auch eigenhändig und einzeln ausführen kann. In meinen Augen ist aber ein großer Nachteil, dass Branches, die zurückgemerged wurden, auch gelöscht werden.</p>
<p>Persönlich finde ich es zudem besser, Bugfixes auf dem Feature Branch durchzuführen und sich öfter mit dem aktuellen Stand abzugleichen. So kann man die Arbeit auf einem Feature besser dokumentieren. Das Ganze geht manuell auf der Command Line – CLI – wie folgt:</p>
<p>// Aktuellen Develop Branch auschecken und aktualisieren<br />
<strong>git checkout develop</strong><br />
<strong> git pull</strong></p>
<p>// Feature Branch für Jira Ticket SUP-123 erstellen<br />
<strong>git checkout -b feature/SUP-123</strong></p>
<p>// Commits auf das Ticket<br />
<strong>git status</strong><br />
<strong>git add . &amp;&amp; git commit -m “#SUP-123 what i have done”</strong></p>
<p>// Git Pushes sollten mindestens jeden Abend durchgeführt werden – und zwar auf jeden Fall vor den Merges, egal in welche Richtung<br />
<strong>git status</strong><br />
<strong>git push</strong></p>
<p>// Feature Branch zurück in Develop bringen<br />
<strong>git checkout develop</strong><br />
<strong>git pull</strong><br />
<strong>git merge feature/SUP-123</strong><br />
<strong>git status</strong></p>
<p>// Tag setzen<br />
<strong>git tag -a v1.2.0 -m “Version v1.2.0”</strong><br />
// Push mit Tags<br />
<strong>git push &amp;&amp; git push &#8211;tags</strong></p>
<p>Die oben aufgeführten Commands in <a href="http://www.entwicklungshilfe.nrw/seminare/oh-my-zsh-mit-agnoster-theme/">oh-my-zsh</a><br />
// Aktuellen Develop Branch auschecken und aktualisieren<br />
<strong>gco develop</strong><br />
<strong>gl</strong></p>
<p>// Feature Branch für Jira Ticket SUP-123 erstellen<br />
<strong>gcb feature/SUP-123</strong></p>
<p>// Commits auf das Ticket<br />
<strong>gst</strong><br />
<strong>gaa &amp;&amp; gcmsg “#SUP-123 was ich gerade getan habe”</strong><br />
<strong>gst</strong></p>
<p>// Git Push sollte mindestens jeden Abend durchgeführt werden – und zwar auf jeden Fall vor den Merges, egal in welche Richtung<br />
<strong>gst</strong><br />
<strong>gp</strong></p>
<p>// Feature Branch zurück in Develop bringen<br />
<strong>gco develop</strong><br />
<strong>gl</strong><br />
<strong>gm feature/SUP-123</strong><br />
<strong>gst</strong></p>
<p>// Tag setzen<br />
<strong>git tag -a v1.2.0 -m “Version v1.2.0”</strong></p>
<p>// Push mit Tags<br />
<strong>gp &amp;&amp; gp &#8211;tags</strong></p>
<p>Mit oh-my-zsh sind eine Vielzahl von Git Commands als Alias abgelegt. Im praktischen Einsatz kommen in meinen Augen die oben abgebildeten zum Tragen. Allein gaa &amp;&amp; gcmsg &#8222;my message&#8220; bringen einem sehr viel, da sie ein häufiger Anwendungsfall sind. Auch gc für git checkout geht schnell in Fleisch und Blut über.</p>
<h2>Probleme mit Git</h2>
<p><a href="https://www.ralfebert.de/git/mergekonflikte-beheben/" target="_blank" rel="noopener noreferrer">Git-Konflikte</a> sind ein großes Thema bei Git und natürlich auch Themen wie Rebase. Aber in diesem Artikel gehe ich nicht zusätzlich auf diese Themen ein. In Zukunft werden wir hier in unserem <a href="http://www.entwicklungshilfe.nrw/blog/">Webdevelopment-Blog</a> das Thema Git auch in anderen Zusammenhängen aufgreifen. Auch gehe ich nicht auf Tools, wie <a href="https://github.com/jonas/tig" target="_blank" rel="noopener noreferrer">Tig</a> ein. Aber natürlich ist es wichtig und richtig, mit visuellen Tools zu arbeiten.</p>
<h2>Fazit zu Git auf der Command Line CLI</h2>
<p>Git ist in der heutigen Zeit des Webdevelopments der Quasi-Standard. Jeder Entwickler, egal ob Frontend oder Backend, muss damit umgehen können. Man braucht und darf keine Ausreden bei der Nutzung einer Command Line haben. Nur so wird man zum Profi – sonst ist man nur ein Anwender. Ein User.</p>
<p>In diesem Artikel ist ein einfaches Beispiel über die Entwicklung eines <a href="https://www.atlassian.com/git/tutorials/comparing-workflows/" target="_blank" rel="noopener noreferrer">Feature Branches</a> abgebildet. Man sieht ganz deutlich, dass nur wenige Commands nötig sind. Es ist wichtig, diese einfachen Vorgänge zu 100 Prozent auf der Command Line durchführen zu können und dies auch regelmäßig zu tun. Nur so lernt man Git richtig.</p>
<h2>Unsere Git-PHP-Schulung</h2>
<figure id="attachment_396" aria-describedby="caption-attachment-396" style="width: 300px" class="wp-caption alignleft"><a href="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/git-flow-php-schulung.jpg" rel="attachment wp-att-396"><img loading="lazy" decoding="async" class="wp-image-396 size-medium" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/git-flow-php-schulung-300x143.jpg" alt="Git-Flow PHP-Schulung" width="300" height="143" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/git-flow-php-schulung-300x143.jpg 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/git-flow-php-schulung-768x365.jpg 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/git-flow-php-schulung-702x336.jpg 702w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/git-flow-php-schulung.jpg 800w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/02/git-flow-php-schulung-300x143@2x.jpg 600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-396" class="wp-caption-text">Git-flow: PHP-Schulung</figcaption></figure>
<p>Git wird von vielen Webdevelopern benutzt. Sie haben es aber leider häufig nicht verinnerlicht oder verstanden, warum man damit genau so arbeitet, wie man es tut. In unserer Schulung gehen wir ganz praktisch vor und erklären Git von den Grundlagen bis zu praktischen und etablierten Workflows. Wir gehen auf die Anwendungsfehler ein und geben unsere persönliche Erfahrung direkt an die Teilnehmer weiter. Es ist eine sehr individuelle Intensiv-Schulung. Alle Informationen zu dem Thema gibt es auf<br />
<a href="http://www.entwicklungshilfe.nrw/seminare/git-flow-git-branching-model-fuer-agile-software-projekte/">http://www.entwicklungshilfe.nrw/seminare/git-flow-git-branching-model-fuer-agile-software-projekte/</a></p>
<p><em>Wie nutzt du Git bislang? Hast du es schon mal per Command Line versucht, und wie sind da ggf. deine Erfahrungswerte?</em></p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/02/11/git-auf-der-command-line-cli/">Git auf der Command Line CLI einsetzen</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2016/02/11/git-auf-der-command-line-cli/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PhpStorm mit dem Ticketsystem Redmine nutzen</title>
		<link>https://entwicklungshilfe.nrw/blog/2016/01/31/phpstorm-mit-ticketsystem-redmine-nutzen/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2016/01/31/phpstorm-mit-ticketsystem-redmine-nutzen/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Mautz]]></dc:creator>
		<pubDate>Sun, 31 Jan 2016 18:57:11 +0000</pubDate>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Entwicklertools]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[Seminar]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Versionskontrolle]]></category>
		<category><![CDATA[Workshop]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=305</guid>

					<description><![CDATA[<p>In diesem Tutorial für Webdeveloper zeige ich, wie man die Entwicklungsumgebung PhpStorm mit dem Ticketsystem Redmine verbindet und das Tasksystem von PhpStorm zusammen mit git-flow als Workflow umsetzen kann. Voraussetzungen für einen erfolgreichen Workflow Grundlage für den hier gezeigten Workflow sind PhpStorm als IDE mit installiertem git-flow-Plugin sowie ein funktionierendes Ticketsystem Redmine. Natürlich gibt es Alternativen zu [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/01/31/phpstorm-mit-ticketsystem-redmine-nutzen/">PhpStorm mit dem Ticketsystem Redmine nutzen</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In diesem Tutorial für Webdeveloper zeige ich, wie man die Entwicklungsumgebung PhpStorm mit dem Ticketsystem Redmine verbindet und das Tasksystem von PhpStorm zusammen mit git-flow als Workflow umsetzen kann.</p>
<h3>Voraussetzungen für einen erfolgreichen Workflow</h3>
<p>Grundlage für den hier gezeigten Workflow sind <a href="https://www.jetbrains.com/phpstorm/" target="_blank" rel="noopener noreferrer">PhpStorm</a> als IDE mit installiertem <a href="https://plugins.jetbrains.com/plugin/7315" target="_blank" rel="noopener noreferrer">git-flow-Plugin</a> sowie ein funktionierendes Ticketsystem <a href="http://www.redmine.org/" target="_blank" rel="noopener noreferrer">Redmine</a>. Natürlich gibt es Alternativen zu dieser Kombination. PhpStorm arbeitet mit sehr vielen Systemen zusammen, und auch andere IDEs haben ähnliche Funktionen. Der Workflow im Versionskontrollsystem basiert auf unserer <a href="http://presentations.entwicklungshilfe.nrw/git_flow.html">git-flow-Präsentation</a> und ist aus meiner Sicht zwar im Feinen anpassbar, im Groben aber alternativlos.</p>
<h3>Ticketsystem Redmine richtig einstellen</h3>
<p>Das Ticketsystem sollte von außen erreichbar sein. Der zur Verknüpfung benutzte User sollte im Ticketsystem aktiv sein und Projekte und Tasks – im Weiteren auch Issues genannt – zugewiesen haben. Zusätzlich muss die REST-Api in der Konfiguration des Ticketsystems aktiviert sein.</p>
<figure id="attachment_322" aria-describedby="caption-attachment-322" style="width: 1024px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-322 size-large" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/redmine_setting-1024x148.png" alt="Einstellungen im Ticketsystem redmine für PhpStorm" width="1024" height="148" /><figcaption id="caption-attachment-322" class="wp-caption-text">Einstellungen im Ticketsystem redmine für PhpStorm</figcaption></figure>
<h3>In PhpStorm geht es weiter</h3>
<p>In PhpStorm geht man zunächst über die Tastenkombi cmd+&#8220;,&#8220; (Mac) in die Einstellungen und navigiert zu Tools -&gt; Tasks -&gt; Servers. Dort setzt man nach Auswahl des Ticketsystems die URL und Zugangsdaten zu seinem Ticketsystem.</p>
<figure id="attachment_314" aria-describedby="caption-attachment-314" style="width: 1024px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-314 size-large" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_task_server-1024x689.png" alt="PhpStorm-Einstellungen für die Verbindung mit dem Ticketsystem" width="1024" height="689" /><figcaption id="caption-attachment-314" class="wp-caption-text">PhpStorm-Einstellungen für die Verbindung mit dem Ticketsystem</figcaption></figure>
<p>Ein Klick auf den Test-Button liefert das Ergebnis:</p>
<figure id="attachment_308" aria-describedby="caption-attachment-308" style="width: 1024px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-308 size-large" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_settings-1024x420.png" alt="PhpStorm mit dem Ticketsystem Redmine" width="1024" height="420" /><figcaption id="caption-attachment-308" class="wp-caption-text">PhpStorm mit dem Ticketsystem Redmine</figcaption></figure>
<p>Im zweiten Reiter stellt man die Commit-Einstellungen ein. Das Ticketsystem Redmine ist in der Lage, Commit-Nachrichten auszulesen und darauf zu reagieren. Eine sinnvolle Einstellung zur Automatisierung spart hier wertvolle Zeit.</p>
<figure id="attachment_313" aria-describedby="caption-attachment-313" style="width: 1024px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-313 size-large" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_tasks_settings_2-1024x682.png" alt="Einstellungen in PhpStorm für die Verbindung mit dem Ticketsystem" width="1024" height="682" /><figcaption id="caption-attachment-313" class="wp-caption-text">Einstellungen in PhpStorm für die Verbindung mit dem Ticketsystem</figcaption></figure>
<h2>Optimaler Workflow in PhpStorm mit dem Ticketsystem Redmine</h2>
<p>Die Voraussetzungen sind hier ein Projekt im ausgecheckten develop-Branch, ein vorhandenes Ticket und eine eingerichtete Entwicklungsumgebung.</p>
<p>Die Steuerungsleiste für das Taskmanagement befindet sich im rechten oberen Bereich.</p>
<figure id="attachment_307" aria-describedby="caption-attachment-307" style="width: 838px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-307 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_settings_server_task.png" alt="Leiste für die Ticketsystemsteuerung" width="838" height="52" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_settings_server_task.png 838w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_settings_server_task-300x19.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_settings_server_task-768x48.png 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_settings_server_task-300x19@2x.png 600w" sizes="auto, (max-width: 838px) 100vw, 838px" /><figcaption id="caption-attachment-307" class="wp-caption-text">Leiste für die Ticketsystemsteuerung</figcaption></figure>
<p>Über das Dropdown kommt man in den &#8222;Task öffnen&#8220;-Dialog.</p>
<figure id="attachment_321" aria-describedby="caption-attachment-321" style="width: 750px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-321 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_open_task-e1454265308986.png" alt="Öffnen einer Issue in PhpStorm" width="750" height="401" /><figcaption id="caption-attachment-321" class="wp-caption-text">Öffnen einer Issue in PhpStorm</figcaption></figure>
<p>Nach erfolgreichem Öffnen eines Tasks sollte man eine für den Task eingerichtete Changelist in PhpStorm und auf Ebene der Versionskontrolle einen Feature-Branch ausgecheckt haben.</p>
<figure id="attachment_312" aria-describedby="caption-attachment-312" style="width: 1024px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-312 size-large" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_changelist2-1024x361.png" alt="Fortschritt im PHP-Projekt" width="1024" height="361" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_changelist2-1024x361.png 1024w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_changelist2-300x106.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_changelist2-768x271.png 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_changelist2-1024x361@2x.png 2048w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_changelist2-300x106@2x.png 600w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_changelist2-768x271@2x.png 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption id="caption-attachment-312" class="wp-caption-text">Fortschritt im PHP-Projekt</figcaption></figure>
<p>Sollte man seine relevanten Entwicklungen lokal abgeschlossen haben, kommt der Zeitpunkt, an dem man seinen Code committet. Durch die Nutzung der taskrelevanten Changelisten ist dies selbst bei Bearbeitung mehrerer Issues in einem Projekt durchschaubar. Zudem verringern die voreingestellten Informationen aus dem Ticketsystem die manuell einzugebenden Informationen.</p>
<figure id="attachment_311" aria-describedby="caption-attachment-311" style="width: 1024px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-311 size-large" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_commit-1024x772.png" alt="Commit der neuen Dateien" width="1024" height="772" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_commit-1024x772.png 1024w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_commit-300x226.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_commit-768x579.png 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_commit.png 1517w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_commit-300x226@2x.png 600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption id="caption-attachment-311" class="wp-caption-text">Commit der neuen Dateien</figcaption></figure>
<p>Vor dem anschließenden Push zeigt PhpStorm eine Zusammenfassung der Änderungen.</p>
<figure id="attachment_320" aria-describedby="caption-attachment-320" style="width: 1024px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-320 size-large" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_push-1024x1008.png" alt="Push in unser zentrales Versionskontrollsystem" width="1024" height="1008" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_push-1024x1008.png 1024w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_push-300x295.png 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_push-768x756.png 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_push.png 1170w, https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_push-300x295@2x.png 600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption id="caption-attachment-320" class="wp-caption-text">Push in unser zentrales Versionskontrollsystem</figcaption></figure>
<p>Als Abschluss muss man das Feature leider noch manuell über das git-flow-Plugin schließen, aber ich hoffe, dass das in naher Zukunft automatisiert wird.</p>
<figure id="attachment_317" aria-describedby="caption-attachment-317" style="width: 526px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-317 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_gitflow-e1454265851423.png" alt="Der Feature Branch wird geschlossen" width="526" height="351" /><figcaption id="caption-attachment-317" class="wp-caption-text">Der Feature Branch wird geschlossen</figcaption></figure>
<p>Als Meldung sollte PhpStorm einblenden, dass der Feature-Branch erfolgreich zurückgemerged wurde.</p>
<figure id="attachment_318" aria-describedby="caption-attachment-318" style="width: 750px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-318 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_tasks-e1454265896201.png" alt="Erfolgsmeldung aus PhpStorm für unseren Workflow" width="750" height="112" /><figcaption id="caption-attachment-318" class="wp-caption-text">Erfolgsmeldung aus PhpStorm für unseren Workflow</figcaption></figure>
<p>Es kann zudem vorkommen, dass PhpStorm die Changelist nicht löscht. Um die Ordnung nicht zu verlieren, hilft das manuelle Löschen.</p>
<figure id="attachment_316" aria-describedby="caption-attachment-316" style="width: 750px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-316 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_changelist-e1454265959607.png" alt="Manuelles Löschen der Changelist in PhpStorm" width="750" height="441" /><figcaption id="caption-attachment-316" class="wp-caption-text">Manuelles Löschen der Changelist in PhpStorm</figcaption></figure>
<p>Außerdem kann es helfen, bei zu vielen Issues in der Liste auch diese manuell zu löschen.</p>
<figure id="attachment_315" aria-describedby="caption-attachment-315" style="width: 750px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-315 size-full" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/phpstorm_workflow_tasks_2-e1454266031571.png" alt="Entfernen der Issue aus der Taskliste" width="750" height="218" /><figcaption id="caption-attachment-315" class="wp-caption-text">Entfernen der Issue aus der Taskliste</figcaption></figure>
<h3>Überprüfung in der Versionskontrolle und im Ticketsystem Redmine</h3>
<p>Wer ähnlich wie wir <a href="http://www.entwicklungshilfe.nrw/blog/ticketsystem-mit-versionskontrolle/">Redmine mit gitolite und dem redmine git hosting</a> nutzt, kann jetzt in seinem Projekt bei Redmine im Projektarchiv seinen neuen Workflow überprüfen.</p>
<figure id="attachment_309" aria-describedby="caption-attachment-309" style="width: 1024px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="wp-image-309 size-large" src="https://entwicklungshilfe.nrw/wp-content/uploads/2016/01/workflow_redmine-1024x162.png" alt="Workflow Ansicht im Ticketsystem Redmine" width="1024" height="162" /><figcaption id="caption-attachment-309" class="wp-caption-text">Workflow-Ansicht im Ticketsystem Redmine</figcaption></figure>
<p>Weiterführende Informationen zum Beispiel vom PhpStorm-Hersteller Jetbrains bekommt ihr <a href="https://www.jetbrains.com/phpstorm/help/tasks.html" target="_blank" rel="noopener noreferrer">hier</a>.</p>
<p><em>Nutzt ihr in euren PHP-Projekten eine andere Kombination von Ticketsystem, Versionskontrolle und IDE? Wenn ja, dann schreibt uns hier doch bitte mal, welche das sind. Denn von einem solchen Know-how-Austausch profitieren ja letztlich alle. Die oben beschriebene Kombination <a href="http://www.entwicklungshilfe.nrw/seminare/phpstorm-effektiv-mit-ticketsystem-nutzen/">schulen</a> wir übrigens auch.</em></p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2016/01/31/phpstorm-mit-ticketsystem-redmine-nutzen/">PhpStorm mit dem Ticketsystem Redmine nutzen</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2016/01/31/phpstorm-mit-ticketsystem-redmine-nutzen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ticketsystem mit Versionskontrolle</title>
		<link>https://entwicklungshilfe.nrw/blog/2015/12/29/ticketsystem-mit-versionskontrolle/</link>
					<comments>https://entwicklungshilfe.nrw/blog/2015/12/29/ticketsystem-mit-versionskontrolle/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Mautz]]></dc:creator>
		<pubDate>Tue, 29 Dec 2015 12:22:16 +0000</pubDate>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[Ticketsystem]]></category>
		<category><![CDATA[Versionskontrolle]]></category>
		<guid isPermaLink="false">http://www.entwicklungshilfe.nrw/blog/?p=79</guid>

					<description><![CDATA[<p>Ein Ticketsystem mit Versionskontrolle ist eine geeignete Grundlage für Freelancer und kleine Agenturen, um Softwareentwicklungsprojekte zu managen. Zudem hilft eine Versionskontrolle wie git dabei, Änderungen am Code zu deployen. Redmine 3 mit Gitolite 3 installieren Eine gelungene, kostenfreie Kombination für ein Ticketsystem mit Versionskontrolle bieten Redmine als Ticketsystem und git als Versionskontrolle. Gitolite dient dabei als Mittler, um Nutzer des [&#8230;]</p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2015/12/29/ticketsystem-mit-versionskontrolle/">Ticketsystem mit Versionskontrolle</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Ein Ticketsystem mit Versionskontrolle ist eine geeignete Grundlage für Freelancer und kleine Agenturen, um Softwareentwicklungsprojekte zu managen. Zudem hilft eine Versionskontrolle wie git dabei, Änderungen am Code zu deployen.</p>
<p><a href="https://entwicklungshilfe.nrw/wp-content/uploads/2015/12/23750809531_24c0a4b8e6_o-e1451303431955.jpg" rel="attachment wp-att-107"><img loading="lazy" decoding="async" class="wp-caption alignleft wp-image-107 size-medium" src="https://entwicklungshilfe.nrw/wp-content/uploads/2015/12/23750809531_24c0a4b8e6_o-e1451303431955-300x197.jpg" alt="Ticketsystem mit Versionskontrolle" width="300" height="197" srcset="https://entwicklungshilfe.nrw/wp-content/uploads/2015/12/23750809531_24c0a4b8e6_o-e1451303431955-300x197.jpg 300w, https://entwicklungshilfe.nrw/wp-content/uploads/2015/12/23750809531_24c0a4b8e6_o-e1451303431955-768x504.jpg 768w, https://entwicklungshilfe.nrw/wp-content/uploads/2015/12/23750809531_24c0a4b8e6_o-e1451303431955-1024x672.jpg 1024w, https://entwicklungshilfe.nrw/wp-content/uploads/2015/12/23750809531_24c0a4b8e6_o-e1451303431955-214x140.jpg 214w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<h2>Redmine 3 mit Gitolite 3 installieren</h2>
<p>Eine gelungene, kostenfreie Kombination für ein Ticketsystem mit Versionskontrolle bieten <a href="http://www.redmine.org/" target="_blank" rel="noopener noreferrer">Redmine</a> als Ticketsystem und <a href="https://git-scm.com/" target="_blank" rel="noopener noreferrer">git</a> als Versionskontrolle. <a href="https://github.com/sitaramc/gitolite" target="_blank" rel="noopener noreferrer">Gitolite</a> dient dabei als Mittler, um Nutzer des Ticketsystems gegenüber dem eigenen Git-Server zu authentifizieren und so die Versionskontrolle über das Ticketsystem steuerbar zu machen. Mehr dazu gibt es im neuen Jahr in einem eigenen Blog-Beitrag, den ich dann hier verlinke.</p>
<h2>Voraussetzungen für die neue Infrastruktur</h2>
<p>Dieser Artikel ist eine Anleitung, wie man auf einem eigenen, dafür geeigneten Server diese Kombination aufsetzt.<br />
Ausgegangen wird hier von <a href="https://www.debian.org/" target="_blank" rel="noopener noreferrer">Debian</a> als Betriebssystem, und der eingeloggte User ist root. Es wird vorausgesetzt, dass man Pakete installieren und einen einfachen Editor wie vim oder nano benutzen kann.</p>
<p>Zunächst installiert man die grundlegenden Softwarepakete, die benötigt werden:</p>
<pre class="lang:default decode:true" title="benötigte Pakete für das Ticketsystem mit Versionskontrolle">apt-get install rubygems gitolite3 build-essential libssh2-1 libssh2-1-dev cmake libgpg-error-dev mysql apoache2
</pre>
<p>Anschließend werden dem System zwei User für git (&#8222;git&#8220;) und Redmine (&#8222;redmine&#8220;) hinzugefügt:</p>
<pre class="lang:default decode:true " title="User anlegen">adduser --system --shell /bin/bash --gecos 'Git Administrator' --group --disabled-password --home /opt/gitolite git
adduser --system --shell /bin/bash --gecos 'Redmine Administrator' --group --disabled-password --home /opt/redmine redmine
</pre>
<p>Da das Ticketsystem später die Kontrolle über die Versionskontrolle ausüben soll, legen wir einen SSH-Key für den User <em>redmine</em> an:</p>
<pre class="lang:default decode:true " title="redmine ssh-key">su redmine
ssh-keygen -t rsa -N '' -f ~/.ssh/redmine_gitolite_admin_id_rsa
exit
</pre>
<h2>Versionskontrolle kontrollieren</h2>
<p>Nun kann Gitolite mit</p>
<pre>dpkg-reconfigure gitolite3</pre>
<p>neu konfiguriert werden, da die Konfiguration bei Installation ein paar Settings anders setzt, als wir es gerne hätten. Die Parameter zur Konfiguration sind:<br />
user: git<br />
repos path: /opt/gitolite<br />
admin ssh-key: /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa.pub</p>
<p>Redmine und Gitolite benötigen teilweise sudo-Rechte für den jeweilig anderen User, Redmine für die Installation temporär sogar darüber hinaus. Dazu konfigurieren wir unseren Server für das Ticketsystem mit Versionskontrolle mit</p>
<pre class="lang:default decode:true">visudo</pre>
<p>Folgendes wird zusätzlich eingetragen:</p>
<p># temp &#8211; *REMOVE* after installation<br />
redmine ALL=(ALL) NOPASSWD:ALL</p>
<p># redmine gitolite integration<br />
redmine ALL=(git) NOPASSWD:ALL<br />
git ALL=(redmine) NOPASSWD:ALL</p>
<h2>Installation des Ticketsystems Redmine</h2>
<p>Jetzt wird Redmine installiert. Dazu loggen wir uns als User <em>redmine</em> ein und wechseln in sein Home-Verzeichnis.</p>
<pre class="lang:default decode:true">sudo su - redmine
cd ~
</pre>
<p>Wir befinden uns jetzt in /opt/redmine, wo wir den aktuellen Code über github ziehen.</p>
<pre class="lang:default decode:true">git init
git remote add origin https://github.com/redmine/redmine.git
git fetch -p
</pre>
<p>Da wir uns im Home-Verzeichnis befinden, schließen wir noch ein paar Verzeichnisse und Dateien aus:</p>
<pre>vim .gitignore</pre>
<p>Auszuschließende Items sind zum Beispiel:<br />
.ssh/<br />
.bash_history</p>
<p>Als nächstes checken wir die aktuelle stabile Version aus.</p>
<pre class="lang:default decode:true">git add .gitignore
git commit -m 'local gitignore'
git checkout 3.1-stable
</pre>
<p>An dieser Stelle kann man jetzt noch die Quelle vom Original zu einer eigenen Quelle verschieben.</p>
<pre class="lang:default decode:true">git remote rm origin
git remote add origin __URL__
</pre>
<p>Wir benutzen Redmine mit einer MySQL-Datenbank. Sollte noch kein MySQL-Server installiert sein, bitte nachholen. Ansonsten mit</p>
<pre class="lang:default decode:true">mysql -u root -p -v -e "CREATE DATABASE redmine CHARACTER SET utf8; CREATE USER '__USER__'@'localhost' IDENTIFIED BY '__PASSWORD__'; GRANT ALL PRIVILEGES ON redmine.* TO '__USER__'@'localhost';"
</pre>
<p>__*__ bitte mit geeigneten Werten ersetzen.</p>
<p>Das oben erstellte Login verwenden wir nun zur Konfiguration von Redmine. Wir kopieren die Config-Templates und editieren diese:</p>
<pre class="lang:default decode:true">cd /opt/redmine/config
cp database.yml.example database.yml
cp configuration.yml.example configuration.yml
</pre>
<pre class="lang:default decode:true">vim database.yml
vim configuration.yml
</pre>
<p>Erweiterte Erläuterungen zur Konfiguration gibt es <a href="http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Step-3-Database-connection-configuration" target="_blank" rel="noopener noreferrer">hier für die Datenbank</a> und <a href="http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Configuration" target="_blank" rel="noopener noreferrer">hier für Generelles</a>.</p>
<p>Danach wechseln wir zurück ins Home-Verzeichnis und beginnen mit der Installation. Zur eigentlichen Installation von Redmine müssen wir im Gemfile noch eine Anpassung vornehmen.</p>
<pre class="lang:default decode:true">cd ~
sudo gem install bundler
nano Gemfile
</pre>
<p>Hier ändern wir die mysql2-Version auf 4.2.0, wenn man Percona als MySQL-Server in der Version 5.6 benutzen möchte.</p>
<p>Jetzt wird endlich installiert:</p>
<pre>bundle install --without development test postgresql sqlite
rake generate_secret_token
RAILS_ENV=production rake db:migrate
</pre>
<h2>Plugins für das Ticketsystem</h2>
<p>Nachdem Redmine grundlegend installiert wurde, kümmern wir uns jetzt um die Plugins:</p>
<pre class="lang:default decode:true">cd ~/plugins
git clone https://github.com/jbox-web/redmine_bootstrap_kit.git
git clone https://github.com/jbox-web/redmine_git_hosting.git
cd redmine_bootstrap_kit/
git checkout 0.2.4
cd ../redmine_git_hosting/
git checkout 1.2.0
cd ~
bundle install --without development test
bundle exec rake redmine:plugins:migrate RAILS_ENV=production NAME=redmine_git_hosting
</pre>
<p>Der eingangs erstellte SSH-Key wird jetzt in das Plugin verlinkt:</p>
<pre class="lang:default decode:true">ln -s /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa /opt/redmine/plugins/redmine_git_hosting/ssh_keys/redmine_gitolite_admin_id_rsa
ln -s /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa.pub /opt/redmine/plugins/redmine_git_hosting/ssh_keys/redmine_gitolite_admin_id_rsa.pub
</pre>
<h2>Das Ticketsystem mit Versionskontrolle überprüfen</h2>
<p>Wir wechseln jetzt auf die Seite des Users <em>git</em> und überprüfen Gitolite.</p>
<pre class="lang:default decode:true">sudo su - git
sed -i 's/$GL_GITCONFIG_KEYS = ""/$GL_GITCONFIG_KEYS = ".*"/g' /opt/gitolite/.gitolite.rc
exit
ssh -i .ssh/redmine_gitolite_admin_id_rsa git@localhost info
</pre>
<p>Dabei sollte eine Antwort ähnlich wie diese hier kommen:<br />
hello admin, this is git@__SERVER__ running gitolite3 3.6.1-2 (Debian) on git 2.1.4</p>
<p>R W gitolite-admin<br />
R W testing</p>
<p>Als letztes wird nun Redmine mittels des Passenger-Moduls zum Laufen gebracht. Es wird vorausgesetzt, dass ein entsprechender vhost-Eintrag existiert, der auf /opt/redmine/public verweist. Das Passenger-Modul installiert man mit</p>
<pre>passenger-install-apache2-module</pre>
<p>und trägt danach die in der Installation erzeugten Pfade in die apache-Konfiguration ein.</p>
<p><em>Bei mir hat diese Anleitung zum Aufsetzen eines Ticketsystems mit Versionskontrolle bisher immer sehr gut funktioniert. Wenn ihr Probleme habt, schreibt bitte in die Kommentare, damit diese Anleitung ständig verbessert werden kann. Gleichzeitig können wir durch den regen Ausstausch mit euch aber auch die Qualität unserer <a href="http://www.entwicklungshilfe.nrw/seminare/oh-my-zsh-mit-agnoster-theme/">PHP-Schulungen für Webentwickler</a> noch weiter erhöhen.</em></p>
<p><strong>Quellen und weiterführende Links:</strong><br />
<a href="https://github.com/redmine/redmine" target="_blank" rel="noopener noreferrer">Redmine</a><br />
<a href="http://gitolite.com/gitolite/install.html" target="_blank" rel="noopener noreferrer">Gitolite</a><br />
<a href="https://nsaunders.wordpress.com/2012/04/24/redmine-gitolite-integration/" target="_blank" rel="noopener noreferrer">Redmine und Gitolite</a><br />
<a href="https://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_2_integrated_with_Gitolite_2_on_Debian_Wheezy_with_Apache_and_Phusion_Passenger" target="_blank" rel="noopener noreferrer">Apache Passenger</a><br />
<a href="http://redmine-git-hosting.io/get_started/" target="_blank" rel="noopener noreferrer">Redmine git hosting</a><br />
<a href="https://www.redmine.org/plugins/redmine_git_hosting" target="_blank" rel="noopener noreferrer">Redmine git hosting Plugin-Seite</a></p>
<p>Der Beitrag <a href="https://entwicklungshilfe.nrw/blog/2015/12/29/ticketsystem-mit-versionskontrolle/">Ticketsystem mit Versionskontrolle</a> erschien zuerst auf <a href="https://entwicklungshilfe.nrw">Entwicklungshilfe NRW</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://entwicklungshilfe.nrw/blog/2015/12/29/ticketsystem-mit-versionskontrolle/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
