Squash merge kent z'n nut, absoluut. Het hebben van een lineaire geschiedenis an sich moet alleen geen streven zijn.Woy schreef op vrijdag 7 april 2023 @ 16:12:
[...]
Oneens, squash merge is bij mij echt favoriet, maar je moet wel weten wanneer het wel en niet de voorkeur heeft. Voor kortlopende branches zou ik altijd squash merge doen, want wat heb je nog voor voordeel bij de historie van die branch. Je moet vooral zorgen dat je ook vaak genoeg merged, dan zijn de squash commits juist fijne eenheden die je ook makkelijk weer terug kunt draaien, of nog naar een release branch kunt cherry picken. Als je gebruik maakt van release branches en je wilt een hotfix terugmergen naar master dan moet je natuurlijk weer geen squash merge doen.
Een feature/bugfix van een enkele commit: prima.
Waar ik het squashen op heb zien stuklopen, en dat zijn ook zeker procedurele issues:
• Bij het niet verwijderen van een branch: onduidelijk of een feature-branch nou wel of niet is gemerged.
• Bij refactor-branch die eerst wordt gesquashmerged en daarop voortborduren met een feature-branch: conflicten bij het mergen van die tweede.
• Geen duidelijke versiegeschiedenis (blame geeft voor een hele functie/klasse: "Merge feature X").
Dan gebruik je een interactive rebase om je commits te sorteren/squashen/fixuppen/editen/droppen/hernoemen.Lethalis schreef op vrijdag 7 april 2023 @ 16:19:
[...]
Hoe gaan jullie dan om met de hoeveelheid commits die iedereen produceert?
Als ik aan een feature werk, kan dat zomaar tot 20 commits leiden voordat ik het idee heb dat de feature gereleased mag worden. Soms probeer ik het nog een beetje te beperken door commits gedurende de dag te amenden.
Ik commit en push ook weleens aan het einde van de dag simpelweg zodat er een back-up van wordt gemaakt (gezien van de server een back-up wordt gemaakt, maar van de machine waarop ik werk niet per se... sowieso kan dat ook mijn privé laptop zijn die ik voor van alles en nogwat gebruik).
Het is dus eigenlijk een nietszeggende commit. Het hoeft niet eens te builden (in mijn eigen feature branch).
Overigens heb ik daarnet nog een merge gedaan zonder commit (met Git Extensions door daar "squash commits" aan te vinken) en die vervolgens als 1 commit naar de main gecommit en gepusht. Dat ging prima, maar jij bent het hiermee dus niet eens?
Ik wil de commit history van de main branch toch graag netter houden dan van de feature branches (die zoals @Woy aangeeft vaak kortlopend zullen zijn).
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...