Utan rätt hantering kan din Git-historik lätt bli rörig. Det är viktigt att skriva bra commit-meddelanden, men även innehållet i själva commitarna spelar roll. Här är några användbara riktlinjer för att förbättra kvaliteten.
Mads Jensen
Mads works as a consultant at Eficode in Denmark. He is passionate about automation and testing, and in general to get the most of the tools he uses. He occasionally contributes to open-source projects, in particular to the Django web framework. He likes riding his bike for both sport and transportation and enjoys watching movies.
Introduktion
Det är viktigt att ta hand om din commit-historik. När vi utbildar i Git hänvisar vi ofta till Chris Beams guide om hur du skriver commit-meddelanden. Men det är minst lika viktigt vad du faktiskt inkluderar i dina commits. Nedan följer några riktlinjer som kan göra commits lättare att läsa, förbättra spårbarheten för ändringar och förenkla granskningsprocessen genom att begränsa varje commit till de viktigaste ändringarna.
1. Inkludera endast en ändring
När du gör en commit bör den bara innehålla en ändring, och ändringen ska tydligt återspeglas i commit-meddelandet. Det gör en commits påverkan tydlig och minskar risken för bieffekter när commits återställs eller slås samman. Detta kallas ofta för att skapa en atomisk commit.
2. Hänvisa till ett ärendehanteringssystem
När du arbetar med ett ärende bör du begränsa dina ändringar till att bara lösa det ärendet. Kom också ihåg att ange ärende-ID:t i ditt commit-meddelande. Det gör det enklare att spåra ändringar tillbaka till det ursprungliga ärendet och minskar samtidigt risken för att en fix påverkar något orelaterat.
3. Separera tester som saknar sammanhang
När du committar ändringar lägger du sannolikt till tester för att verifiera dem. Som tumregel bör tester som kan passera utan de ändringar du gör committas separat. Det är alltid välkommet att öka testkodstäckningen, men att blanda regressionstester med ny kodtäckning går emot principen om atomiska Git-commits.
4. Undvik att blanda kod- och stiländringar
Stiländringar, som att rätta indrag och lägga till eller ta bort avslutande blanksteg, är bra men gör en commit svårare att granska eftersom du ändrar fler rader än nödvändigt. Här är några saker att tänka på:
När du städar upp genom att till exempel organisera om importer eller ta bort död kod, gör det i separata commits.
Om du har dokumentation i ditt repository minskar diffen i de ändrade styckena om du radbryter vid exempelvis 80 tecken.
Lägg till en linter i din CI-kontroll för att undvika framtida stiländringar.
Använd verktyg som hjälper dig att hålla en konsekvent stil. Black för Python kan till exempel markera stilöverträdelser.
Vissa editorer har egna uppfattningar om formatering och kan automatiskt göra stiländringar. Det kan vara ett problem när du arbetar i ett stort team där alla kanske inte använder samma editor. Överväg att använda EditorConfig, som låter dig skriva regler i en YAML-fil som talar om för editorn hur olika filtyper ska formateras. Inställningar för radbrytningar kan också hanteras av Git (se core.autocrlf), men EditorConfig är kraftfullare och mer uttrycksfullt. Ett annat alternativ är att ge riktlinjer för hur en IDE ska konfigureras för att följa kodstilen.
5. Minimera antalet rader som framtida commits behöver ändra.
I vissa språk kan du minimera bruset som framtida ändringar introducerar. I Python kan du använda avslutande kommatecken i dictionaries så att nästa commit inte behöver ändra två rader för att lägga till ett objekt. I Haskell kan du göra samma sak genom att lägga till ett kommatecken i början av raden.
I Python-exemplet nedan ändrade den nya posten bara en rad i stället för två.
Hjälpsamma Git-verktyg
Om de här riktlinjerna verkar krångliga att följa i praktiken behöver du inte oroa dig. Git erbjuder flera verktyg som hjälper dig att skapa rena, atomiska commits.
git add --patch eller git gui låter dig interaktivt välja vilka kodändringar som ska stageas
git commit --amend låter dig göra om din senaste commit om du har gjort ett misstag
git rebase -i låter dig skriva om din lokala historik om du vill städa upp flera commits
Slutsats
Kort sagt bör en Git commit vara en atomisk ändring som endast innehåller kod, tester och dokumentation för en enda ändring. Riktlinjerna ovan hjälper dig att skapa rena commits, hålla historiken prydlig och förenkla granskningsprocesserna. Dessutom blir de ursprungliga commitsen en utmärkt referenspunkt eller mall för framtida ändringar av befintliga funktioner. Det kan kräva lite disciplin i början, men resultatet är definitivt värt ansträngningen.
- CI/CD
Subscribe to our newsletter
Related blogs