GitHub har blivit hörnstenen för alla saker med öppen källkod. Utvecklare älskar det, samarbetar med det och bygger ständigt fantastiska projekt genom det. Förutom värd för vår kod använder GitHubs huvudattraktion det som ett samarbetsverktyg. I den här handledningen kan vi utforska några av de mest användbara GitHub-funktionerna, speciellt för att arbeta i team, vilket gör det mer effektivt, produktivt och viktigast av allt kul!
En sak som jag tycker är väldigt användbar är att integrera Github Wiki i huvudkodsprojektet.
Denna handledning förutsätter att du redan är bekant med Git, styrsystemet för öppen källkod distribuerad version, skapad av Linus Torvalds 2005. Om du behöver en revision eller en titt på Git, besök vår tidigare screencast-kurs eller till och med några inlägg. Du borde redan ha ett Github-konto och gjorde några grundläggande funktioner som att skapa ett förråd och skicka ändringar till Github. Om inte, gå vidare till mer tidigare handledning på det.
I mjukvaruprojektens värld är det oundvikligt att vi kommer att hitta oss i ett team för att leverera ett projekt. För denna handledning om Github och team samarbete, kommer vi att utforska några av de vanligaste verktygen som vi generellt behöver när vi arbetar med mjukvaruutlag. De verktyg som diskuteras är:
Om du föredrar en skärmdump för en visuell genomgång, hoppa precis nedanför för att se den och hänvisa till den här handledningen som sidotyper:
Det finns generellt två sätt att skapa Github för teamsamarbete:
Om du övervakar flera lag och vill sätta olika behörighetsnivåer för varje lag med olika medlemmar och lägga till varje medlem i olika repositories, skulle Organization vara det bästa alternativet. Alla Github användarkonton kan redan skapa gratis organisationer för öppna källkodsförråd. För att skapa en organisation, bläddra helt enkelt till din organisations inställningssida:
För att komma åt lagsidan för din organisation kan du helt enkelt gå till http://github.com/organizations/[organization-name]/teams
att se dem eller ens besöka https://github.com/organizations/[organization-name]/teams/new
att skapa nya lag med medlemmar av 3 olika tillståndsnivåer som:
Samarbetare används för att ge båda Läs + Skrivåtkomst till ett enda förråd som ägs av ett personligt konto. För att lägga till Collaborators, (andra Github personliga konton) gå bara till https://github.com/[username]/[repo-name]/settings/collaboration
:
När det är klart kommer varje medarbetare att se en ändring av åtkomststatusen på arkivsidan. När vi har skrivåtkomst till förvaret kan vi göra en git klon
, arbeta på förändringarna, gör en git pull
att hämta och slå samman alla ändringar i fjärrförvaret och i slutändan git push
, för att uppdatera fjärrförvaret med egna ändringar:
Pull Requests är ett fantastiskt sätt att självständigt bidra till ett förråd genom att forking det. Vid slutet av dagen kan vi, om vi önskar, skicka en begäran om förfrågan till förvaringsinnehavaren för att slå samman våra kodändringar. Draförfrågan i sig kan sedan avfyra diskussioner om kodkvalitet, funktioner eller till och med generell strategi.
Låt oss nu gå igenom de grundläggande stegen för en dragförfrågan.
Det finns två modeller för dragförfrågan i Github:
Här ser vi arbetsflödet mellan två användare (repo-ägare
och forked-repo-ägare
) för gaffel- och dragmodellen:
git push
eller git pull
. Därefter klonar vi detta förråd till vår lokala maskin: $ git klon [ssh-url] [mappnamn] $ cd [mappnamn]
readme.md
fil: $ git checkout -b [ny funktion]
$ git lägg till. $ git commit -m "information läggas till i readme" $ git checkout mästare
git push [git-remote-alias] [filnamn]
: $ git filial * master readme $ git fjärrkontroll - från [email protected]: [forked-repo-owner-username] / [repo-name] .git (hämta) ursprung [email protected]: [forked-repo- användarnamn] / [repo-name] .git (push) $ git push origin readme
Om du är originalförvaringsinnehavaren finns det två sätt att slå samman en inkommande dragningsförfrågan:
Det finns olika förgreningsmodeller som används för versionering i mjukvaruutvecklingsteam. Här är två populära git-arbetsflödesmodeller: (1) Github-arbetsflöde som har en enkel förgreningsmodell och använder dragförfrågningar och (2) Gitflow som har en mer omfattande förgrening. Modellen som så småningom väljs kommer definitivt att variera beroende på team, projekt och situation.
Pull Requests är ett fantastiskt sätt att självständigt bidra till ett förråd genom att forking det.
I Github är centrum för all bugsökning spåren. Även om de huvudsakligen är buggspårning, är det också till hjälp att använda problem på följande sätt:
Låt oss utforska några av funktionerna i problem:
Fixes / Fixed eller Close / Closes / Closed # [issue-number]
stänger automatiskt problemet. $ git lägg till. $ git commit -m "korrigerad url. fixes # 2" $ git push origin master
# [Emissions nummer]
i sina meddelanden. Eftersom frågeställningarna är hyperlänka gör det här mycket enkelt att nämna relaterade problem under diskussionen.Det är uppenbart att vi kan tätt koppla vår arbetslista och uppdateringar till våra kodfördrag.
Det finns två verktyg som ger insikt i ett förråd - Grafer och nätverk. Github Grafer ger en inblick i samarbetarna och åtar sig bakom varje kodförteckning, medan Github Network tillhandahåller en visualisering av varje bidragsgivare och deras förpliktelser över alla forked repositories. Dessa analyser och grafer blir mycket kraftfulla, särskilt när man arbetar i team.
Grafer ger detaljerad analys som:
Github Network är ett kraftfullt verktyg som låter dig se varje bidragsgivares förpliktelser och hur de är relaterade till varandra. När vi tittar på visualiseraren i sin helhet ser vi varje förpliktelse på varje gren i varje förvar som hör till ett nätverk. Insiktsfull!
Även om Github-frågor har projektledningskapacitet med problem och milstolpar kan vissa lag föredra ett annat verktyg på grund av andra funktioner eller befintliga arbetsflöden. I det här avsnittet ser vi hur vi kan länka Github med två andra populära projekthanteringsverktyg - Trello och Pivotal Tracker. Med Github servicehakar kan vi automatisera uppdateringsuppgift med förpliktelser, problem och många andra aktiviteter. Denna automatisering hjälper inte bara till att spara tid, men ökar också noggrannheten i uppdateringar för alla mjukvaruutvecklingsgrupper.
Trello ger ett enkelt, visuellt sätt att hantera uppgifter. Med hjälp av Agile Software Development-metoder kan Trello-kort emulera en enkel virtuell Kanban-styrelse. Som ett exempel skapar vi automatiskt ett Trello-kort när en Pull-förfrågan görs med Github Service Hooks. Låt oss gå igenom stegen!
TECKEN
under installationsanvisningar # 1 med hyperlänken för autentisering.lista id
för varje Trello-kort. BOARDID
är en del av webbadressen när vi besöker styrelsen på https://trello.com/board/[BOARD-NAME]/[BOARDID]
. TECKEN
kan skapas med hyperlänken som ges under Installations Notes # 1. lista id
och den tecken
. Kontrollera Active, Test Hook och vi är alla inställda att få automatiska uppdateringar varje gång det finns en Pull Request. Pivotal Tracker är ett annat lättviktigt projekt för hanteringsverktyg där berättelsebaserad planering gör att laget enkelt kan samarbeta genom att omedelbart reagera på olika förändringar och framsteg i projektet. Baserat på lagets nuvarande framsteg kan det också skapa diagram för att analysera laghastigheten, uppbränningen av iserationen, släppa ned bränningen etc. I det här korta exemplet kommer vi automatiskt att leverera en historia genom att länka den till ett Github-engagemang!
git commit -m "meddelande [levererar #tracker_id]"
$ git lägg till. $ git commit -m "Github och Pivotal Tracker krokar implementeras [levererar # 43903595]" $ git push
Med dessa Trello och Pivotal Tracker-exempel är det klart att vi kan tätt koppla vår arbetslista och uppdateringar till våra kodfördrag. Det här är en enorm tidsbesparare när du arbetar i ett lag, och det ökar noggrannheten när du kopplar upp uppgifter till exakt förbinder. Den goda nyheten är att om du redan använder andra projekthanteringsverktyg som Asana, Basecamp och andra, kan du också skapa Service Hooks på ett liknande sätt. Om det inte finns några befintliga servicekrokar för ditt nuvarande projekthanteringsverktyg kan du till och med skapa en!
Kontinuerlig integration (CI) är en viktig del av alla mjukvaruutvecklingsprojekt som arbetar med team. CI säkerställer att när en utvecklare kontrollerar sin kod identifierar en automatisk byggnad (inklusive test) integrationsfel så fort som möjligt. Detta minskar integritetsfel och gör snabb iteration mycket effektivare. I det här exemplet kommer vi att se hur Travis CI kan användas med Github för CI för att upptäcka fel samt rekommendera att slå samman när det passerar alla tester.
Vi kommer att använda ett enkelt "hello-world" -projekt för node.js med grunt.js som byggverktyg för att installera ett Travis CI-projekt. Här är filerna i projektet:
hello.js
filen är nodprojektet. Här kommer vi avsiktligt att lämna ut en semikolon så att den inte kommer att passera grunt byggverktyget för linting: var http = kräver ('http'); http.createServer (funktion (req, res) res.writeHead (200, 'Content-Type': 'text / plain'); res.end ('Hello World in Node! \ n') // utan semikolon , detta kommer inte att passera linting). lyssna (1337, '127.0.0.1'); console.log ("Server som körs på http://127.0.0.1:1337/ ');
package.json
betecknar beroenden: "namn": "hej-lag", "beskrivning": "En demo för github och travis ci för team samarbete", "författare": "namn"," version ":" 0.0.1 "," devDependencies ": " grunt ":" ~ 0.3.17 "," skript ": " test ":" grunt travis --verbose "
gruntjs
byggverktyg har bara en uppgift (linting) bara för enkelhet: module.exports = funktion (grunt) grunt.initConfig (lint: files: ['hello.js']); grunt.registerTask ('default', 'lint'); grunt.registerTask ('travis', 'lint'); ;
.travis.yml
är en Travis-konfigurationsfil som gör att Travis kör våra test: språk: node_js node_js: - 0,8
git push
att utlösa den första Travis-byggnaden och om allt är okej, besök bara http://travis-ci.org/[username]/[repo-name]
för att se byggnadsstatus som passerar! Tidigare, utan något CI i processen för en dragförfrågan, gick stegen något som detta (1) skickat dragförfrågan (2) fusion (3) test för att se om det passerar / misslyckas. Med Travis CI ansluten till dragförfrågningarna kommer vi att kunna invertera steg 2 och 3, vilket ytterligare ökar snabbt beslutsfattande om huruvida det är bra att sammanfoga med Travis som ger oss statusen med varje dragförfrågan. Låt oss se hur man får det att hända.
Travis CI med Github är oerhört användbart för lag på grund av automatiserad byggnad och omedelbar anmälan. Det gör verkligen felkorrigeringscykeln mycket kortare. Om du använder Jenkins, ett annat populärt CI-verktyg, ja du kan även konfigurera Github servicehakar på samma sätt.
Med varje commit tillåter Github ett rent gränssnitt för allmänna kommentarer eller till och med specifika kommentarer på en kodlinje. Möjligheten att hämta kommentarer eller frågor på varje enskild kodlinje är mycket användbar för att göra linjeprocedurrecensioner. För att visa inline-kommentarerna, välj avkryssningsrutan högst uppe på varje commit.
Låt oss utforska några webbadressmönster som kan användas för att hjälpa oss med kodgranskning genom att snabbt ge oss skillnaderna mellan åtagandena:
https://github.com/[username]/[repo-name]/compare/[starting-SHA1]... [ending-SHA1]
. Du kan göra samma sak med gren eller taggar. ?w = 1
till jämförelseadresserna .diff
till jämför webbadresserna för att få git diff
information i vanlig text. Detta kan vara användbart för skriptändamål..lappa
till jämför webbadresserna för att få git diff
information formaterad för e-post patch inlägg.#linje
i slutet av webbadressen och gör hela bakgrundsfärgen så gul. Detta är snyggt för att peka ut den exakta linjen. Det accepterar också linjeregment genom att lägga till # Start-end
. Här är exempel på linjelänkning och linjeledningslänkning.I det här avsnittet kommer vi att undersöka två dokumentationsmetoder:
En Github Wiki kan skapas med varje förråd, och det kan vara mycket praktiskt att sätta både källkoden och dokumentationen under samma förråd. För att skapa Wiki, gå bara till Wiki-fliken på huvudhuvudet och du är inställd på att skapa sidor med information. Wiki själv har sin egen version, och data kan klonas in i vår lokala maskin för uppdateringar eller till och med offlineåtkomst.
En sak som jag tycker är väldigt användbar är att integrera Github Wiki i huvudkodsprojektet så att jag inte behöver behålla två separata gitprojekt. För att göra detta lägger jag till Wiki git repo som en submodul från huvudgrenen. Om du använder Travis CI eller något annat CI, se till att byggverktyget ignorerar wiki submodulen. För Travis CI-fil .travis.yml
, lägg till följande:
git: submodules: false
Lägg sedan till en git submodule wiki i huvudkodförvaret:
$ git submodule lägg till [email protected]: [användarnamn] / [repo-name] .wiki.git Kloning till "hello-team.wiki" ... fjärrkontroll: Räkna objekt: 6, gjort. fjärrkontroll: Komprimera objekt: 100% (3/3), klar. fjärrkontroll: Totalt 6 (delta 0), återanvänd 0 (delta 0) Mottagande objekt: 100% (6/6), gjort. $ git lägg till. $ git commit -m "lagt till wiki som submodule" $ git push origin master
Nu visas wikan som en submodul inom huvudkodsprojektet.
Hubot, i korthet, kan enormt lägga till mycket roligt för att dokumentera och anmäla gruppdiskussioner om viktiga förpliktelser.
Hubot är helt enkelt en chatt bot som kan hämta information eller meddela när den är ansluten till Github-förpliktelser, frågor eller aktiviteter. I ett lag som syftar till att minska mötena avsevärt eller helt och hållet eliminera dem, hjälper Hubot med ett chattgränssnitt mellan gruppmedlemmarna att dokumentera varje diskussion. Det främjar säkerligen flexibla arbetstider, eftersom ingen måste vara närvarande samtidigt som diskussioner kan äga rum. Varning: Hubot är fruktansvärt beroendeframkallande!
Med detta, låt oss börja med att konfigurera Hubot som hostas på Heroku och som en bot med campfirechattgränssnittet! För både Heroku och Campfire finns det gratis versioner att komma igång.
Kan inte få /
eftersom det inte finns något att få som standard.Hubot hjälp
. Det kommer att ge dig allt tillgängligt kommando för hubot. hubot skicka den
eller hubot karta mig CERN
. github-commits.coffee
inuti skript
mapp.package.json
fil med relevanta beroenden enligt instruktioner ovanpå varje hubot-skriptfil under kommentarer.git push heroku master
.[HUBOT_URL]: [PORT] / hubot / gh-begår rum = [ROOM_ID]?
Kassa andra Github-relaterade Hubot-skript, eller om du vill skriva en så finns det också en cool tutorial på det! Hubot, i korthet, kan enormt lägga till mycket roligt för att dokumentera och anmäla gruppdiskussioner om viktiga fördrag, frågor och aktiviteter som äger rum med våra Github-repositorier. Ge det ett försök!
Som en sista anteckning om att arbeta med team på Github, här är några produktivitetstips:
@användare
och användaren kommer bli informerad om kommentaren[flytta] + ?
för att komma åt Github-genvägar på en sida.De flesta av oss kommer att tänka på att använda Github endast för mjukvaruprojekt. Trots allt började Github för socialt "kodning". Men det finns några coola Github-arkiv som används för icke-kodande projekt, och de var lika grymma för samarbete och diskussion. Eftersom dessa projekt också är öppna källor och alla kan bidra, är det snabbt att fixa fel, lätt att rapportera fel och effektivt att samarbeta med likasinnade personer. Bara för skoj, här är några av dem:
Och undrar vad Github-laget tycker om det?
"Vi gräver roliga användningar av GitHub så här"
Så det var en uppgörelse av några samarbetsverktyg i Github. De flesta av dem fungerar som snabba analytiska verktyg, eller till och med automatisering som hjälper till att spara tid när du arbetar med två eller flera lagkamrater. Har du fler Github tips för lag? Låt oss dela nedan!