GitHub è diventato la pietra angolare di tutto il software open source. Gli sviluppatori lo adorano, collaborano e creano costantemente progetti fantastici. Oltre ad ospitare il nostro codice, l'attrazione principale di GitHub è quella di utilizzarlo come strumento collaborativo. In questo tutorial, esploriamo alcune delle più utili funzionalità di GitHub, specialmente per lavorare in team, rendendo tutto più efficiente, produttivo e, soprattutto, divertente!
Una cosa che trovo molto utile è l'integrazione di Github Wiki nel progetto del codice sorgente principale.
Questo tutorial presume che tu abbia già familiarità con Git, il sistema di controllo delle versioni distribuito open source, creato da Linus Torvalds nel 2005. Se hai bisogno di una revisione o di una ricerca su Git, visita il nostro corso di screencast precedente o anche alcuni post. Inoltre, dovresti già avere un account Github e hai fatto alcune funzioni di base come la creazione di un repository e le modifiche a Github. Altrimenti, vai su altri tutorial precedenti.
Nel mondo dei progetti software, è inevitabile che ci troveremo a lavorare in un team per consegnare un progetto. Per questo tutorial su Github e la collaborazione del team, esploreremo alcuni degli strumenti più comuni di cui abbiamo generalmente bisogno quando lavoriamo con i team di software. Gli strumenti discussi sono:
Se preferisci uno screencast per un walk-through visivo, salta subito sotto per visualizzarlo e fai riferimento a questo tutorial come note a margine:
Ci sono generalmente due modi per configurare Github per la collaborazione del team:
Se si sta supervisionando diversi team e si desidera impostare livelli di autorizzazione diversi per ogni squadra con vari membri e aggiungere ciascun membro a repository differenti, l'organizzazione sarebbe l'opzione migliore. Qualsiasi account utente Github può già creare Organizzazioni libere per repository di codice open source. Per creare un'organizzazione, accedi alla pagina delle impostazioni della tua organizzazione:
Per accedere alla pagina delle squadre per la tua organizzazione, puoi semplicemente andare a http://github.com/organizations/[organization-name]/teams
per vederli o anche per visitarli https://github.com/organizations/[organization-name]/teams/new
creare nuovi team con membri di 3 diversi livelli di autorizzazione come:
I collaboratori sono abituati a dare entrambi Leggi + Scrivi accesso a un singolo repository di proprietà di un account personale. Per aggiungere Collaboratori, (altri account personali Github) basta andare su https://github.com/[username]/[repo-name]/settings/collaboration
:
Fatto ciò, ciascun Collaboratore vedrà una modifica dello stato di accesso nella pagina del repository. Dopo aver accesso in scrittura al repository, possiamo fare a git clone
, lavorare sui cambiamenti, fare a tira fuori
per recuperare e unire eventuali modifiche nel repository remoto e, in ultima analisi spingere
, per aggiornare il repository remoto con le nostre modifiche:
Le richieste di pull sono un modo fantastico per contribuire a un repository in modo indipendente rilanciandolo. Alla fine della giornata, se lo desideriamo, possiamo inviare una richiesta di pull al proprietario del repository per unire le nostre modifiche al codice. La richiesta pull in sé può quindi attivare discussioni per la qualità del codice, le funzionalità o anche la strategia generale.
Passiamo ora ai passaggi di base per una richiesta di pull.
Ci sono due modelli di richiesta pull in Github:
Qui vediamo il flusso di lavoro tra due utenti (repo-proprietario
e biforcuta-repo-proprietario
) per il modello Fork and Pull:
spingere
o tira fuori
. Successivamente, cloneremo questo repository sul nostro computer locale: $ git clone [ssh-url] [nome-cartella] $ cd [nome-cartella]
readme.md
file: $ git checkout -b [nuova funzionalità]
$ git add. $ git commit -m "informazioni aggiunte in readme" $ git checkout master
git push [git-remote-alias] [nome-ramo]
: $ git branch * master readme $ git remote -v origin [email protected]: [forked-repo-owner-username] / [repo-name] .git (fetch) origine [email protected]: [fork-repo- owner-username] / [repo-name] .git (push) $ git push origine readme
Se sei il proprietario del repository originale, ci sono due modi per unire una richiesta pull in arrivo:
Esistono diversi modelli di ramificazione utilizzati per il controllo delle versioni nei team di sviluppo software. Ecco due popolari modelli di workflow git: (1) flusso di lavoro Github che ha un semplice modello di branching e utilizza le richieste pull e (2) Gitflow che ha una ramificazione più estesa. Il modello che alla fine verrà scelto cambierà sicuramente a seconda della squadra, del progetto e della situazione.
Le richieste di pull sono un modo fantastico per contribuire a un repository in modo indipendente rilanciandolo.
In Github, il centro per tutti i bug tracking sono i problemi. Anche se sono principalmente utili per il tracciamento dei bug, è utile utilizzare i problemi nei seguenti modi:
Esaminiamo alcune delle funzionalità di Issues:
Correzioni / Risolto o Chiudi / Chiude / Chiuso # [numero-problema]
chiuderà automaticamente il problema. $ git add. $ git commit -m "URL corretto. Correzioni # 2" $ git push origin master
#[edizione numero]
nei loro messaggi Poiché i numeri dei numeri sono linkati, questo rende molto facile menzionare i problemi correlati durante la discussione.È chiaro che possiamo accoppiare strettamente la nostra lista delle attività e gli aggiornamenti al nostro codice commettono.
Esistono due strumenti che forniscono informazioni su un repository: grafici e rete. Github Graphs fornisce una panoramica dei collaboratori e si impegna dietro ciascun repository di codice, mentre Github Network fornisce una visualizzazione su ciascun contributore e i relativi commit su tutti i repository biforcati. Queste analisi e grafici diventano molto potenti, specialmente quando si lavora in team.
I grafici forniscono analisi dettagliate come:
Github Network è un potente strumento che ti consente di visualizzare ogni commit di ogni contributore e in che modo sono correlati l'uno con l'altro. Quando guardiamo il visualizzatore nella sua interezza, vediamo ogni commit su ogni ramo di ogni repository che appartiene a una rete. Ipocrisia!
Sebbene i problemi di Github abbiano funzionalità di gestione dei progetti con problemi e milestone, alcuni team potrebbero preferire un altro strumento a causa di altre funzionalità o del flusso di lavoro esistente. In questa sezione vedremo come possiamo collegare Github con altri due strumenti di gestione del progetto popolari: Trello e Pivotal Tracker. Con gli hook di servizio Github, possiamo automatizzare l'attività di aggiornamento con commit, problemi e molte altre attività. Questa automazione aiuta non solo a risparmiare tempo, ma aumenta anche la precisione negli aggiornamenti per qualsiasi team di sviluppo software.
Trello offre un modo semplice e visivo di gestire le attività. Utilizzando le metodologie di sviluppo del software Agile, le carte Trello possono emulare una semplice Kanban Board virtuale. Ad esempio, creeremo automaticamente una carta Trello ogni volta che viene effettuata una richiesta di pull con Gitn di servizio Github. Andiamo attraverso i passaggi!
GETTONE
sotto Installare Note 1 con il collegamento ipertestuale fornito per l'autenticazione.lista id
per ogni carta Trello. BOARDID
fa parte dell'URL quando visitiamo il forum a https://trello.com/board/[BOARD-NAME]/[BOARDID]
. GETTONE
può essere creato con il collegamento ipertestuale indicato in Installa Note n. 1. lista id
e il gettone
. Controlla Active, Test Hook e siamo pronti per ricevere aggiornamenti automatici ogni volta che viene richiesta Pull. Pivotal Tracker è un altro strumento di gestione del progetto agile e leggero in cui la pianificazione basata sulla storia consente al team di collaborare facilmente reagendo all'istante a vari cambiamenti e progressi del progetto. Sulla base dei progressi attuali del team, può anche creare grafici per analizzare la velocità della squadra, la masterizzazione dell'iterazione, il burn-down del rilascio, ecc. In questo breve esempio, forniremo automaticamente una storia collegandola a un commit Github!
git commit -m "message [consegna #tracker_id]"
$ git add. $ git commit -m "Ganci Github e Pivotal Tracker implementati [consegna n. 43903595]" $ git push
Con questi esempi Trello e Pivotal Tracker, è chiaro che possiamo accoppiare strettamente la nostra lista delle attività e gli aggiornamenti al nostro codice commettono. Questo è un enorme risparmio di tempo quando si lavora in una squadra, e migliora la precisione quando si collegano le attività ai commit esatti. La buona notizia è che, se già usi altri strumenti di gestione del progetto come Asana, Basecamp e altri, puoi anche creare Service Hook in modo simile. Se non esistono Ganci di servizio esistenti per il tuo attuale strumento di gestione dei progetti, puoi persino crearne uno!
L'integrazione continua (CI) è una parte importante di tutti i progetti di sviluppo software che funzionano con i team. CI garantisce che, quando uno sviluppatore verifica il codice, una build automatizzata (compresi i test) rileva gli errori di integrazione il più rapidamente possibile. Ciò riduce decisamente gli errori di integrazione e rende l'iterazione rapida molto più efficiente. In questo esempio, vedremo come usare Travis CI con Github for CI per rilevare gli errori e consigliare l'unione quando supera tutti i test.
Utilizzeremo un semplice progetto "ciao-mondo" per node.js con grunt.js come strumento di compilazione per configurare un progetto Travis CI. Ecco i file nel progetto:
hello.js
il file è il progetto del nodo. Qui lasceremo intenzionalmente un punto e virgola in modo che non passi lo strumento di generazione del grunt per il linting: var http = require ('http'); http.createServer (function (req, res) res.writeHead (200, 'Content-Type': 'text / plain'); res.end ('Hello World in Node! \ n') // senza punto e virgola , questo non passerà il linting). listen (1337, '127.0.0.1'); console.log ('Server in esecuzione all'indirizzo http://127.0.1.11337/');
package.json
denota le dipendenze: "name": "hello-team", "description": "Una demo per github and travis ci per la collaborazione di squadra", "author": "nome"," version ":" 0.0.1 "," devDependencies ": " grunt ":" ~ 0.3.17 "," scripts ": " test ":" grunt travis --verbose "
gruntjs
lo strumento di compilazione ha solo un'attività (linting) solo per semplicità: module.exports = function (grunt) grunt.initConfig (lint: files: ['hello.js']); grunt.registerTask ('default', 'lint'); grunt.registerTask ('travis', 'lint'); ;
.travis.yml
è un file di configurazione di Travis che farà eseguire a Travis i nostri test: lingua: node_js node_js: - 0.8
spingere
per attivare la prima build di Travis e se tutto è a posto, basta visitare http://travis-ci.org/[username]/[repo-name]
per vedere lo stato della build come passeggero! Precedentemente, senza alcun elemento di configurazione nel processo di una richiesta pull, i passaggi sono stati eseguiti in questo modo (1) inviato test pull request (2) merge (3) per verificare se esso passa / non va. Con Travis CI collegato alle richieste di pull, saremo in grado di invertire i passaggi 2 e 3, aumentando ulteriormente il rapido processo decisionale sull'opportunità o meno di fondersi con Travis dandoci lo stato con ogni richiesta di pull. Vediamo come farlo accadere.
Travis CI con Github è immensamente utile per i team grazie alle build automatiche e alla notifica immediata. Certamente rende il ciclo di correzione degli errori molto più breve. Se stai usando Jenkins, un altro popolare strumento CI, sì puoi anche configurare ganci di servizio Github in modo molto simile.
Con ogni commit, Github consente un'interfaccia pulita per commenti generali o anche commenti specifici su una riga di codice. La possibilità di generare commenti o domande su ogni singola riga di codice è molto utile per eseguire revisioni di codice linea per riga. Per visualizzare i commenti in linea, attiva / disattiva la casella di controllo nella parte superiore di ciascun commit.
Esaminiamo alcuni pattern URL che possono essere utilizzati per aiutarci nella revisione del codice, fornendo rapidamente le differenze tra i commit:
https://github.com/[username]/[repo-name]/compare/[starting-SHA1]... [ending-SHA1]
. Puoi fare lo stesso con branch o tag. ?w = 1
per confrontare gli URL .diff
agli URL di confronto per ottenere il git diff
informazioni in testo semplice. Questo potrebbe essere utile per scopi di scripting..toppa
agli URL di confronto per ottenere il git diff
informazioni formattate per invio di patch via email.#linea
alla fine dell'URL e rendere il colore dello sfondo dell'intera linea come giallo. Questo è utile per indicare la linea esatta. Accetta anche intervalli di righe aggiungendo # Start-end
. Ecco alcuni esempi di collegamento a linee e collegamenti a linee.In questa sezione, esploreremo due metodi di documentazione:
Un Github Wiki può essere creato con ciascun repository e questo può essere estremamente utile per inserire sia il codice sorgente che la documentazione nello stesso repository. Per creare il Wiki, accedi alla scheda Wiki sull'intestazione principale e sei impostato per creare pagine con informazioni. Lo stesso Wiki ha il proprio controllo delle versioni ei dati possono essere clonati nel nostro computer locale per aggiornamenti o anche per l'accesso offline.
Una cosa che trovo molto utile è l'integrazione di Github Wiki nel progetto del codice sorgente principale in modo da non dover mantenere due progetti git separati. Per fare ciò, aggiungo il Wiki git repo come sottomodulo dal ramo principale. Se si utilizza Travis CI o qualsiasi altro CI, assicurarsi che lo strumento di costruzione ignori il sottomodulo wiki. Per il file di Travis CI .travis.yml
, aggiungere il seguente:
git: submodules: false
Quindi aggiungi una wiki del sottomulo git al repository di codice principale:
$ git submodule add [email protected]: [username] / [repo-name] .wiki.git Clonazione in 'hello-team.wiki' ... remoto: conteggio oggetti: 6, fatto. remote: compressione di oggetti: 100% (3/3), fatto. remote: Total 6 (delta 0), riutilizzato 0 (delta 0) Oggetti di ricezione: 100% (6/6), fatto. $ git add. $ git commit -m "ha aggiunto wiki come sottomodulo" $ git push origin master
Ora il Wiki apparirà ordinatamente come sottomodulo all'interno del progetto del codice sorgente principale.
Hubot, in breve, può enormemente aggiungere un sacco di divertimento nella documentazione e nella notifica delle discussioni di gruppo su importanti commit.
Hubot è semplicemente un bot di chat in grado di recuperare informazioni o fornire notifiche quando si è connessi a commit, problemi o attività di Github. In un team che cerca di ridurre significativamente le riunioni o addirittura di eliminarle completamente, Hubot con un'interfaccia di chat tra i membri del team aiuta a documentare ogni singola discussione. Certamente promuove tempi di lavoro flessibili, in quanto nessuno deve essere presente nello stesso momento per le discussioni. Avvertenza: Hubot è terribilmente coinvolgente!
Con questo, iniziamo con la configurazione di Hubot ospitato su Heroku e come bot con l'interfaccia di chat Campfire! Sia per Heroku che per Campfire, ci sono versioni gratuite per iniziare.
Non può ottenere /
in quanto non c'è nulla da ottenere di default.Aiuto Hubot
. Vi darà tutto il comando disponibile per hubot. hubot lo spedisce
o hubot mi mappa CERN
. github-commits.coffee
dentro il script
cartella.package.json
file con le dipendenze rilevanti come indicato su ciascun file di script hubot sotto i commenti.git push heroku master
.[HUBOT_URL]: [PORT] / hubot / gh-impegna camera = [ROOM_ID]?
Controlla altri script Hubot relativi a Github, o se vuoi scriverne uno c'è anche un fantastico tutorial su questo! Hubot, in breve, può enormemente aggiungere un sacco di divertimento nella documentazione e nella notifica delle discussioni di gruppo su importanti commit, problemi e attività che si svolgono con i nostri repository Github. Provaci!
Come nota finale sul lavoro con il team su Github, ecco alcuni suggerimenti sulla produttività:
@utente
e l'utente riceverà una notifica del commento[cambio] + ?
per accedere ai tasti di scelta rapida Github su qualsiasi pagina.Molti di noi penseranno di usare Github solo per progetti software. Dopotutto, Github è stato avviato per la "codifica" sociale. Ma ci sono alcuni fantastici repository Github che vengono utilizzati per progetti non codificanti, ed erano ugualmente fantastici per la collaborazione e la discussione. Poiché questi progetti sono anche open source e chiunque può contribuire, è veloce correggere errori, segnalare bug ed è efficace collaborare con persone che la pensano allo stesso modo. Solo per divertimento, eccone alcuni:
E chiedendosi cosa ne pensa il team Github a riguardo?
"Scaviamo divertiti usi di GitHub come questo"