GitHub ist zum Eckstein für Open Source-Software geworden. Entwickler lieben es, arbeiten daran zusammen und bauen ständig großartige Projekte auf. Neben dem Hosting unseres Codes ist es für GitHub der Hauptanziehungspunkt, es als kollaboratives Werkzeug zu verwenden. In diesem Tutorial möchten wir Ihnen einige der nützlichsten GitHub-Funktionen näher bringen, insbesondere für die Arbeit in Teams. Dadurch wird das Ganze effizienter, produktiver und vor allem Spaß!
Eine Sache, die ich sehr nützlich finde, ist die Integration des Github-Wikis in das Quelltextprojekt.
In diesem Lernprogramm wird davon ausgegangen, dass Sie bereits mit Git, dem verteilten Versionskontrollsystem Open Source, das 2005 von Linus Torvalds erstellt wurde, vertraut sind. Wenn Sie eine Revision oder eine Suche nach Git benötigen, besuchen Sie unseren vorherigen Screencast-Kurs oder sogar einige Posts. Außerdem sollten Sie bereits ein Github-Konto haben und einige grundlegende Funktionen ausführen, z. B. ein Repository erstellen und Änderungen an Github weiterleiten. Wenn nicht, dann gehen Sie weiter zu früheren Tutorials.
In der Welt der Softwareprojekte ist es unvermeidlich, dass wir in einem Team arbeiten, um ein Projekt zu liefern. In diesem Lernprogramm zu Github und zur Teamzusammenarbeit werden wir einige der gängigsten Tools erkunden, die wir normalerweise benötigen, wenn Sie mit Softwareteams arbeiten. Die besprochenen Werkzeuge sind:
Wenn Sie einen Screencast für einen visuellen Rundgang bevorzugen, können Sie es sich unten anzeigen lassen und dieses Tutorial als Randnotizen betrachten:
Es gibt im Allgemeinen zwei Möglichkeiten, Github für die Teamzusammenarbeit einzurichten:
Wenn Sie mehrere Teams beaufsichtigen und für jedes Team mit verschiedenen Mitgliedern unterschiedliche Berechtigungsstufen festlegen und jedes Mitglied verschiedenen Repositorys hinzufügen möchten, wäre Organisation die beste Option. Jedes Github-Benutzerkonto kann bereits kostenlose Organisationen für Open Source Code-Repositorys erstellen. Um eine Organisation zu erstellen, navigieren Sie einfach zur Einstellungsseite Ihrer Organisation:
Um auf die Teamseite Ihrer Organisation zuzugreifen, können Sie einfach auf klicken http://github.com/organizations/[organization-name/0/teams
um sie zu sehen oder sogar zu besuchen https://github.com/organizations/[organization-name/0/teams/new
Neue Teams mit Mitgliedern mit drei verschiedenen Berechtigungsstufen erstellen, z.
Beide Mitarbeiter geben beides aus Lesen + Schreibzugriff zu einem einzigen Repository, das einem persönlichen Konto gehört. Um Mitbearbeiter (andere persönliche Github-Konten) hinzuzufügen, gehen Sie einfach zu https://github.com/[Benutzername?/[repo-name//settings/collaboration
:
Sobald dies geschehen ist, sieht jeder Mitarbeiter eine Änderung des Zugriffsstatus auf der Repository-Seite. Nachdem wir Schreibzugriff auf das Repository haben, können wir eine Git Klon
, an den Änderungen arbeiten, a git ziehen
um alle Änderungen im Remote-Repository und letztendlich abzurufen und zusammenzuführen git Push
, um das entfernte Repository mit unseren eigenen Änderungen zu aktualisieren:
Pull-Requests sind eine großartige Möglichkeit, unabhängig durch Abspalten zu einem Repository beizutragen. Wenn wir möchten, können wir am Ende des Tages eine Pull-Anfrage an den Repository-Besitzer senden, um die Codeänderungen zusammenzuführen. Die Pull-Anforderung an sich kann dann Diskussionen über die Codequalität, Merkmale oder sogar die allgemeine Strategie auslösen.
Lassen Sie uns nun die grundlegenden Schritte für eine Pull-Anfrage durchgehen.
Es gibt zwei Arten von Pull-Anforderungen in Github:
Hier sehen wir den Workflow zwischen zwei Benutzern (Repo-Besitzer
und Gegabelter Repo-Besitzer
) für das Gabel- und Ziehmodell:
git Push
oder git ziehen
. Als Nächstes werden wir dieses Repository auf unseren lokalen Computer klonen: $ git clone [ssh-url] [Ordnername] $ cd [Ordnername]
readme.md
Datei: $ git checkout -b [neue Funktion]
$ git add. $ git commit -m "In der Readme hinzugefügte Information" $ git Checkout-Master
git push [git-remote-alias] [Name der Verzweigung]
: $ git-Zweig * Master-Readme-Datei $ git remote -v ursprung [email protected]: [gegabter-Repo-Besitzer-Benutzername] / [Repo-Name] .git (Abruf) ursprung [email protected]: [g Besitzer-Benutzername] / [Repo-Name] .git (Push) $ git Push-Herkunfts-Readme
Wenn Sie der ursprüngliche Repository-Besitzer sind, gibt es zwei Möglichkeiten, eine eingehende Pull-Anforderung zusammenzuführen:
Es gibt verschiedene Verzweigungsmodelle, die zur Versionierung in Softwareentwicklungsteams verwendet werden. Hier sind zwei beliebte Git-Workflow-Modelle: (1) Github-Workflow, der über ein einfaches Verzweigungsmodell verfügt und Pull-Anforderungen verwendet, und (2) Gitflow, der eine umfangreichere Verzweigung aufweist. Das letztendlich gewählte Modell hängt definitiv vom Team, dem Projekt und der Situation ab.
Pull-Requests sind eine großartige Möglichkeit, unabhängig durch Abspalten zu einem Repository beizutragen.
In Github sind die Probleme das Zentrum für alle Fehlerverfolgung. Obwohl sie hauptsächlich zur Fehlerbehebung dienen, ist es auch hilfreich, Probleme auf folgende Weise zu verwenden:
Lassen Sie uns einige der Funktionen von Issues erkunden:
Fixes / Fixed oder Close / Closing / Closed # [Problemnummer]
schließt das Problem automatisch. $ git add. $ git commit -m "Korrigierte URL. Fixes # 2" $ git Push-Ursprungsmaster
#[Ausgabe Nummer]
in ihren Botschaften. Da die Ausgabenummern mit Hyperlinks versehen sind, ist es sehr einfach, verwandte Probleme in der Diskussion zu erwähnen.Es ist klar, dass wir unsere Aufgabenliste und Updates eng mit unseren Code-Commits verknüpfen können.
Es gibt zwei Tools, die Einblick in ein Repository bieten - Diagramme und Netzwerk. Github Graphs bietet einen Einblick in die Mitbearbeiter und die Commits hinter jedem Code-Repository, während das Github-Netzwerk eine Visualisierung aller Mitwirkenden und ihrer Commits in allen verzweigten Repositorys bietet. Diese Analysen und Grafiken werden besonders bei der Arbeit in Teams sehr leistungsfähig.
Diagramme bieten detaillierte Analysen wie:
Das Github-Netzwerk ist ein leistungsfähiges Werkzeug, mit dem Sie die Commits aller Mitwirkenden und ihre Beziehung zueinander sehen können. Wenn wir den Visualizer in seiner Gesamtheit betrachten, sehen wir jedes Commit in jedem Zweig jedes Repositorys, das zu einem Netzwerk gehört. Aufschlussreich!
Während Github Issues über Projektmanagementfunktionen mit Problemen und Meilensteinen verfügt, bevorzugen einige Teams möglicherweise ein anderes Tool aufgrund anderer Funktionen oder des vorhandenen Workflows. In diesem Abschnitt werden wir sehen, wie wir Github mit zwei anderen bekannten Projektmanagement-Tools verbinden können - Trello und Pivotal Tracker. Mit Github-Service-Hooks können wir Aktualisierungsaufgaben mit Commits, Problemen und vielen anderen Aktivitäten automatisieren. Diese Automatisierung hilft nicht nur, Zeit zu sparen, sondern erhöht auch die Genauigkeit bei Updates für jedes Software-Entwicklungsteam.
Trello bietet eine einfache visuelle Möglichkeit zum Verwalten von Aufgaben. Mit Agile Software Development-Methoden können Trello-Karten ein einfaches virtuelles Kanban-Board emulieren. Als Beispiel erstellen wir automatisch eine Trello-Karte, wenn eine Pull-Anfrage mit Github Service Hooks erfolgt. Lass uns durch die Schritte gehen!
ZEICHEN
unter Install Notes # 1 mit dem zur Authentifizierung bereitgestellten Hyperlink.Listen-ID
für jede Trello-Karte. BOARDID
ist Teil der URL, wenn wir das Board unter besuchen https://trello.com/board/[BOARD-NAME\/[BOARDID]
. ZEICHEN
kann mit dem unter Install Notes # 1 angegebenen Hyperlink erstellt werden. Listen-ID
und das Zeichen
. Aktivieren Sie "Aktiv", "Test Hook" und wir sind alle darauf eingestellt, bei jedem Pull-Request automatische Updates zu erhalten. Pivotal Tracker ist ein weiteres, leichtes, agiles Projektmanagement-Tool, mit dem die Story-basierte Planung dem Team die problemlose Zusammenarbeit ermöglicht, indem es sofort auf verschiedene Änderungen und den Projektfortschritt reagiert. Basierend auf dem aktuellen Fortschritt des Teams können auch Diagramme erstellt werden, um die Teamgeschwindigkeit, den Iterationsabbrand, den Releaseabbrand usw. zu analysieren. In diesem kurzen Beispiel liefern wir automatisch eine Story, indem wir sie mit einem Github-Commit verknüpfen!
git commit -m "message [liefert #tracker_id]"
$ git add. $ git commit -m "Haken von Github und Pivotal Tracker implementiert [liefert # 43903595]" $ git Push
Mit diesen Trello- und Pivotal Tracker-Beispielen ist es klar, dass wir unsere Aufgabenliste und Updates eng mit unseren Code-Commits verknüpfen können. Dies ist eine enorme Zeitersparnis bei der Arbeit in einem Team und verbessert die Genauigkeit beim Verknüpfen von Aufgaben mit den genauen Commits. Die gute Nachricht ist, wenn Sie bereits andere Projektmanagement-Tools wie Asana, Basecamp und andere verwenden, können Sie auch Service Hooks auf ähnliche Weise erstellen. Wenn für Ihr aktuelles Projektverwaltungstool keine Service-Hooks vorhanden sind, können Sie sogar eine erstellen!
Continuous Integration (CI) ist ein wichtiger Bestandteil aller Softwareentwicklungsprojekte, die mit Teams arbeiten. CI stellt sicher, dass ein automatisierter Build (einschließlich Tests) Integrationsfehler so schnell wie möglich erkennt, wenn ein Entwickler seinen Code eincheckt. Dadurch werden Integrationsfehler definitiv reduziert und eine schnelle Iteration wird wesentlich effizienter. In diesem Beispiel werden wir sehen, wie Travis CI mit Github for CI zur Fehlererkennung verwendet werden kann. Außerdem wird die Zusammenführung empfohlen, wenn alle Tests bestanden wurden.
Wir verwenden ein einfaches "Hallo-Welt" -Projekt für node.js mit grunt.js als Build-Tool, um ein Travis-CI-Projekt einzurichten. Hier sind die Dateien im Projekt:
hallo.js
Datei ist das Knotenprojekt. Hier werden wir absichtlich ein Semikolon weglassen, damit das Grunt-Build-Tool nicht für das Flusen verwendet wird: var http = erfordern ('http'); http.createServer (Funktion (req, res) res.writeHead (200, 'Content-Type': 'text / plain'); res.end ('Hello World in Node! \ n') // ohne Semikolon wird das Flusen nicht passieren). listen (1337, '127.0.0.1'); console.log ('Server läuft unter http://127.0.0.1:1337/');
package.json
bezeichnet die Abhängigkeiten: "name": "hallo-team", "description": "Eine Demo für github und travis ci für die Teamzusammenarbeit", "author": "name"," version ":" 0.0.1 "," devDependencies ": " grunt ":" ~ 0.3.17 "," scripts ": " test ":" grunt travis --verbose "
Gruntjs
Das Build-Tool hat aus Gründen der Einfachheit nur eine Aufgabe (Flusen): module.exports = function (grunt) grunt.initConfig (lint: files: ['hello.js']); grunt.registerTask ('default', 'lint'); grunt.registerTask ('travis', 'fussel'); ;
.travis.yml
ist eine Travis-Konfigurationsdatei, mit der Travis unsere Tests ausführen kann: Sprache: node_js node_js: - 0,8
git Push
Um den ersten Travis-Build auszulösen, und wenn alles in Ordnung ist, besuchen Sie einfach http://travis-ci.org/[Benutzername?/[repo-name]
um den Build-Status als bestanden zu sehen! Zuvor liefen die Schritte ohne CI im Prozess einer Pull-Anforderung in etwa wie folgt (1) gesendete Pull-Anfrage (2) - Zusammenführen (3) - Test, um zu sehen, ob sie erfolgreich ist / nicht. Da Travis CI an die Pull-Anforderungen angeschlossen ist, können wir die Schritte 2 und 3 umkehren, was die Entscheidungsfindung darüber, ob es gut ist, mit Travis zusammenzuschließen oder nicht, mit jedem Pull-Status den Status verschmelzen lässt. Mal sehen, wie das geht.
Travis CI mit Github ist aufgrund automatisierter Builds und sofortiger Benachrichtigung für Teams von großem Nutzen. Der Fehlerkorrekturzyklus wird dadurch sicherlich viel kürzer. Wenn Sie Jenkins, ein anderes beliebtes CI-Tool, verwenden, können Sie auch Github-Service-Hooks sehr ähnlich einrichten.
Mit jedem Commit ermöglicht Github eine saubere Schnittstelle für allgemeine Kommentare oder sogar bestimmte Kommentare in einer Codezeile. Die Möglichkeit, Kommentare oder Fragen zu jeder einzelnen Codezeile zu erstellen, ist sehr nützlich, wenn Codeüberprüfungen durchgeführt werden sollen. Um die Inline-Kommentare anzuzeigen, aktivieren Sie das Kontrollkästchen ganz oben in jedem Commit.
Sehen wir uns einige URL-Muster an, die uns bei der Code-Überprüfung helfen können, indem wir schnell die Unterschiede zwischen den Commits angeben:
https://github.com/[Benutzername?/[repo-name?/compare/[starting-SHA1: [Endung-SHA1]
. Sie können dasselbe mit Zweig oder Tags tun. ?w = 1
zu den Vergleichs-URLs .diff
zu den Vergleichs-URLs, um die git diff
Informationen im Klartext. Dies kann für Skriptzwecke hilfreich sein..Patch
zu den Vergleichs-URLs, um die git diff
Informationen, die für die Übermittlung von E-Mail-Patches formatiert sind.#Linie
am Ende der URL und machen Sie die gesamte Hintergrundfarbe der Linie gelb. Dies ist gut geeignet, um die genaue Linie hervorzuheben. Es akzeptiert auch Linienbereiche durch Hinzufügen #Start Ende
. Hier sind Beispiele für Linienverknüpfung und Linienbereichsverknüpfung.In diesem Abschnitt werden wir zwei Dokumentationsmethoden untersuchen:
Mit jedem Repository kann ein Github-Wiki erstellt werden. Dies kann äußerst praktisch sein, um sowohl Quellcode als auch Dokumentation in demselben Repository unterzubringen. Um das Wiki zu erstellen, rufen Sie einfach die Registerkarte "Wiki" im Hauptheader auf, und Sie können Seiten mit Informationen erstellen. Das Wiki selbst verfügt über eine eigene Versionierung, und die Daten können für Aktualisierungen oder sogar für den Offlinezugriff auf unseren lokalen Computer geklont werden.
Eine Sache, die ich sehr nützlich finde, ist die Integration des Github-Wikis in das Haupt-Quellcode-Projekt, sodass ich nicht zwei separate Git-Projekte unterhalten muss. Dazu füge ich das Wiki-Git-Repo als Submodul aus dem Master-Zweig hinzu. Wenn Sie Travis CI oder ein anderes CI verwenden, stellen Sie sicher, dass das Build-Tool das Wiki-Submodul ignoriert. Für Travis CI-Datei .travis.yml
, Folgendes hinzufügen:
git: submodules: false
Fügen Sie dem Hauptcode-Repository ein git-Submodul-Wiki hinzu:
$ git Submodul add [email protected]: [Benutzername] / [Repo-Name] .wiki.git In 'hello-team.wiki' klonen ... remote: Objekte zählen: 6, fertig. Remote: Komprimieren von Objekten: 100% (3/3), fertig. Remote: Summe 6 (Delta 0), wiederverwendete 0 (Delta 0) Empfangsobjekte: 100% (6/6), fertig. $ git add. $ git commit -m "fügte Wiki als Submodul hinzu" $ git Push-Ursprungsmaster
Nun erscheint das Wiki als Submodul innerhalb des Haupt-Quelltextprojekts.
Kurz gesagt, Hubot kann enorm viel Spaß beim Dokumentieren und Benachrichtigen von Teamdiskussionen über wichtige Commits hinzufügen.
Hubot ist einfach ein Chat-Bot, der Informationen abrufen oder Benachrichtigungen bereitstellen kann, wenn er mit Commits, Problemen oder Aktivitäten von Github verbunden ist. In einem Team, das Meetings erheblich reduzieren oder sogar ganz beseitigen möchte, hilft Hubot mit einer Chat-Oberfläche unter den Teammitgliedern, jede einzelne Diskussion zu dokumentieren. Es fördert sicherlich flexible Arbeitszeiten, da niemand zur gleichen Zeit anwesend sein muss, damit Diskussionen stattfinden können. Warnung: Hubot macht furchtbar süchtig!
Beginnen wir mit der Einrichtung von Hubot, das auf Heroku gehostet wird, und als Bot mit der Campfire-Chat-Oberfläche! Für Heroku und Campfire gibt es kostenlose Versionen, um loszulegen.
Kann nicht bekommen /
da gibt es nichts zu bekommen standardmäßig.Hubot helfen
. Sie erhalten alle verfügbaren Befehle für Hubot. Hubot Schiff es
oder Hubot Karte mir CERN
. github-commits.coffee
in der Skripte
Mappe.package.json
Datei mit den relevanten Abhängigkeiten, wie auf jeder Hubot-Skriptdatei unter Anmerkungen angegeben.git Push Heroku-Meister
.[HUBOT_URL]: [PORT] / hubot / gh-commits? Room = [ROOM_ID]
Überprüfen Sie andere Hubot-Skripts, die sich auf Github beziehen, oder wenn Sie eines schreiben möchten, gibt es auch ein cooles Tutorial dazu! Kurz gesagt, Hubot kann enorm viel Spaß bei der Dokumentation und Benachrichtigung von Teamdiskussionen über wichtige Commits, Probleme und Aktivitäten in unseren Github-Repositories hinzufügen. Versuche es!
Als letzte Anmerkung zur Zusammenarbeit mit Github mit dem Team hier ein paar Tipps zur Produktivität:
@Nutzer
Der Benutzer wird über den Kommentar informiert[Verschiebung] + ?
Zugriff auf Github-Tastenkombinationen auf einer beliebigen Seite.Die meisten von uns werden daran denken, Github nur für Softwareprojekte zu verwenden. Immerhin wurde Github für soziale "Kodierung" gestartet. Es gibt jedoch einige coole Github-Repositories, die für Projekte ohne Codierung verwendet werden, und sie waren ebenso großartig für die Zusammenarbeit und Diskussion. Da diese Projekte auch Open Source sind und jeder beitragen kann, ist es schnell möglich, Fehler zu beheben, Fehler zu melden und effektiv mit Gleichgesinnten zusammenzuarbeiten. Nur zum Spaß, hier einige davon: