Een Patch Maken en Toepassen

Bij Open bron projecten (zoals deze) heeft iedereen leesrechten voor het archief en kan iedereen een bijdrage leveren aan het project. Hoe worden die bijdrages behandeld? Als iedereen wijzigingen kan vastleggen, dan zal het project bijna altijd onstabiel zijn en zelfs in de meeste gevallen niet werken. Om dit te voorkomen wordt er gebruik gemaakt van patch bestanden die naar het ontwikkelteam gestuurd kunnen worden, die natuurlijk wel schrijfrechten heeft. Zij kunnen de patch dan controleren en in het archief inbrengen of de auteur laten weten dat deze afgewezen is.

Patch bestanden zijn Unified-Diff bestanden waarin de verschillen tussen jouw werkkopie en de basis revisie zijn opgenomen.

Maken van een Patchbestand

Eerst moet je natuurlijk je wijzigingen maken en testen. Vervolgens moet je op de bovenliggende map TortoiseSVNMaak Patch... selecteren in plaats van TortoiseSVNVastleggen...

Afbeelding 4.62. Het Maak Patch Venster

Het Maak Patch Venster

Nu kun je de bestanden selecteren die je in je patch wilt opnemen, net zoals je zou doen bij een normale vastlegging. Hiermee wordt dan een enkel bestand gemaakt met daarin een samenvatting van alle wijzigingen die je aan de geselecteerde bestanden hebt aangebracht sinds de laatste verversing van het archief.

Je kunt de kolommen in dit dialoogscherm configureren op dezelfde manier als die van het dialoogscherm Kijk of er updates zijn. Ga naar de paragraaf met de naam “Lokale en Server Status” voor meer informatie.

By clicking on the Options button you can specify how the patch is created. For example you can specify that changes in line endings or whitespaces are not included in the final patch file.

Je kunt verschillende patches aanmaken met wijzigingen aan verschillende bestandsgroepen. Als je een patch bestand aanmaakt, dan nog enkele wijzigingen aan dezelfde bestanden doorvoert en vervolgens weer een patch bestand aanmaakt, dan zal in het tweede patch bestand beide sets met wijzigingen te zien zijn.

Sla het bestand op met een naam naar keuze. Patch bestanden kunnen elke extensie hebben die je leuk vindt, maar standaard wordt de extensie .patch of .diff gebruikt. Nu ben je klaar om je patch bestand op te sturen.

Tip

Do not save the patch file with a .txt extension if you intend to send it via email to someone else. Plain text files are often mangled with by the email software and it often happens that whitespaces and newline chars are automatically converted and compressed. If that happens, the patch won't apply smoothly. So use .patch or .diff as the extension when you save the patch file.

Je kunt je patch ook op het klembord opslaan in plaats van in een bestand. Dit is handig als je de patch bijvoorbeeld in een mail wilt plakken zodat iemand anders hem kan controleren. Je kunt deze methode ook gebruiken als je twee PC's gebruikt en je de wijzigingen van de ene naar de andere PC wilt verplaatsen.

If you prefer, you can create a patch file from within the Commit or Check for Modifications dialogs. Just select the files and use the context menu item to create a patch from those files. If you want to see the Options dialog you have to hold shift when you right click.

Een Patchbestand Toepassen

Patch bestanden worden toegepast op je werkkopie. Dit moet gedaan worden vanaf hetzelfde map-niveau als waarop de patch gemaakt is. Als je niet zeker weet op welk niveau dat was, kijk dan naar de eerste regel van het patch bestand. Als bijvoorbeeld het eerste bestand waaraan gewerkt is doc/source/english/chapter1.xml is en de eerste regel in het patch bestand is Index: english/chapter1.xml, dan moet je de patch toepassen op de map doc/source/. Als je per ongeluk het verkeerde map-niveau kiest, dan zal TortoiseSVN je hiervan op de hoogte stellen en het juiste niveau voorstellen. Dit werkt alleen als je in de juiste werkkopie aan het werken bent.

Als je een patch bestand wilt toepassen op je werkkopie, dan heb je op zijn minst lees-rechten nodig bij het archief. De reden hiervoor is dat het samenvoegprogramma de revisie moet kunnen traceren waarop de wijzigingen door de ontwikkelaar zijn gemaakt.

Klik in het context menu van die folder op TortoiseSVNPas Patch toe.... Er wordt dan een nieuw scherm geopend waarin je het patch bestand, die je wilt toepassen, kunt selecteren. Standaard zullen alleen .patch of .diff bestanden weergegeven worden, maar je kunt ook Alle bestanden laten zien. Als je een patch op het klembord hebt staan, dan kun je de knop Openen vanaf klembord... klikken. Merk op dat deze optie alleen weergegeven wordt als je de patch op het klembord hebt gezet met TortoiseSVNMaak Patch.... De knop zal niet getoond worden als je een patch vanuit een ander programma naar het klembord hebt gekopieerd.

Als jouw patch bestand de extensie .patch of .diff heeft, kun je deze ook direct toepassen als je met rechts op het bestand klikt en TortoiseSVNPas Patch toe... selecteert.

Dit zijn twee verschillende manieren waarmee je hetzelfde bereikt. Met de eerste methode selecteer je de werkkopie en blader je naar het patch bestand. Met de tweede selecteer je het patch bestand en blader je naar de werkkopie.

Als je eenmaal het patch bestand en de locatie van de werkkopie hebt geselecteerd, zal TortoiseMerge de wijzigingen van het patch bestand met je werkkopie samenvoegen. In een klein scherm zullen de gewijzigde bestanden weergegeven worden. Dubbelklik op elk bestand om de wijzigingen van de samenvoeging te bekijken en deze op te slaan.

De patch van de andere ontwikkelaar is nu toegepast op jouw werkkopie. Je moet nu de wijzigingen vastleggen in het archief, zodat iedereen de wijzigingen kan ophalen.