Deze pagina schetst een workflow voor het downloaden en toepassen van patches op een lokale werkruimte, gebaseerd op lokale “topic branches”.
Note: Je kunt ook de drupalorg-cli tool gebruiken om een issue branch te maken en de patch toe te passen.
Bereid de lokale repository voor
- Volg de stappen over het klonen van een Drupal git repository om een lokale kopie van de repository te maken of update je bestaande lokale kopie naar de laatste versie.
- Maak een lokale “onderwerp branch” aan voor het issue waar je aan werkt.
git checkout -b - # e.g. 123456-some-bug
Verkrijg een patch-bestand en pas het toe
Download het patch-bestand van het issue, en pas de codewijzigingen in de patch toe in je werkdirectory (de volgende commando’s gaan ervan uit dat je in een terminalvenster zit in de hoofddirectory van het project). Er zijn verschillende alternatieven:
Ook zijn er veel command-line argumenten voor het git apply
commando. Een bruikbare is -v
, die een meer uitgebreide uitvoer geeft:git apply -v patchname.patch
Zie de git apply documentatie voor meer informatie.
Als de patch niet toepast, en je krijgt misschien een “Skipped patch …” bericht, probeer dan het patch
commando (zie “Voetnoten” hieronder voor meer) of herwikkel de patch:
patch -p1 < .patch
herwikkel de patch, door de -R
parameter toe te voegen:
patch -R -p1 < .patch
Commit de patch
Als je van plan bent om aan het verbeteren van de patch te werken, is de volgende stap het committen van de originele patch naar je lokale repository branch:
git add FILESAFFECTEDgit commit -m "Patch COMMENTNUMBER by OTHERPERSON”
Als je klaar bent: Code opruimen
Nadat je klaar bent met het testen van de patch, wil je je repository terugbrengen naar een “schone” staat:
- Gebruik dit commando om de patch terug te draaien:
git apply -R path/file.patch
- Gebruik dit commando om de feature branch die je gemaakt hebt te verwijderen:
git branch -D
Composer
Als je de code voor een Drupal site onderhoudt met Composer, en een van de projecten moet een patch hebben:
* Om patches toe te passen met composer moet je het composer-patches project installeren:
composer require cweagans/composer-patches:~1.0 --update-with-dependencies
Voetnoten
- Je kunt patches ook toepassen met
git am
git am
is ook handig als de patches zijn gemaakt doorgit format-patch
. - Het
patch
commando is nuttig voor patches die niet van toepassing zijn, omdat het het grootste deel van de patch zal toepassen en je dan misschien in staat bent om naar het.rej
bestand te kijken dat het aanmaakt voor de afgekeurde “brokken” van de patch, en ze handmatig te repareren. Als het te gecompliceerd is, probeer dan de patch opnieuw te rollen. - Omdat de patch bestanden zelf nooit aan het project toegevoegd mogen worden, wil je Git misschien vertellen ze te negeren door de regel
*.patch
toe te voegen aan het.git/info/exclude
bestand in het project, of aan een globaal ~/.gitignore bestand. Als alternatief, kun je ze naar een andere locatie downloaden. - Als je fouten krijgt als je een patch probeert toe te passen, controleer dan het volgende:
- De patch kan de verkeerde eind-van-de-regel codering hebben. Onze standaard is om Unix-stijl end-of-line codering te gebruiken (zie Patch Richtlijnen).
- De patch komt misschien niet overeen met de laatste ontwikkelversie. Zie Patches herverrollen voor hoe je latere wijzigingen kunt samenvoegen.
- Als de automatische testen de patch ook als niet van toepassing hebben gemarkeerd op het moment dat hij werd gemaakt, kan de ontwikkelaar die de patch heeft gemaakt een fout hebben gemaakt (zoals het niet gebruiken van Git of het niet gebruiken van de laatste ontwikkelversie).