Articles

:Jak zastosować łatkę

Posted on

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *