Wprowadzenie
Ta strona wyjaśnia jak możesz zastosować plik łatki. Patch jest standardowym formatem, i istnieje wiele opcji jak go zastosować. Wybierz tę, która jest dla Ciebie najłatwiejsza.
Prawdopodobnie najbardziej krytycznym jest użycie flagi -p, która mówi patchowi o relacji pomiędzy katalogiem, w którym znajduje się plik patch, a plikami, które będą łatane. Zobacz referencje poniżej po szczegóły i NIE zakładaj niczego.
Zastosuj łatkę w Windows używając gnuwin32
- Ściągnij i rozpakuj patch dla windows z sourceforge Umieściłem patch.exe binarny w C:\bin (UWAGA: Rzeczy są o wiele łatwiejsze, jeśli umieścisz go w katalogu, który nie ma białych spacji.)
- Ściągnij i rozpakuj Moodle gdzieś, np: C:™moodle
- Pobierz plik patcha i umieść go w tym samym katalogu, w którym umieściłeś Moodle (C:™moodlepassword-policy-17.diff)
- Otwórz plik patcha w Wordpadzie, i kliknij 'Plik' >> 'Zapisz jako…', wybierz inną nazwę pliku np. (’mynewpatch.diff') i „Zapisz jako typ” >> 'Dokument tekstowy – format MS-DOS'
- Otwórz okno tekstowe polecenia, i wpisz:
cd \moodle c:\bin\patch.exe --dry-run -p1 < mynewpatch.diff
Liczba po opcji '-p' może się różnić w zależności od pliku patcha, ponieważ zależy od sposobu, w jaki plik patcha został wygenerowany. Spójrz na stronę manuala narzędzia 'patch' aby zobaczyć jak działa opcja '-p'. Możesz także spojrzeć na ten tutorial diff i patch.
- Powinieneś otrzymać wynik podobny do tego (nazwy i ilość łatanych plików różnią się w zależności od łatki):
patching file admin/settings/security.php patching file lang/en_utf8/admin.php patching file lib/moodlelib.php patching file login/change_password.php patching file login/signup.php patching file user/edit.php Hunk #1 succeeded at 430 (offset 2 lines).
Na tym etapie łatka nie została jeszcze zastosowana. Przeprowadziliśmy jedynie symulację aplikacji (z opcją '–dry-run'), aby sprawdzić, czy znajdziemy w niej jakieś problemy. Zanim wyjaśnimy jak właściwie zaaplikować łatkę, porozmawiamy o tym co może być nie tak i jak sobie z tym poradzić.
Potencjalne problemy i jak sobie z nimi radzić
Potencjalne problemy
Jeśli wszystko pójdzie dobrze, łatka zostanie zaaplikowana bez problemu i życie powinno być dobre! Ale czasami łatka nie zostanie zaaplikowana w 100% czysto z powodu niedopasowania wersji pomiędzy oryginalnymi plikami użytymi do stworzenia łatki a twoimi lokalnymi plikami. W tym przypadku, polecenie 'patch' spróbuje zastosować tak wiele zmian, jak to tylko możliwe, i wyemituje pewną diagnostykę opisującą napotkane problemy.
- Jeżeli otrzymasz jakiekolwiek komunikaty typu 'Hunk #n succeeded…', oznacza to, że łatka została zastosowana poprawnie, choć w innych numerach linii niż w oryginalnym pliku. Gdybyśmy faktycznie zastosowali poprawkę, polecenie 'patch' utworzyłoby dodatkowy plik dla każdego z plików, gdzie hunk został zastosowany na innym offsecie, który zostałby nazwany tak jak oryginalny plik z dodatkowym rozszerzeniem .orig.
- Jeśli otrzymasz jakiekolwiek komunikaty 'Hunk #n failed…', poprawka nie zostałaby zastosowana poprawnie. W tym przypadku polecenie 'patch' utworzyłoby dwa dodatkowe pliki dla każdego z plików, w których hunk nie został poprawnie zastosowany, nazwane:
- original-file-name.orig Byłby to oryginalny plik przed zastosowaniem poprawki, tak jak powyżej.
- original-file-name.rej Ten plik zawierałby hunki, które nie mogły być zastosowane poprawnie, więc mógłbyś je sprawdzić.
Radzenie sobie z potencjalnymi problemami
Radzenie sobie z pierwszym problemem (przesunięte hunty) jest banalnie proste: musimy po prostu usunąć pliki .orig po zaaplikowaniu łatki.
W drugim przypadku (nieudane hunty), jeśli nie wiesz jak ręcznie naprawić nieudane hunty, nie powinieneś aplikować łatki, ponieważ uszkodziłoby to instalację Moodle. Jeśli chcesz zastosować poprawkę i spróbować naprawić nieudane hunty ręcznie, powinieneś użyć opcji '-b'. Opcja ta automatycznie tworzy kopię zapasową każdego pliku, którego dotyczy poprawka, z rozszerzeniem .orig. Pozwoliłoby to na powrót do stanu oryginalnych plików poprzez proste nadpisanie zmodyfikowanych plików ich kopiami .orig.
Czasami może się zdarzyć, że będzie duża różnica w numerach linii od czasu wygenerowania łatki i łatka nie zostanie zastosowana. Możesz powiedzieć patchowi, aby zezwolił na większe różnice w numerach linii, używając opcji fuzz '-F', aby zwiększyć liczbę linii, które mogą się różnić. Na przykład patch -F 100 pozwoli na 100 linii różnicy.
Właściwe zastosowanie poprawki
Gdy wiemy już co może pójść źle i jak sobie z tym poradzić, zobaczmy jak zastosować poprawkę. Musimy tylko usunąć '–dry-run':
cd \moodle c:\bin\patch.exe -p1 < mynewpatch.diff
i opcjonalnie użyć opcji '-b' jeśli zamierzamy spróbować naprawić niedziałające hunksy ręcznie:
cd \moodle c:\bin\patch.exe -b -p1 < mynewpatch.diff
Zastosuj poprawkę w Windows używając NetBeans
NetBeans posiada zintegrowane narzędzia do kontroli wersji i współpracy deweloperów, które zawierają potężne graficzne narzędzia Diff i łatwe stosowanie (i tworzenie) poprawek. Możesz zastosować dowolną poprawkę do pliku z menu kontekstowego pliku.
Zastosuj poprawkę w Linuksie używając „patch”
użyj czegoś takiego jak:patch -p1 < patchfile.diffsee here for more details on using Patch in Linux
See Also
- Patch
- Development:How_to_create_a_patch
- Drupal – jak zastosować łatkę w systemie Windows
- Drupal – jak zastosować łatkę w Mac OS X
- Post w moodle – jak zastosować łatkę w gnuwin32