NAZWA¶
patch - dołącz plik różnicowy do oryginału
SKŁADNIA¶
patch [
opcje] [
plikoryginalny [
plikzłatą]]
 
lecz zazwyczaj po prostu
 
patch -pnum <plikzłatą
OPIS¶
 Uwaga! To tłumaczenie może być nieaktualne!
Patch pobiera plik z łatą, który może zawierać
  jedną z czterech postaci różnic, dawanych przez program
  
diff(1). Jeśli 
plikzłatą jest pominięty lub
  jest myślnikiem, to łata będzie czytana ze standardowego
  wejścia. Następnie dołącza te różnice do pliku
  oryginalnego, dając w efekcie wersję załataną.
  Domyślnie, wersja załatana jest podstawiana na miejsce
  oryginału. Może też tworzyć kopie zapasowe zmienianego
  oryginału, zob. opcja 
-b lub 
--backup. Kopia oryginału
  jest zapisywana obok, z rozszerzeniem ".orig" (w systemach nie
  obsługujących długich nazw plików "~").
  Postać nazwy kopii zapasowej można kontrolować przez opcje
  
-b ( 
--suffix), 
-B (
--prefix), lub 
-V
  (
--version-control).
Nazwy plików do załatania są zwykle brane z pliku łaty, ale
  jeśli łatany będzie tylko jeden plik, to można podać
  go w wierszu poleceń jako 
plikoryginalny.
Podczas uruchamiania, patch próbuje sam określić rodzaj listingu
  różnicowego. Można to zrobić też ręcznie,
  opcjami 
-c (
--context), 
-e (
--ed), 
-n
  (
--normal) lub 
-u (
--unified). Różnice typu
  context (starego rodzaju, nowego rodzaju i unifikowane (unified)) są
  nanoszone na oryginał wprost przez program 
patch, podczas gdy
  różnice 
ed są po prostu przesyłane poprzez potok do
  edytora 
ed(1).
Patch próbuje automatycznie pominąć wszelkie śmieci
  znajdujące się przed fragmentem różnicowym, dokonać
  załatania i znowu pominąć śmieci, znajdujące się
  za różnicą. Tak więc przekazanie 
patchowi,
  różnicy znajdującej się np. w wiadomości pocztowej,
  powinno działać. Jeśli całość różnic
  jest wcięta o ten sam rozmiar, lub różnice kontekstowe
  zawierają linie zakończone parami CRLF, lub są raz
  bądź wielokrotnie zakapsułkowane przez poprzedzenie
  ciągiem " 
- " linii zaczynających się od
  " 
-", jak podano w RFC 934, to jest to poprawnie
  uwzględniane w łataniu.
W przypadku różnic typu context i w mniejszym stopniu różnic
  typu normal, 
patch potrafi wykryć, kiedy numery linii wymienione w
  łacie są nieprawidłowe i spróbuje znaleźć
  właściwe miejsce. Jako pierwszy strzał, używany jest numer
  linii użyty w badanym kawałku plus lub minus offset użyty do
  zaaplikowania poprzedniego kawałka. Jeśli nie jest to
  właściwe miejsce, nastąpi skanowanie w przód i wstecz w
  poszukiwaniu zestawu linii odpowiadającego podanemu kontekstowi. Na
  początek, szukane jest miejsce, do którego pasują wszystkie
  linie fragmentu. Jeśli nie uda się go znaleźć i mamy do
  czynienia z różnicami kontekstowymi a współczynnik
  `maximum fuzz factor' jest ustawiony na 1 lub więcej, to skanowanie jest
  powtarzane, lecz teraz ignoruje pierwszą i ostatnią linię
  kontekstu. Jeśli i to zawiedzie, a wyżej wymieniony
  współczynnik jest ustawiony na 2 lub więcej, to ignorowane
  będą dwie pierwsze i dwie ostatnie linie. (Domyślnym
  współczynnikiem jest 2.) Jeśli 
patch nie może
  znaleźć właściwego miejsca do zaaplikowania fragmentu
  różnicy, to wstawi go do pliku odrzuceń, który normalnie
  ma nazwę pliku wyjściowego, z dopisaną końcówką
  
.rej (lub 
# jeśli 
.rej utworzyłoby zbyt
  długą nazwę pliku. Jeśli dodanie nawet pojedynczego znaku
  
# powoduje, że nazwa pliku staje się za długa, to
  
# zastępuje ostatni znak nazwy). (Zauważ, że odrzucony
  fragment zostanie wyprodukowany jako różnica typu context,
  niezależnie od postaci łaty wejściowej. Jeśli była
  ona typu normal, wiele kontekstów będzie po prostu pustych.) Numery
  linii w pliku odrzuceń mogą być inne niż w łacie:
  odzwierciedlają one przypuszczalną pozycję w nowym pliku, do
  której prawdopodobnie należą odrzucone fragmenty.
Gdy obróbka fragmentu jest zakończona, zostaniesz poinformowany, czy
  zakończyła się sukcesem, czy też się nie
  powiodła i w której linii (nowego pliku) wg 
patcha ten
  fragment powinien się znaleźć. Jeśli jest ona inna od
  numeru linii, podanego w pliku różnicowym, zostaniesz poinformowany
  o offsecie. Pojedynczy duży offset 
może być
  wskazówką, że fragment zainstalowano w złym miejscu.
  Jeśli do porównania użyto współczynnika `fuzz
  factor', to też będziesz o tym poinformowany, gdyż może to
  być podejrzane. Jeśli użyłeś opcji 
--verbose,
  zostaniesz też powiadomiony o fragmentach dopasowanych dokładnie.
Jeśli w linii komend nie podano żadnego pliku oryginalnego,
  
patch spróbuje go odgadnąć ze śmieci, zawartych w
  pliku z różnicą, stosując poniższe zasady.
Najpierw buduje uporządkowaną listę kandydatur według takich
  reguł:
  -  •
 
  - Jeśli nagłówek jest nagłówkiem
      różnicy typu context, nazwa starego i nowego pliku odczytywana
      jest z niego. Nazwa pliku jest ignorowana jeśli ma za mało
      ukośników dla opcji -pnum lub
      --strip=num. Nazwa /dev/null jest również
      ignorowana.
 
  -  •
 
  - Jeśli w początkowych śmieciach jest linia
      Index: i albo brakuje obu nazw, starego i nowego pliku, albo
      patch działa zgodnie z POSIX, to pobierana jest nazwa z tej
      linii.
 
  -  •
 
  - W poniższych regułach zakłada się,
      że rozważane nazwy plików są uporządkowane
      (stary, nowy, indeks), niezależnie od kolejności, w jakiej
      występują w nagłówku.
 
Następnie 
patch wybiera nazwę pliki z listy potencjalnych nazw:
  -  •
 
  - Jeśli któryś z wymienionych plików
      istnieje, to wybierana jest pierwsza nazwa zgodna z POSIX, w przeciwnym
      razie najlepsza.
 
  -  •
 
  - Jeżeli patch nie ignoruje RCS, ClearCase i SCCS
      (zob. opcję -g num lub
      --get=num), a tak wskazany plik istnieje, ale
      znaleziono główną (master) pozycję RCS, ClearCase lub
      SCCS, wybrany zostanie pierwszy plik wymieniony w tej pozycji.
 
  -  •
 
  - Jeśli nie istnieje plik o danej nazwie, nie znaleziono
      głównej pozycji RCS, ClearCase lub SCCS, podano jakieś
      nazwy, patch nie stosuje się do POSIX, zaś łata
      wymaga utworzenia pliku, to wybierana jest najlepsza nazwa wymagająca
      stworzenia najmniejszej liczby katalogów.
 
  -  •
 
  - Jeśli powyższy algorytm heurystyczny nie da
      żadnej nazwy pliku, to zostaniesz o nią zapytany. Poza tym,
      jeśli w prowadzących śmieciach znajduje linia "Prereq:
      ", patch spróbuje pobrać pierwsze słowo z tej
      linii (zwykle numer wersji) i sprawdzić czy istnieje ono w pliku
      wejściowym. Jeśli nie, patch zapyta o potwierdzenie przed
      kontynuacją.
 
Efektem tego wszystkiego jest to, że powinieneś być w stanie
  podać w interfejsie newsów następujące:
 
	| patch -d /usr/src/local/blurfl
 
i tym samym załatać katalog blurfl bezpośrednio z artykułu,
  który zawiera łatę.
Jeśli plik z łatą składa się z więcej niż
  jednej łaty, program 
patch spróbuje zaaplikować je tak,
  jakby przyszły w osobnych plikach z łatami. Znaczy to między
  innymi tyle, że nazwa łatanego pliku jest określana dla
  każdego listingu różnic z osobna i że śmieci,
  znajdujące się przed każdym z listingów będą
  analizowane jak opisano wyżej. Do kolejnych łat można
  przekazywać opcje (i inną oryginalną nazwę pliku),
  oddzielając odpowiadające listy argumentów znakiem '+'. (Lista
  argumentów kolejnej łaty nie musi jednak podawać nowej nazwy
  pliku z łatą.)
OPCJE¶
  - -b, --backup
 
  - Tworzy pliki kopii zapasowych. To znaczy, przy łataniu
      pliku, zamiast usuwania oryginału tworzy jego kopię lub zmienia
      nazwę. Jako kopia zapasowa pliku, który nie istniał
      tworzony jest pusty plik, zastępczo reprezentujący
      nieistniejący oryginał. Sposób ustalania nazw plików
      kopii zapasowych opisano przy opcjach -V lub
      --version-control.
 
  - --backup-if-mismatch
 
  - Tworzy kopię zapasową jeśli łata nie
      pasuje dokładnie do pliku a nie zażądano w inny sposób
      tworzenia kopii. Jest to zachowanie domyślne, chyba że
      patch działa zgodnie z POSIX.
 
  - --no-backup-if-mismatch
 
  - Nie tworzy kopii zapasowej jeśli łata nie pasuje
      dokładnie do pliku i jeśli nie zażądano w inny
      sposób tworzenia kopii. Jest to zachowanie domyślne gdy
      patch działa zgodnie z POSIX.
 
  - -B pref, --prefix=pref
 
  - Poprzedza przedrostkiem pref nazwę pliku
      podczas tworzenia nazwy zwykłej kopii. Na przykład, przy
      -B /junk/ nazwą zwykłej kopii dla
      src/patch/util.c jest /junk/src/patch/util.c.
 
  - --binary
 
  - Za wyjątkiem standardowego wyjścia i
      /dev/tty, wszystkie pliki czyta i zapisuje w trybie binarnym. Opcja
      ta nie ma żadnych skutków na systemach zgodnych z POSIX. Na
      systemach podobnych do DOS, gdzie ma znaczenie, łata powinna być
      tworzona przy użyciu diff -a --binary.
 
  - -c, --context
 
  - Wymusza interpretację pliku z łatą jako
      różnicy typu context.
 
  - -d kat,
    --directory=katalog
 
  - Powoduje interpretację katalogu jako katalogu,
      który ma być bieżącym i przechodzi do niego przed
      zrobieniem czegokolwiek innego.
 
  - -D symb, --ifdef=symb
 
  - Powoduje używanie konstrukcji
      "#ifdef...#endif" do oznaczania zmian. symb będzie
      symbolem różnicującym.
 
  - --dry-run
 
  - Wypisuje wynik łatania bez faktycznego zmieniania
      plików.
 
  - -e, --ed
 
  - Wymusza interpretację pliku z łatą jako
      skryptu ed.
 
  - -E, --remove-empty-files
 
  - Powoduje, że usuwane są pliki wyjściowe,
      które po zaaplikowaniu łat są puste. Zwykle użycie tej
      opcji nie jest konieczne, gdyż program potrafi zbadać znaczniki
      czasu w nagłówku i stwierdzić, czy po naniesieniu łat
      plik powinien istnieć. Jeśli jednak wejście nie jest
      plikiem różnic kontekstowych lub gdy patch działa
      zgodnie z POSIX, puste załatane pliki nie będą usuwane,
      dopóki nie zostanie podana ta opcja. Podczas usuwania pliku
      patch usiłuje usunąć również jego puste
      katalogi nadrzędne.
 
  - -f, --force
 
  - Wymusza założenie, że użytkownik
      dokładnie wie co robi i powoduje niezadawanie pytań. Pomija
      łaty, z których nagłówków nie wynika, jaki plik
      powinien być załatany; pliki są łatane nawet
      jeśli mają złą wersję dla linii Prereq:;
      zakłada, że łaty nie są odwrócone, nawet
      jeśli tak wyglądają. Opcja ta nie eliminuje komentarzy; do
      tego użyj -s.
 
  - -F num, --fuzz=num
 
  - Ustawia współczynnik `maximum fuzz factor'. Opcja
      ta tyczy się tylko różnic typu context i powoduje, że
      patch ignoruje maksymalnie tyle linii, zaglądając w
      miejsca, gdzie ma zainstalować fragment łaty. Zauważ,
      że duży współczynnik zwiększa
      prawdopodobieństwo nieprawidłowego naniesienia łaty.
      Domyślną wartością jest 2 i nie może być
      ustawiona na więcej niż liczba linii kontekstu w
      różnicy, czyli zwykle 3.
 
  - -g num, --get=num
 
  - Steruje akcjami programu patch gdy oryginalny plik
      jest pod kontrolą RCS lub SCCS, a nie istnieje lub jest przeznaczony
      tylko dla odczytu. Także wtedy, gdy jest pod kontrolą ClearCase,
      a nie istnieje. Jeżeli num jest dodatnie, to pobiera (get) lub
      aktualizuje (check out) plik z danego systemu kontroli wersji (revision
      control system). Jeśli wynosi zero, patch ignoruje system
      kontroli wersji i nie pobiera pliku; jeśli num jest ujemne, to
      pyta użytkownika czy pobrać plik. Domyślna
      wartość tej opcji określana jest wartością
      zmiennej środowiska PATCH_GET jeśli takowa istnieje;
      jeśli nie, to wartość domyślna jest zerem, gdy
      patch działa zgodnie z POSIX, w przeciwnym razie jest
    ujemna.
 
  - -i plikłaty,
    --input=plikłaty
 
  - Odczytuje łatę z plikułaty.
      Jeśli plikiemłaty jest -, to ze standardowego
      wejścia, domyślnie.
 
  - -l, --ignore-whitespace
 
  - Wykonuje swobodniejsze porównywanie wzorców, w
      przypadku, gdy w pliku pozamieniano tabulacje i spacje. Dowolna sekwencja
      białych spacji (znaków tabulacji lub spacji) w linii pliku
      łaty będzie odpowiadać dowolnej sekwencji białych
      spacji oryginalnego pliku. Ciągi białych spacji
      występujące na końcach linii są ignorowane. Normalne
      znaki muszą wciąż dokładnie pasować. Każda
      linia kontekstu nadal musi pasować do linii oryginalnego pliku.
 
  - -n, --normal
 
  - Powoduje, że plik z łatą jest interpretowany
      jak różnica typu `normal'.
 
  - -N, --forward
 
  - powoduje ignorowanie łat, które wydają
      się być odwrócone lub już zaaplikowane. Zobacz
      też -R.
 
  - -o plik-wyj,
    --output=plik-wyj
 
  - Zamiast łatania bezpośrednio oryginalnych
      plików, wynik jest kierowany do plik-wyj.
 
  - -pnum, --strip=num
 
  - Z każdej nazwy pliku znalezionej w pliku łaty
      ujmuje najmniejszy przedrostek zawierający num
      początkowych ukośników. Ciąg kilku
      sąsiadujących ukośników liczy się za jeden
      ukośnik. Opcję przewidziano na wypadek gdybyś
      przechowywał pliki w innym katalogu niż osoba, która
      przesłała łatę. Na przykład,
      załóżmy, że nazwa pliku w łacie miała
      wartość
    
 
    	/u/howard/src/blurfl/blurfl.c
     
    ustawienie -p lub -p0 nie zmienia jej, -p1 daje
     
    	u/howard/src/blurfl/blurfl.c
     
    bez początkowego ukośnika, a -p4 daje
     
    	blurfl/blurfl.c
     
    natomiast niepodanie -p w ogóle, daje po prostu blurfl.c.
      Wynik tej operacji jest poszukiwany albo w katalogu bieżącym,
      albo w katalogu podanym przez opcję -d. 
  - --posix
 
  - Postępuje bardziej zgodnie ze standardem POSIX:
 
  -  •
 
  - Dociekając nazw plików z nagłówków
      różnic z listy (stary, nowy, indeks) bierze pierwszy
      istniejący plik.
 
  -  •
 
  - Nie usuwa plików, które po załataniu
      stają się puste.
 
  -  •
 
  - Nie pyta o pobieranie plików z RCS, ClearCase czy
      SCCS.
 
  -  •
 
  - Wymaga, by w wierszu poleceń wszystkie opcje
      występowały przed nazwami plików.
 
  -  •
 
  - Nie tworzy kopii zapasowych przy wystąpieniu
      niezgodności.
 
 
  - --quoting-style=wyraz
 
  - Używa stylu wyraz do cytowania nazw
      wyjściowych. Wyraz powinien być jednym z
    poniższych:
 
  - literal
 
  - Wypisuje nazwy bez zmian.
 
  - shell
 
  - Cytuje nazwy dla powłoki jeśli zawierają
      metaznaki powłoki lub spowodowałyby dwuznaczność
      wyniku.
 
  - shell-always
 
  - Cytuje nazwy dla powłoki, nawet wtedy, gdy normalnie
      nie wymagałyby cytowania.
 
  - c
 
  - Cytuje nazwy jak dla łańcuchów w języku
      C.
 
  - escape
 
  - Cytuje jak z c, z wyjątkiem tego, iż
      pomija otaczające znaki cudzysłowu.
 
Wartość domyślną opcji 
--quoting-style można
  określić za pomocą zmiennej środowiska
  
QUOTING_STYLE. Jeśli nie jest ona ustawiona, to
  wartością domyślną jest 
shell.
 
  - -r plik-odrz,
    --reject-file=plik-odrz
 
  - Odrzucone poprawki są umieszczane w zadanym
      pliku-odrz, a nie w domyślnym pliku odrzuceń
    .rej.
 
  - -R, --reverse
 
  - Mówi, że łata ta została utworzona przy
      zamienionych miejscami starych i nowych plikach [tłum. zamiast `
      diff -c stary nowy' użyto pomyłkowo ` diff -c nowy
      stary']. (Tak, obawiam się że czasem się to zdarza,
      natura ludzka jest jaka jest.) Patch Spróbuje zamienić
      każdy fragment przed jego zaaplikowaniem. Odrzucenia wyjdą w
      formacie zamienionym (swapped). Opcja -R nie działa ze
      skryptami różnicowymi eda gdyż jest tam zbyt
      mało danych do zrekonstruowania operacji odwrotnej.
    
 
    Jeśli pierwszy fragment łaty zawiedzie, patch odwraca ten
      fragment, sprawdzając czy nie może być tak zaaplikowany.
      Jeśli może, zostaniesz zapytany czy chcesz ustawić
      opcję -R. Jeśli nie, łata będzie aplikowana
      dalej w sposób tradycyjny. (Uwaga: metoda ta nie może
      wykryć łaty odwróconej jeśli jest to różnica
      typu normal i jeśli pierwszą komendą jest doklejanie
      (append) (tj. powinno to być kasowanie -- delete). Jest tak dlatego,
      że doklejanie zawsze działa, gdyż pusty kontekst pasuje
      wszędzie. Szczęśliwym trafem, wiele łat raczej dodaje
      lub zmienia linie niż je kasuje, więc większość
      odwróconych różnic typu normal zaczyna się od
      kasowania, co zawiedzie i wywoła heurystykę.) 
  - -s, --silent, --quiet
 
  - Powoduje, że patch działa cicho, chyba
      że pojawi się błąd.
 
  - -t, --batch
 
  - Podobne do -f, gdyż eliminuje pytania, lecz
      działa według innych założeń: pomija łaty,
      których nagłówki nie zawierają nazw plików (tak
      samo jak -f), pomija łaty dla plików ze złymi
      wersjami Prereq: i przyjmuje, że łaty są
      odwrócone, jeśli na takie wyglądają.
 
  - -T, --set-time
 
  - Ustawia czasy modyfikacji i ostatniego dostępu
      załatanych plików według znaczników czasu podanych w
      nagłówkach różnic typu context, zakładając,
      że nagłówki te stosują czas lokalny. Opcja ta jest
      niezalecana, gdyż użycie łat korzystających z czasu
      lokalnego przez osoby z innych stref czasowych nie jest łatwe.
      Ponadto znaczniki czasu lokalnego nie są jednoznaczne w przypadku,
      gdy zegar lokalny jest cofany w związku z dostosowywaniem do czasu
      letniego. Zamiast tej opcji, powinno się tworzyć łaty z
      czasem uniwersalnym (UTC) i stosować opcję -Z lub
      --set-utc.
 
  - -u, --unified
 
  - Wymusza interpretację łaty jako różnicy
      typu unified context (zunifikowana różnica kontekstowa).
 
  - -V metoda,
    --version-control=metoda
 
  - -V metoda, --version--control=metoda Powoduje,
      że metoda staje się metodą tworzenia nazw
      plików zapasowych. Rodzaje robionych kopii zapasowych można
      również podać w zmiennej środowiskowej
      PATCH_VERSION_CONTROL (lub, jeśli nie jest ustawiona,
      zmienną VERSION_CONTROL), która jest przesłaniana
      przez tę opcję. Wybrana metoda nie ma wpływu na to, czy
      kopie zapasowe będą wykonywane, i w jakich przypadkach.
      Określa tylko sposób tworzenia nazw plików zapasowych.
      Wartość metody jest podobna jak zmiennej
      `version-control' GNU Emacsa. Patch rozpoznaje też ich
      bardziej opisowe synonimy. Poprawne wartości to (przyjmowane są
      rozróżnialne skróty):
 
  - numbered lub t
 
  - Tworzy zawsze numerowane kopie zapasowe. Nazwą
      numerowanej kopii zapasowej pliku F jest
      F.~N~ gdzie N to numer wersji.
 
  - existing lub nil
 
  - Tworzy numerowane kopie zapasowe plików, które
      już je mają, a zwykłe kopie dla pozostałych. Tak jest
      domyślnie.
 
  - `never' lub `simple'
 
  - Zawsze robi zwykłe kopie zapasowe. Opcje -B lub
      --prefix, -Y lub --basename-prefix i -z lub
      --suffix określają nazwę pliku zwykłej kopii
      zapasowej. Jeżeli nie podano żadnej z nich, to stosowany jest
      przyrostek zwykłej kopii zapasowej. Jest to wartość
      zmiennej środowiska SIMPLE_BACKUP_SUFFIX, jeśli jest ona
      ustawiona, lub .orig w przeciwnym razie.
 
Przy kopiach numerowanych lub zwykłych, jeśli nazwa pliku kopii
  zapasowej jest zbyt długa, to zamiast niej używa się przyrostka
  kopii 
~. Jeżeli nawet dodanie 
~ spowodowałoby, że
  nazwa będzie za długa, to 
~ zastępuje ostatni znak nazwy
  pliku.
 
  - --verbose
 
  - Wypisuje dodatkowe informacje o wykonywanej pracy.
 
  - -x num, --debug=num
 
  - ustawia wewnętrzne flagi debuggowe. Ma to znaczenie
      tylko dla łataczy programu patch.
 
  - -Y pref,
    --basename-prefix=pref
 
  - Przy tworzeniu nazwy zwykłej kopii poprzedza
      przedrostkiem pref podstawową część nazwy
      pliku. Na przykład, przy -Y .del/ nazwą pliku
      zwykłej kopii zapasowej dla src/patch/util.c jest
      src/patch/.del/util.c.
 
  - -z suffix, --suffix=suffix
 
  - Powoduje, że suff jest interpretowane jako
      przyrostek nazw zwykłych kopii zapasowych. Na przykład, przy
      -z - nazwą pliku zwykłej kopii kopii dla
      src/patch/util.c jest src/patch/util.c-. Przyrostek kopii
      można też określić za pomocą zmiennej
      środowiska SIMPLE_BACKUP_SUFFIX, która jest
      przesłaniana przez tę opcję.
 
  - -Z, --set-utc
 
  - Ustawia czasy modyfikacji i ostatniego dostępu
      załatanych plików według znaczników czasu podanych w
      nagłówkach różnic typu context, zakładając,
      że nagłówki te stosują czas uniwersalny - Coordinated
      Universal Time (UTC, znany też jako czas średni Greenwich GMT).
      Zobacz też opcja -T lub --set-time.
    
 
    Opcje -Z lub --set-utc i -T lub --set-time
      normalnie powstrzymują się od ustawiania czasu pliku jeśli
      jego oryginalny czas nie pasuje do czasu podanego w nagłówku
      łaty lub jej zawartość nie pasuje dokładnie do
      łaty. Jednak, jeśli podano opcję -f lub
      --force, to czas pliku jest ustawiany bez względu na
      niezgodności.
     
    Z powodu ograniczeń formatu wyjściowego stosowanego przez
      diff, opcje te nie potrafią aktualizować czasów
      plików, których zawartość się nie zmieniła.
      Wykorzystując te opcje powinno się pamiętać o
      usunięciu (np. za pomocą make clean) wszystkich
      plików, które zależą od załatanych, by
      późniejsze wywołania make nie zostały zmylone
      czasem załatanych plików. 
  - --help
 
  - Wypisuje listę opcji i kończy
    działanie.
 
  - -v, --version
 
  - Wypisuje wersję programu i kończy
    działanie.
 
ŚRODOWISKO¶
  - PATCH_GET
 
  - Określa, czy patch powinien domyślnie
      pobierać brakujące lub przeznaczone tylko do odczytu pliki z
      RCS, ClearCase lub SCCS. Zobacz opis opcji -g lub
    --get.
 
  - POSIXLY_CORRECT
 
  - Jeśli jest ustawiona, patch ściślej
      stosuje się do standardu POSIX w zachowaniu domyślnym. Zobacz
      opis opcji --posix.
 
  - QUOTING_STYLE
 
  - Domyślna wartość opcji
      --quoting-style.
 
  - SIMPLE_BACKUP_SUFFIX
 
  - Przyrostek stosowany do tworzenia nazw plików
      zwykłych kopii zapasowych .orig.
 
  - TMPDIR, TMP, TEMP
 
  - Katalog do przechowywania plików tymczasowych.
      patch wykorzystuje pierwszą zmienną środowiska z tej
      listy, jaka jest ustawiona. Jeśli żadna nie jest,
      wartość domyślna zależy od systemu: normalnie na
      maszynach uniksowych jest to /tmp.
 
  - VERSION_CONTROL lub
    PATCH_VERSION_CONTROL
 
  - Wybiera metodę kontroli wersji kopii pliku; zobacz
      opcja -v lub --version-control.
 
PLIKI¶
  - $TMPDIR/p∗
 
  - pliki tymczasowe
 
  - /dev/tty
 
  - terminal sterujący; używany do uzyskania
      odpowiedzi na pytania zadawane użytkownikowi.
 
ZOBACZ TAKŻE¶
diff(1) ed(1).
 
Marshall T. Rose and Einar A. Stefferud, Proposed Standard for Message
  Encapsulation, Internet RFC 934
  <
URL:ftp://ftp.isi.edu/in-notes/rfc934.txt> (1985-01).
UWAGI DLA WYSYŁAJĄCYCH ŁATY¶
Istnieje kilka rzeczy, o których należy pamiętać przy
  wysyłaniu łat.
Twórz łatę według sprawdzonego schematu. Dobrą
  metodą jest polecenie 
diff -Naur stary nowy
  gdzie 
stary i 
nowy identyfikują stary i nowy katalog. Nazwy
  
stary i 
nowy nie powinny zawierać żadnych
  ukośników. Nagłówki z poleceń 
diff powinny
  zawierać daty i czasy czasu uniwersalnego (UTC) z zastosowaniem
  tradycyjnego formatu uniksowego, by odbiorcy łaty mogli skorzystać z
  opcji 
-Z lub 
--set-utc. Oto przykładowe polecenie, z
  użyciem składni powłoki Bourne'a:
 
	 LC_ALL=C TZ=UTC0 diff -Naur gcc-2.7 gcc-2.8
Powiadom odbiorców, jak zaaplikować łatę, wskazując, do
  którego katalogu przejść 
cd i jakich opcji 
patch
  użyć. Zalecany jest łańcuch opcji 
-Np1.
  Wypróbuj procedurę stawiając się na miejscu odbiorcy i
  stosując łatę na kopię oryginalnych plików.
Możesz oszczędzić ludziom wielu problemów, zachowując
  plik 
patchlevel.h Jest on łatany aby zwiększyć poziom
  łaty (patch level). Umieść go jako pierwszą
  różnicę w pliku z łatą, który wysyłasz.
  Jeśli do łaty wstawisz linię 
Prereq:, to nie pozwoli ona
  na stosowanie łat poza kolejnością bez ostrzeżenia.
Możesz utworzyć plik u odbiorcy wysyłając mu
  różnicę z porównania 
/dev/null lub pusty plik o
  dacie równej Epoce (1970-01-01 00:00:00 UTC) z plikiem, który chcesz
  stworzyć. Zadziała to tylko jeśli plik taki jeszcze nie
  istnieje w katalogu docelowym. I odwrotnie, możesz usunąć plik
  wysyłając różnicę kontekstową
  porównującą plik do usunięcia z pustym plikiem datowanym
  na Epokę. Plik nie zostanie usunięty jeśli 
patch
  działa zgodnie z POSIX a nie podano opcji 
-E lub
  
--remove-empty-files. Prostą metodą generowania łat,
  które tworzą i usuwają pliki jest użycie opcji 
-N
  lub 
--new-file programu GNU 
diff. Jeśli spodziewasz
  się, że odbiorca użyje opcji 
-pN, nie
  wysyłaj wyjścia wyglądającego tak:
 
	diff -Naur v2.0.29/prog/README prog/README
 
	--- v2.0.29/prog/README Mon Mar 10 15:13:12 1997
 
	+++ prog/README Mon Mar 17 14:58:22 1997
 
bo obie nazwy plików mają różną liczbę
  ukośników, a rozmaite wersje 
patch różnie
  interpretują nazwy plików. Unikniesz mylnej interpretacji,
  wysyłając zamiast tego takie wyjście:
 
	diff -Naur v2.0.29/prog/README v2.0.30/prog/README
 
	--- v2.0.29/prog/README Mon Mar 10 15:13:12 1997
 
	+++ v2.0.30/prog/README Mon Mar 17 14:58:22 1997
 
Unikaj wysyłania łat porównujących pliki o takich nazwach,
  jakie mają kopie zapasowe, jak np. 
README.orig, gdyż
  może to zmylić 
patch, tak że będzie
  nakładał łatę na plik kopii zamiast na rzeczywisty plik.
  Zamiast tego powinieneś wysyłać łaty porównujące
  pliki o takich samych nazwach podstawowych, położone w
  różnych katalogach, np. 
old/README i 
new/README.
Uważaj by nie wysyłać łat odwrotnych, gdyż powoduje to,
  że ludzie zastanawiają się czy już załączyli
  łatę.
Nie próbuj budować łat, które zmieniały by pliki
  pochodne (np. plik 
configure, w którym jest linia 
configure:
  configure.in w swoim makefile), ponieważ odbiorca i tak powinien
  być w stanie je odtworzyć. Jeśli musisz wysłać
  różnice plików pochodnych, utwórz je używając
  czasu uniwersalnego UTC; odbiorcy powinni zaaplikować łątę
  stosując opcję 
-Z lub 
--set-utc, a następnie
  usunąć wszystkie niełatane pliki, które zależą
  od właśnie załatanych (np. za pomocą
  
make clean).
Mimo iż można umieścić 582 listingów różnic w
  jednym pliku, to lepiej wstawić grupy powiązanych łat do
  osobnych plików.
Poza tym, upewnij się, że podałeś poprawnie nazwy
  plików, zarówno w nagłówku różnicy kontekstowej,
  jak i w linii 
Index:. Jeśli łatasz coś w podkatalogu,
  upewnij się, że powiadomiłeś użytkownika, by
  podał opcję 
-p.
DIAGNOSTYKA¶
Zbyt wiele by tu wymieniać, lecz ogólnie wskazują, że
  
patch nie mógł przetworzyć pliku z łatą.
Jeśli podano opcję 
--verbose, komunikat 
Hmm... wskazuje,
  że w pliku z łatą jest nieprzetworzony tekst i że
  
patch próbuje domyślić się, czy znajduje się w
  nim łata, a jeśli tak, to jakiego jest rodzaju.
Patch kończy pracę z kodem 0 jeśli wszystkie kawałki
  zaaplikowano poprawnie, 1 jeśli jakieś nie mogły być
  zaaplikowane, a 2 w przypadku poważniejszych kłopotów. Podczas
  aplikowania zbioru łat w pętli, umożliwia ci sprawdzenie tego
  kodu, tak by nie dołączać już reszty łat do
  częściowo połatanego pliku.
ZASTRZEŻENIA¶
Różnice kontekstowe nie mogą wiarygodnie odwzorowywać
  tworzenia lub usuwania pustych plików, pustych katalogów czy
  plików specjalnych, jak dowiązania symboliczne. Nie potrafią
  też reprezentować zmian w metadanych pliku, takich jak
  właściciel, grupa, prawa czy to, że jeden plik jest twardym
  dowiązaniem do drugiego. Jeśli takie zmiany są
  również wymagane, łacie powinny towarzyszyć osobne
  instrukcje (np. w postaci skryptu powłoki).
Patch nie potrafi stwierdzić, czy w skrypcie 
ed nie
  istnieją numery linii, a w normalnych różnicach może
  wykryć niewłaściwe numery tylko gdy odnajdzie zmianę lub
  usunięcie. Różnica kontekstowa, używająca
  współczynnika `fuzz factor' 3 może mieć podobne problemy.
  Dopóki nie zostanie dodany właściwy interaktywny interfejs
  użytkownika, powinieneś raczej w tych wypadkach robić
  różnice typu context. Zobaczysz czy zmiany mają sens.
  Oczywiście kompilowanie bez błędów jest całkiem
  dobrym wskazaniem, że łata zadziałała, lecz nie jest to
  zawsze prawda.
Patch zwykle daje prawidłowe wyniki, nawet gdy musi dużo
  zgadywać. Jednak rezultaty mają gwarancję
  prawidłowości tylko wtedy, gdy łaty aplikowane są do
  dokładnie tej samej wersji pliku, z której zostały
  wygenerowane.
KWESTIE ZGODNOŚCI¶
Standard POSIX podaje zachowanie, które różni się od
  tradycyjnego zachowania się 
patcha. Powinieneś
  pamiętać o tych różnicach jeśli musisz
  współpracować z 
patch w wersji 2.1 lub
  wcześniejszymi, które nie są zgodne z POSIX.
  -  •
 
  - W tradycyjnym patchu argument opcji -p
      był opcjonalny, a gołe -p było równoważne
      -p0. Obecnie opcja -p wymaga argumentu, a -p 0
      jest teraz równoważnikiem -p0. Dla zachowania maksymalnej
      zgodności, stosuj opcje typu -p0 i -p1.
    
 
    Ponadto, tradycyjny patch po prostu zlicza ukośniki przy
      obcinaniu przedrostków ścieżkowych; patch liczy
      obecnie składowe nazwy pliku. To znaczy, ciąg
      sąsiadujących ukośników liczy się obecnie za
      jeden ukośnik. Dla zachowania maksymalnej zgodności, unikaj
      wysyłania łat zawierających // w nazwach
      plików. 
  -  •
 
  - W tradycyjnym patchu, tworzenie kopii zapasowych
      było włączone domyślnie. Zachowanie to jest teraz
      włączane opcją -b lub --backup.
    
 
    I odwrotnie, w POSIX-owym patch, kopie nigdy nie są tworzone,
      nawet jeśli wystąpi niedopasowanie łaty. W GNU
      patch, zachowanie to jest włączane opcją
      --no-backup-if-mismatch lub przez włączenie
      zgodności z POSIX opcją --posix albo ustawieniem zmiennej
      środowiska POSIXLY_CORRECT.
     
    Opcja -b suffix tradycyjnego patch jest
      równoważna opcjom -b -z suffix dla GNU
      patch. 
  -  •
 
  - Tradycyjny patch stosuje skomplikowaną (i nie w
      pełni udokumentowaną) metodę domyślania się z
      nagłówka łaty nazwy pliku do załatania. Metoda ta nie
      jest zgodna z POSIX i ma kilka niepoprawnie zakodowanych fragmentów
      [gotchas]. Obecny patch korzysta z innej, równie
      skomplikowanej (ale lepiej udokumentowanej) metody, która jest
      opcjonalnie zgodna z POSIX; mamy nadzieję, że ma mniej
      błędów. Obie te metody są ze sobą zgodne
      jeśli nazwy plików w nagłówku różnicy
      kontekstowej i w linii Index: po obcięciu przedrostka są
      identyczne. Normalnie łata jest zgodna jeśli wszystkie nazwy
      plików w nagłówku zawierają tę samę
      liczbę ukośników.
 
  -  •
 
  - Gdy tradycyjny patch zadawał użytkownikowi
      pytanie, kierował je na standardowe wyjście
      błędów i oczekiwał odpowiedzi z pierwszego pliku
      poniższej listy będącego terminalem: standardowe
      wyjście błędów, standardowe wyjście,
      /dev/tty, i standardowe wejście. Teraz patch
      wysyła pytania na standardowe wyjście i pobiera odpowiedzi z
      /dev/tty. Zmieniono domyślne odpowiedzi na niektóre z
      pytań. Dzięki temu patch nigdy nie wchodzi w
      nieskończoną pętlę przy stosowaniu domyślnych
      odpowiedzi.
 
  -  •
 
  - Tradycyjny patch kończył działanie z
      kodem równym liczbie błędnych fragmentów, albo z kodem
      1 jeśli napotkano poważny problem. Obecnie patch
      kończy działanie z kodem 1 jeśli nie udało się
      zaaplikować jakichś fragmentów, albo 2 jeśli napotkano
      poważny problem.
 
  -  •
 
  - Wysyłając instrukcje określające
      sposób skorzystania z łaty przez kogoś pracującego z
      GNU patch, tradycyjnym patchem, lub patch em zgodnym
      z POSIX ogranicz się do podanych niżej opcji. W tym zestawieniu
      spacje są znaczące, a argumenty wymagane.
    
 
    
-c
-d kat
-D symb
-e
-l
-n
-N
-o plik-wyj
-pnum
-R
-r plik-odrz
    
   
BŁĘDY¶
Zgłoszenia błędów proszę wysyłać do
  
<bug-gnu-utils@gnu.org>.
Mógłby być sprytniejszy co do częściowych trafień,
  nadmiernie odbiegających od normy offsetów i zamienionego kodu, lecz
  wymagałoby to dodatkowego przebiegu.
Jeśli kod został powielony (np. #ifdef STARYKOD ... #else ... #endif),
  
patch nie może załatać obu wersji, i jeśli w
  ogóle zadziała, prawdopodobnie załata
  niewłaściwą i powie, że udało mu się z
  obydwiema.
Jeśli aplikujesz łatę, którą już
  zaaplikowałeś, 
patch pomyśli że jest to odwrotna
  łata i zaoferuje zdjęcie łaty. Można to uważać
  za zaprojektowaną funkcję programu.
KOPIOWANIE¶
Copyright 1984, 1985, 1986, 1988 Larry Wall.
 
Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998 Free
  Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this manual
  provided the copyright notice and this permission notice are preserved on all
  copies.
Permission is granted to copy and distribute modified versions of this manual
  under the conditions for verbatim copying, provided that the entire resulting
  derived work is distributed under the terms of a permission notice identical
  to this one.
Permission is granted to copy and distribute translations of this manual into
  another language, under the above conditions for modified versions, except
  that this permission notice may be included in translations approved by the
  copyright holders instead of in the original English.
AUTORZY¶
Larry Wall napisał pierwotną wersję 
patcha. Paul Eggert
  usunął istniejące w programie arbitralne ograniczenia.
  Dodał obsługę plików binarnych, ustawianie czasów
  pliku i usuwanie plików, i uczynił go bardziej zgodnym z POSIX-em.
  Swój wkład wnieśli też Wayne Davison, który
  dodał obsługę formatu unidiff, i David MacKenzie, który
  dołożył obsługę ustawień i kopii zapasowych.
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
  Tłumaczenia Manuali i 
może nie być aktualne. W razie
  zauważenia różnic między powyższym opisem a
  rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
  zapoznanie się z oryginalną (angielską) wersją strony
  podręcznika za pomocą polecenia:
  
  - man --locale=C 1 patch
 
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
  znaleźć pod adresem
  
http://sourceforge.net/projects/manpages-pl/.