Provided by: manpages-tr_1.0.5.1-1.1_all bug

İSİM

       patch - bir yama dosyasını orjinaline uygular

KULLANIM

       patch [seenekler] [orjinal [yama]]
       genellikle şöyle kullanılır:

       patch -psay <yama

AÇIKLAMA

       patch,   diff(1) ile üretilmiş bir fark listesi içeren bir yama dosyası
       alır ve bu yama dosyasındaki  farkları  bir  veya  daha  fazla  orjinal
       dosyaya  uygulayarak  orjinallerin  yamalı sürümlerini üretir. Normalde
       yamalı  sürümler  orjinal  dosyalara  yazılarak  oluşturulur.  Yedekler
       oluşturulabilir;   -b  ve  --backup  seçeneklerine  bakınız.  Yamanacak
       dosyaların isimleri normalde yama dosyasından alınır, ancak eğer sadece
       bir   yamanacak   dosya  varsa  ismi  komut  satırında  orjinal  olarak
       belirtilebilir.

       patch çalıştırıldığında fark listesinin türü -c (--context), -e (--ed),
       -n  (--normal) veya -u (--unified) seçenekleri ile belirtilmemişse önce
       fark  listesinin  türünü  saptamaya  çalışır.  ed  fark  dosyaları  bir
       boruhattı   ile   ed(1)  metin  düzenleyicisi  üzerinden  uygulanırken,
       bağlamsal fark dosyaları  (eski,  yeni  ve  birleşik)  ve  normal  fark
       dosyaları doğrudan patch tarafından uygulanır.

       patch   yama   dosyasındaki   olası  bozuk  alanları  atlayarak  yamayı
       uygulamaya çalışır. Bu özelliğinden yararlanarak yama dosyası içine bir
       açıklama  yerleştirebilirsiniz ve buna rağmen yama uygulanır. Eğer diff
       dosyasının  içeriği  sürekli  aynı  biçimde  girintilenmişse  veya  bir
       bağlamsal  fark  dpsyasında  satırlar CRLF ile bitiyorsa ya da Internet
       RFC 934'de "-" için belirtildiği gibi "-" ile başlayan  satırlar  varsa
       bunlar hesaba katılır.

       Bağlamsal  fark  dosyaları  ile  ve bir daha az genişletme yapan normal
       fark  dosyaları  ile  patch,  yama  içindeki  satır  numaraları  yanlış
       olduğunda   bunu   saptayabilir   ve  yama  listesinin  her  elemanının
       uygulanacağı doğru yeri bulmaya çalışır. Önce listedeki her eleman  ile
       ilgili  satır  numaralarını  alır  ve yamanın uygulanmasında kullanılan
       artı ve eksi ile belirlenmiş satırlara  bakar.  Eğer  satır  numaraları
       doğru  yeri  belirtmiyorsa, eksi ile belirtilmiş satırları bulmak üzere
       metni  ileri  ve  geri  her  iki  yönde  tarar.  patch   ilk   taramada
       değiştirilecek  satırların  tamamı  için  bir  eşleşme  arar. Böyle bir
       eşleşme bulamazsa, yama dosyası  bir  bağlamsal  yama  dosyası  ise  ve
       belirsizlik  faktörü  de  1  ise  değiştirilecek  satırların  ilkini ve
       sonuncusunu yok sayarak bir arama daha yapar. Bulamazsa ve  belirsizlik
       faktörü  2  veya 2 den büyükse bu kez ilk ve son iki satırı yok sayarak
       bir arama daha yapar.  (Öntanımlı  belirsizlik  faktörü  2'dir.)  patch
       yamanın  uygulanacağı  yeri  bulamazsa,  uygulayamadığı  bölümü bir red
       dosyasına yazar. Bu dosyanın ismi normalde yama dosyasının ismine  .rej
       eklenerek   elde  edilir.  Eğer  .rej  eki  çok  uzun  bir  dosya  ismi
       oluşturacaksa dosya isminin sonuna #  eklenir,  bu  karakter  de  fazla
       geliyorsa  dosya  isminin son karakteri # ile değiştirilir. (Rededdilen
       kısım  yamanın  biçiminden  bağımsız  olarak  sıradan  bağlamsal   fark
       biçiminde  çıktılanır.  Eğer girdi bir normal fark dosyası ise bağlamın
       çoğu basitçe boş olur.) Red dosyasındaki reddedilen  kısımlarla  ilgili
       satır   numaraları   yama   dosyasındaki  satır  numaralarından  farklı
       olabilir: yeni satır numaraları yamanın  eski  dosyada  değil  de  yeni
       (yamanmış)  dosyada  bulunabileceği  yaklaşık  yeri  belirtecek şekilde
       oluşturulur.

       Her yama parçası tamamlandığında, eğer parçanın  uygulanması  başarısız
       olmuşsa   (yeni dosyadaki) hangi satırdan itibaren devam edeceğini size
       bildirilir. Eğer  yama  parçası  fark  dosyasında  belirtilen  satırdan
       farklı numaralı bir satıra uygulanmışsa size yeni konumu bildirir. Yeni
       konumun çok farklı olması parçanın yanlış yeri yamamakta kullanıldığını
       belirtebilir.  Bir  eşleşme  bulunurken  belirsizlik  faktörü kullanmak
       gerekmişse,  biraz  kuşku  duyasınız  diye  bu  da  ayrıca  bildirilir.
       --verbose  seçeneğini belirtmişseniz başarıyla uygulanan yama parçaları
       hakkında da bilgi verilir.

       Komut satırında orjinal dosya belirtilmemişse patch, yama  dosyasındaki
       yama    olarak    uygulanabilecek    alanların    dışındaki    alanları
       değerlendirerek aşağıdaki kurallara bağlı olarak  yamanın  uygulanacağı
       dosyanın ismini tespit etmeye çalışır.

       Önce,  aday dosya isimlerinin listesini elde etmeye çalışır. Bunu şöyle
       yapar:

       ·  Başlık bir bağlamsal fark dosyası başlığı ise, patch  eski  ve  yeni
          dosya  isimlerini  başlıktan  alır.  Eğer isimdeki bölü çizgilerinin
          sayısı -psay veya --strip=say  seçenekleri  ile  belirtilen  kadar
          değilse bu isim yoksayılır. /dev/null ismi de ayrıca yoksayılır.

       ·  Yama  olarak  uygulanacak  alanların  dışında  Index:  ile  başlayan
          satırlar  varsa  ve  hem   yeni   hem   de   eski   dosya   isimleri
          belirtilmemişse veya  patch POSIX uyumlu ise, patch dosya isimlerini
          Index: ile başlayan satırlardan alır.

       ·  Bundan sonraki kurallara uygun olmak üzere, aday dosya  isimlerinin,
          başlıkta  göründükleri  sıraya  bakılmaksızın,  (eski,  yeni, Index)
          düzeninde olacakları varsayılır.

       patch bir dosya ismini aday dosya listesinden şu kurallara göre seçer:

       ·  Bazı isimli dosyalar mevcutsa, patch POSIX uyumluysa ilk dosya  ismi
          değilse eniyi isim seçilir.

       ·  Eğer  patch  RCS,  ClearCase  ve SCCS'yi yoksaymıyorsa (-g say veya
          --get=say seçeneklerine bakınız) ve isimli bir dosya mevcut değilse
          ama bir RCS,  ClearCase veya SCCS ana dosyası varsa patch ilk isimli
          dosyayı RCS,  ClearCase veya SCCS ana dosyası ile seçer.

       ·  İsimli dosya mevcut  değilse,  bir  RCS,  ClearCase  veya  SCCS  ana
          dosyası  da  yoksa  ama  bazı dosya isimleri verilmişse, patch POSIX
          uyumlu değilse ve yamanın bir dosya oluşturması  gerekiyorsa,  patch
          en az dizin oluşturulacak şekilde en iyi dosya ismini seçer.

       ·  Şimdiye  dek bahsedilen kurallarla hal bir dosya ismi seçilememişse,
          yamanacak dosyanın ismi size sorulur ve patch dosya ismini buna göre
          seçer.

       İsimli  dosyalar  listesinden "eniyi" dosya ismi şöyle seçilir: önce en
       az sayıda dizini dosya yolu olarak alır,  bundan  sonra,  uzantısız  en
       kısa  dosya  isimleri,  bundlardan  sonra en kısa isimlerin tümü ve son
       olarak da kalan ilk isim alınır.

       Ek olarak,  Yama  olarak  uygulanacak  alanların  dışında  Prereq:  ile
       başlayan  bir  satır  varsa,  patch  bu öngereklilikler satırındaki ilk
       sözcüğü (normalde bir sürüm numaraasıdır) alır ve  orjinal  dosyaya  bu
       sözcük  var  mı  diye  bakar.  Yoksa patch işine devam etmeden önce bir
       doğrulama isteği yapar.

       Tüm bunların nihayetinde, şöyle bir bildirim de yapabilirsiniz:

       | patch -d /usr/src/local/blurfl

       ve, blurfl dizinindeki bir dosya yama dosyasıyla yamanır.

       Eğer yama  dosyası  bir  yamadan  fazlasını  içeriyorsa  patch  onların
       herbirini  farklı birer yama dosyasından geliyormuşçasına uygular. Yama
       olarak  uygulanabilecek  her  satır  grubundan  önce  gelen  satırlarda
       bulunan  dosya  isimleri  ve sürüm numaralarından yukarıda bahsedildiği
       gibi yamanacak dosyanın ismi saptanarak bu işlem gerçekleştirilir.

SEÇENEKLER

       -b, --backup
          Dosyaların yedeğini oluşturur. Bir dosya  yamanırken  orjinal  dosya
          silinmez,  ya  başka  bir  yere  kopyalanır ya da ismi değiştirilir.
          Mevcut olmayan  bir  dosyanın  yedeği  yapılırken,  olmayan  dosyayı
          belirtmek  için  sadece  ismi  olan  cismi  olmayan  (boş) bir dosya
          oluşturulur. Yedek dosya isimlerinin  nasıl  oluşturulduğu  -V  veya
          --version-control seçeneklerinin açıklamalarında bulunabilir.

       --backup-if-mismatch
          Yama  bir  dosya  ile  tam uyuşmazsa ve yedekleme istenmese de dosya
          yedeklenir. patch POSIX uyumlu değilse bu seçenek  öntanımlı  olarak
          uygulanır.

       --no-backup-if-mismatch
          Yama  bir  dosya  ile  tam  uyuşmazsa  ve yedekleme istense de dosya
          yedeklenmez. patch POSIX uyumlu değilse bu seçenek öntanımlı  olarak
          uygulanır.

       -B nek, --prefix=nek
          Basit  yedek  dosya  ismi  oluşturulurken  dosya  isminin önüne nek
          getirilir. Örneğin, -B /junk/ ile dosya ismi  src/patch/util.c  olan
          bir     dosyanın     basit     yedeği    yapılırken    dosya    ismi
          /junk/src/patch/util.c yapılır.

       --binary
          Standart çıktı veya /dev/tty dışında  tüm  dosyalar  için  okuma  ve
          yazma  işlemleri  iklik  kipte  yapılır.  Bu  seçenek  POSIX  uyumlu
          sistemlerde etkisizdir. DOS benzeri sistemlerde ise bu seçeneğin bir
          fark oluşturması için yama diff -a --binary ile üretilmiş olmalıdır.

       -c, --context
          Yama dosyası sıradan bir bağlamsal fark dosyası olarak yorumlanır.

       -d dizin, --directory=dizin
          Hiçbir şey yapmadan, hemen dizin dizinine geçilir.

       -D tanm, --ifdef=tanm
          Değişiklikleri  işaretlemede  #ifdef   ...   #endif   yapısı   tanm
          farklılaştırma sembolü ile kullanılır.

       --dry-run
          Hiçbir  dosyada değişiklik yapmaksızın uygulanan yamaların sonuçları
          basılır.

       -e, --ed
          Yama dosyası bir ed betiği olarak yorumlanır.

       -E, --remove-empty-files
          Yama uygulandıktan  sonra  boşalan  dosyalar  silinir.  Aslında,  bu
          seçenek  gereksizdir,  çünkü patch yamadıktan sonra dosyanın varolup
          olmayacağını saptamak için başlıktaki tarih damgasını inceler.  Buna
          rağmen,  girdi  bir bağlamsal fark dosyası değilse ya da patch POSIX
          uyumlu ise, patch bu seçenek verilmedikçe yamandıktan sonra  boşalan
          dosyaları silmez. patch böyle bir dosyayı sildikten sonra boşalmışsa
          dosyanın bulunduğu dizini de silmeye çalışır.

       -f, --force
          Kullanıcının  ne  yaptığını  tam  olarak   bildiği   varsayılır   ve
          kullanıcıya   herhangi   bir   soru  yöneltilmez.  Hangi  dosyaların
          yamanacağını belirtmeyen başlıklar içeren yamalar  atlanır;  Prereq:
          ile  başlayan  satırlarda  yanlış  sürüm  bilgisi  olsa  bile  dosya
          yamanır; eski ve yeni dosyaların  yer  değiştirilmesi  gerekse  bile
          yamaların  bu  işlem  yapılmadan uygulanacağı varsayılır. Bu seçenek
          açıklamaları engellemez, bunun için -s seçeneğine bakınız.

       -F say, --fuzz=say
          En büyük belirsizlik faktörünü belirtmekte  kullanılır.  Bu  seçenek
          sadece  bağlamsal fark dosyalarına uygulanır ve patch yamanacak yeri
          bulurken yama olarak kullanılacak satırların  baştan  ve  sondan  bu
          kadarını  yoksayar.  Çok  büyük  belirsizlik  faktörlerinin  yamanın
          başarısızlığını  arttıracağını  unutmayın.   Öntanımlı   belirsizlik
          faktörü   2'dir  ve  bağlamsal  fark  dosyalarında  bağlamsal  satır
          sayısından daha yüksek bir değer (genelde 3'tür) atanmamalıdır.

       -g say, --get=say
          Bir dosya RCS veya SCCS denetimindeyken, böyle bir dosya yoksa  veya
          salt-okunursa  ya da öntanımlı sürümüyle eşleşiyorsa; veya ClearCase
          denetimindeyken,  böyle  bir  dosya  yoksa,  bu  seçenek,   patch'in
          eylemlerini  denetlemekte  kullanılır. say pozitifse, patch dosyayı
          sürüm denetim sisteminden alır; sıfırsa, RCS,  SCCS  veya  ClearCase
          yoksayılır  ve dosya alınmaz; negatifse dosyanın alınıp alınmayacağı
          kullanıcıya sorulur. Bu seçeneğin öntanımlı değeri  eğer  atanmışsa,
          PATCH_GET  ortam  değişkeninden  alınır;  atanmamışsa ve patch POSIX
          uyumluysa öntanımlı değer sıfır, aksi takdirde negatiftir.

       --help
          Seçeneklerin bir özetini basar ve çıkar.

       -i yamadosyas, --input=yamadosyas
          Yama yamadosyas dosyasından okunur. yamadosyas olarak - verilmişse
          öntanımlı olarak standart girdi okunur.

       -l, --ignore-whitespace
          Yamanacak  dosyaların  içindeki  sekmeler  ve  boşluklar  için  yama
          içindeki boşluklarla birebir eşleşme  aranmaz,  ancak  herhangi  bir
          uzunlukta  boşluğun  her  iki dosyada da karşılıklı varlığı şarttır,
          satır sonlarındaki boşluklar eşleşme  açısından  yoksayılır.  Normal
          karakterler  tam  olarak eşleştirilir. Bağlamsal her satır yamanacak
          dosyadaki satırlarla daima eşleştirilir.

       -n, --normal
          Yama dosyası normal bir yama dosyası olarak yorumlanır.

       -N, --forward
          Eski ve yeni  dosyaların  yer  değiştirileceği  görünen  veya  zaten
          uygulanmış yamalar yoksayılır. -R seçeneğine de bakınız.

       -o ktdosyas, --output=ktdosyas
          Dosyaların  yerinde  yamanması  yerine çıktı, ktdosyas dosyasına
          gönderilir.

       -p say, --strip=say
          Yama  dosyasında  bulunan  her  dosya  isminin  başından  say   ile
          belirtilen sayıda bölü çizgisi içeren dizge yoksayılır. Birden fazla
          yanyana bölü çizgisi varsa bunlar tek bir bölü çizgisi sayılır. Yama
          dosyasının   yamanacak  dosyalardan  farklı  bir  dizinde  tutulması
          durumunda yamanacak dosyaların nasıl bulunacağını belirtmek amacıyla
          kullanılır.  Örneğin,  yama dosyasında yamanacak dosya isminin şöyle
          verildiğini varsayalım:

          /u/howard/src/blurfl/blurfl.c

          Seçenek -p0 olarak verilirse bu dizge olduğu gibi  ele  alınır,  -p1
          verilirse,

          u/howard/src/blurfl/blurfl.c

          baştaki bölü çizgisi atılır, -p4 verilirse,

          blurfl/blurfl.c

          olur.  -p  hiç  belirtilmezse  sonuç  blurfl.c olacaktır. Bu durumda
          dosya yamanın bulunduğu dizinde aranacağından dosya daha farklı  bir
          yerdeyse bu da -d seçeneği ile belirtilebilir.

       --posix
          POSIX standardına kesinlikle uyulur:

          ·  Fark   dosyası   başlıklarından   dosya   isimleri  öğrenilirken,
             listedeki (eski, yeni, birleşik) ilk mevcut dosya alınır.

          ·  Yamandıktan sonra boşalan dosyalar silinmez.

          ·  RCS, ClearCase veya SCCS'deki  dosyalar  için  alınacak  mı  diye
             sormaz.

          ·  Komut  satırında seçeneklerin dosyalardan önce verilmesi gerekir.

          ·  Eşleşmeyen dosyaların yedeklemesi yapılmaz.

       --quoting-style=szck
          Çıktılanan  isimler  sarmalanırken  szck   ile   belirtilen   tarz
          kullanılır. szck şunlardan biri olabilir:

          literal
                 İsimler olduğu gibi çıktılanır.

          shell  İsimler   kabuk   metakarakterleri   içeriyorsa   kabuk  için
                 sarmalanır yoksa anlamı belirsiz çıktılama yapılır.

          shell-always
                 Normalde sarmalanmaları gerekmese bile  isimler  daima  kabuk
                 için sarmalanır.

          c      İsimler C dilinde dizgelere uygulandığı gibi sarmalanır.

          escape İsimler  çevreleyen  çifttırnakların ihmal edilmesi dışında c
                 tarzındaki gibi sarmalanır.

          --quoting-style seçeneği için öntanımlı değeri  QUOTING_STYLE  ortam
          değişkeninde   belirtebilirsiniz.   Bu  ortam  değikeni  atanmamışsa
          öntanımlı değer shell'dir.

       -r reddosyas, --reject-file=reddosyas
          Bu yamanın eski ve yeni  dosyalar  yer  değiştirilerek  uygulanacağı
          varsayılır.  Yama  olarak  kullanılacak  her  bölümdeki eski ve yeni
          satırlar   yer    değiştirilerek    uygulanmaya    çalışılır.    Yer
          değiştirildiğinde  anlamsız olan kısımlar reddedilir. -R seçeneği ed
          fark  betikleri  ile  çalışmaz,  çünkü   yer   değiştirme   işlemini
          gerçekleştirmek için çok az bilgi içerirler.

          Yama  içindeki  kısımlardan  ilkinin  uygulanması  başarısız olursa,
          patch bu kısmın eski ve  yeni  satırlarını  yer  değiştirerek  böyle
          uygulanabiliyor  mu  diye bakar. Böyle uygulanabiliyorsa kullanıcıya
          -R   seçeneğinin   uygulanmasını   isteyip    istemediğini    sorar.
          Uygulanamıyorsa,  patch normal olarak uygulamaya devam eder. (Bilgi:
          Eğer yama  bir  normal  yama  ise  ve  boş  bir  içerik  bile  daima
          eşleşeceğinden  ilk komut yamanın bir ek uygulanacağını belirtiyorsa
          bu yöntem yer değiştirmeli yamayı saptayamaz. Tesadüfen,  çoğu  yama
          bir satırın tamamen silinmesini değil ya bir ek ya da bir değişiklik
          yapılmasını gerektirir, bu  durumda  yer  değiştirmeli  normal  fark
          dosyalarından   silme   işlemi  ile  başlayanlar  başarıyı  arttıran
          kuralların uygulanmasına bağlı olarak başarısız olur.)

       -s, --silent, --quiet
          Bir hata oluşmadıkça bilgilendirici hiçbir şey çıktılanmaz.

       -t, --batch
          -f seçeneğinde olduğu gibi sorular engellenir ama  bu  biraz  farklı
          kabulllerle   yapılır:   başlıklarında  dosya  isimlerini  içermeyen
          yamalar atlanır (-f ile  aynı);  yamanın  Prereq:  satırında  yanlış
          sürüm  belirtilen  dosyalar  için yamalar atlanır; ve yer değiştirme
          uygulanması  gerekliliği  saptanan  yamaların  yer  değiştirme   ile
          uygulanacağı varsayılır.

       -T, --set-time
          Yamanmış  dosyaların  erişim ve değiştirme zamanları, bağlamsal fark
          dosyalarının   başlıklarındaki   zaman   bilgisinin   yerel   zamanı
          gösterdiği   varsayımıyla   bu   zamana   ayarlanır.   Bu  seçeneğin
          kullanılması önerilmez, çünkü  yerel  zaman  kullanılarak  uygulanan
          yamaları    diğer    zaman    dilimlerindeki   kulanıcılar   kolayca
          kullanamazlar, ayrıca yaz saati uygulamasından  dolayı  yerel  zaman
          damgaları  yamanın  geçmişte  uygulanması  gibi  tuhaflıklara  sebep
          olabilir.  Bu  seçenek  yerine  -Z  veya   --set-utc   seçeneklerini
          kullanarak zamanı UTC'ye göre belirtmeyi tercih edin.

       -u, --unified
          Yama dosyası birleşik bağlamsal fark dosyası olarak yorumlanır.

       -v, --version
          patch'in sürüm başlığını ve ama seviyesini basar ve çıkar.

       -V yntem, --version-control=yntem
          Yedek dosya isimleri saptanırken yntem kullanılır. Bu yöntem ayrıca
          bu     seçenek     ile     gerektiğinde     değiştirilmek      üzere
          PATCH_VERSION_CONTROL  (veya  bu  atanmamışsa VERSION_CONTROL) ortam
          değişkeni ile atanabilir. Burada  bir  yöntemin  atanması  yedekleme
          yapılacağı  anlamına  gelmez,  sadece  yedekleme  yapılacaksa  yedek
          dosyalarının ismi bu yöntem kullanılarak saptanır.

          yntem değeri  GNU  Emacs'ın  `version-control'  değişkeni  gibidir;
          farklı  olarak  patch daha açıklayıcı olan eşanlamlılarını da tanır.
          Geçerli yntem  değerleri  şunlardır  (eşsiz  kısaltmalar  da  kabul
          edilir):

          existing, nil
                 Zaten  varolan  dosyaların  numaralı  yedekleri yapılır, aksi
                 takdirde basit yedekleme yapılır. Bu öntanımlıdır.

          numbered, t
                 Numaralı yedekleme yapılır.  F  dosyasının  yedek  dosyası  N
                 sürüm    numarasını    belirtmek    üzere   F.~N~   biçiminde
                 isimlendirilir.

          simple, never
                 Basit    yedekleme     yapılır.     -B     (--prefix),     -Y
                 (--basename-prefix)  ve   -z (--suffix) seçenekleri ile basit
                 yedek dosyası ismi belirtilebilir.  Bu  seçeneklerin  hiçbiri
                 belirtilmemişse,  basit  yedekleme  soneki  kullanılır; sonek
                 değeri    SIMPLE_BACKUP_SUFFIX    ortam     değişkeni     ile
                 belirtilmemişse öntanımlı olarak .orig soneki kullanılır.

          Numaralı  ve  basit  yedeklemede  dosya  ismi çok uzun olursa bunlar
          yerine sonek olarak ~ kullanılır, bu işlem de dosya isminin çok uzun
          olmasına sebep oluyorsa dosya ismindeki son karakter ~ karakteri ile
          değiştirilir.

       --verbose
          Yapılan işlem hakkında daha ayrıntılı bilgi verilir.

       -x say, --debug=say
          Sadece patch yamacılarını ilgilendiren hata ayıklama   seçeneklerini
          belirtmek için kullanılır.

       -Y nek, --basename-prefix=nek
          Basit  yedek  dosyası  ismi  oluşturulurken dizinlerden arındırılmış
          dosya isminin önüne nek getirilir. Örneğin basit yedek  dosya  ismi
          -Y   .del/   ile   belirtilmişse  src/patch/util.c  dosyasının  ismi
          src/patch/.del/util.c yapılır.

       -z sonek, --suffix=sonek
          Basit yedek dosyası ismi oluşturulurken dosya isminin  sonuna  sonek
          getirilir.  Örneğin  basit  yedek  dosya ismi -z - ile belirtilmişse
          src/patch/util.c   dosyasının   ismi   src/patch/util.c-    yapılır.
          Yedekleme  soneki  gerektiğinde  bu  seçenek ile değiştirilmek üzere
          SIMPLE_BACKUP_SUFFIX ortam değişkeni ile de atanabilir.

       -Z, --set-utc
          Yamanmış dosyaların erişim ve değiştirme zamanları,  bağlamsal  fark
          dosyalarının  başlıklarındaki  zaman bilgisinin koordinatlı evrensel
          zamanı (UTC; GMT  olarak  da  bilinir)  gösterdiği  varsayımıyla  bu
          zamana   ayarlanır.   Ayrıca   -T   veya  --set-time  seçeneklerinin
          açıklamasına da bakınız.

          Dosyanın  orjinal  zamanı   yama   başlığında   belirtilen   zamanla
          eşleşmezse  ya  da  onun  içeriği yama ile tam olarak eşleşmezse, -Z
          (--set-utc) ve -T (--set-time)  seçenekleri  bir  dosyanın  zamanını
          ayarlamaktan    kaçınır.   Buna   rağmen   -f   (--force)   seçeneği
          belirtilmişse dosyanın zamanı ne olursa olsun ayarlanır.

          diff çıktı biçiminin  sınırlamalarından  dolayı,  dosyaları  içeriği
          değiştirilmeyecekse,    bu   seçeneklerle   bu   dosyaların   zamanı
          güncellenemez.  Ayrıca,  bu  seçenekleri   kullandığınız   takdirde,
          zamanları  güncellenmiş  dosyalara bağımlı dosyaları kaldırmalısınız
          (make  clean  gibi).  Böylece  sonraki  make  çağrılarında  yamanmış
          dosyaların       zamanlarından      dolayı      hatalarla/uyarılarla
          karşılaşmazsınız.

ORTAM DEĞİŞKENLERİ

       PATCH_GET
          Eksik ya da salt-okunur dosyaların   RCS,  ClearCase  veya  SCCS'den
          öntanımlı olarak alınıp alınmayacağını belirtmek için kullanılır. -g
          (--get) seçeneğinin açıklamasına bakınız.

       POSIXLY_CORRECT
          Bu değişken  atanmışsa  patch  öntanımlı  olarak  POSIX  standardına
          uyumlu davranır. --posix seçeneğinin açıklamasına bakınız.

       QUOTING_STYLE
          --quoting-style seçeneğinin öntanımlı değeridir.

       SIMPLE_BACKUP_SUFFIX
          Bu  ortam  değişkeninin  değeri  basit  yedekleme dosyalarında .orig
          soneki yerine kullanılacak sonektir.

       TMPDIR, TMP, TEMP
          Geçici dosyaları konulacağı  dizindir.  patch  bu  listeden  atanmış
          değerlerden  ilkinin  değeri  kullanır.  Hiçbiri atanmamışsa sisteme
          bağlı öntanımlı değer  kullanılır.  Unix  makinalar  için  bu  değer
          normalde /tmp dizinidir.

       VERSION_CONTROL, PATCH_VERSION_CONTROL
          Sürüm  denetim  tarzını belirtir. -v (--version-control) seçeneğinin
          açıklamasına bakınız.

İLGİLİ DOSYALAR

       /dev/tty
          denetim uçbirimi; kullanıcıya sorulan  soruların  yanıtlarını  almak
          için kullanılır.

       $TMPDIR/p*
          geçici dosyalar

İLGİLİ BELGELER

       diff(1), ed(1).

       Marshall  T.  Rose ve Einar A. Stefferud, Proposed Standard for Message
       Encapsulation,
       Internet RFC 934 <URL: ftp://ftp.isi.edu/innotes/rfc934.txt> (1985-01).

YAMA GÖNDERENLER İÇİN

       Yama  göndermeye  hazırlanıyorsanız,  hatırlamanız gereken bir sürü şey
       olacaktır.

       Yamanızı sistemli olarak oluşturmalısınız. İyi bir yöntem
       diff -Naur eski yeni komutunu kullanmaktır. Burada  eski  ve  yeni  ile
       eski  ve  yeni  dizin isimleri belirtilir. Bu isimler herhangi bir bölü
       çizgisi içermemelidir. diff komutunun başlıkları  yama  uygulayıcıların
       yamayı -Z (--set-utc) seçeneği ile uygulayabilecekleri şekilde Evrensel
       Zamanda geleneksel  Unix  tarih  ve  zaman  biçiminde  içermelidir.  Bu
       örnekte, komut Bourne kabuğu (bash) sözdizimiyle yazılmıştır:

       LC_ALL=C TZ=UTC0 diff -Naur gcc-2.7 gcc-2.8

       Yamanızı uygulayacak olanlara hangi dizine geçip hangi patch seçeneğini
       kullanacağını  söyleyin.  Seçenek   dizgesi   olarak   -Np1   önerilir.
       Yaptığınız  yamayı kendinizi yamayı alacakların yerine koyarak deneyin,
       yani orjinal dosyaların bir kopyasına bu yamayı uygulayın.

       İlk  diff'e  göre  yama  seviyesini   arttırmak   için   yamanmış   bir
       patchlevel.h  dosyası tutmaktan dolayı çok üzgün kişileri gönderdiğiniz
       yama  sayesinde  kazanabilirsiniz.  Yama  içine  bir   Prereq:   satırı
       koyarsanız   onların   sıradışı   yamaları   uygularken  bazı  uyarılar
       almamasını sağlamış olursunuz.

       Bir   dosyanın   yama    uygulanırken    oluşturulmasını    isterseniz,
       oluşturulacak  dosyayı  /dev/null  ile  ya  da  zaman  damgası Unix çağ
       başlangıcına (Epoch: 1970-01-01 00:00:00 UTC) ayarlanmış boş bir  dosya
       ile    karşılaştırılarak   yapılmış   bir   fark   dosyası   ile   bunu
       sağlayabilirsiniz. Bu sadece, oluşturulacak dosya hedef  dizinde  yoksa
       çalışır.  Tersine,  yama  uygulanıren  mevcut  bir dosyanın silinmesini
       isterseniz, silinecek dosyayı yine zaman damgası Unix çağ  başlangıcına
       ayarlanmış  boş  bir  dosya  ile  karşılaştırılarak  yapılmış  bir fark
       dosyası ile  bunu  sağlayabilirsiniz.  Silinmesini  istediğiniz  dosya,
       patch  POSIX  uyumlu  değilse  ve  -E  (--remove-empty-files)  seçeneği
       verilmişse, silinecektir.  Dosyaları  oluşturan  ya  da  silen  yamalar
       üretmenin  kolay  bir  yolu  GNU  diff'in  -N  (--new-file)  seçeneğini
       kullanmaktır.

       Alıcıların -pN seçeneğini kullanacağını varsayıyorsanız, bunun gibi bir
       çıktıya sahip yama göndermeyin:

       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

       Çünkü  burada  eski  ve  yeni dosya isimleri farklı sayıda bölü çizgisi
       içermektedir ve  patch'in  farklı  sürümleri  dosya  isimlerini  farklı
       yorumlarlar.  Karışıklığı  önlemek  için böyle bir çıktı üreten yamalar
       gönderin:

       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

       README.orig gibi yedek dosya ismi  olarak  kullanılabilecek  bir  dosya
       ismi  ile  karşılaştırılarak  üretilmiş  yamalar  göndermekten kaçının.
       Böyle bir  yama  patch'in  gerçek  dosyayı  değil  yedekleme  dosyasını
       yamamasına  yol  açabilir.  Bunun  yerine old/README ve new/README gibi
       farklı dizinlerde bulunan aynı isimli iki dosyayı karşılaştırın.

       Yer değiştirmeli yamalar göndermemeye çalışın.  Böyle  bir  yama  zaten
       uygulanmış bir yama gibi görüneceğinden insanları şaşırtır.

       Yamanızın  türetilerek  elde  edilen  dosyaları  yamamasına dikkat edin
       (makefile'ınızın içinde configure: configure.in diye bir satır var diye
       configure  dosyasını  yamamak  gibi.). Alıcılar bu tür türetilerek elde
       edilen dosyaları zaten kendileri türetebilmelidir.  Türetilen  dosyalar
       için  fark  dosyaları  göndermek  zorundaysanız,  fark  dosyalarını UTC
       kullanarak üretin. Böylece alıcılar yamayı -Z (--set-utc) seçeneği  ile
       uygulayıp  yamanmış  dosyalara  bağımlı  yamanmamış dosyaları kaldırmak
       zorunda kalırlar (make clean yapmak gibi).

       Beşyüzbilmemkaç farklık bir listeyi tek bir dosyaya koymaktan  kaçınmak
       iyi  olurdu.  Birbiriyle  ilgileri  nedeniyle  gruplanabilen dosyalarla
       ilgili yamaları farklı dosyalara koymak akıllıca olur.

TANI İLETİLERİ

       Tanı  iletilerinin   varlığı   genellikle   patch'in   yama   dosyanızı
       çözümleyemediğini belirtir.

       --verbose  seçeneği  verilmişse  bir  Hmm...  iletisi,  yama dosyasında
       işlenemeyen bir metinin varlığını ve patch'in bu metin içinde bir  yama
       var  mı  acaba,  varsa  bu  ne  tür  bir yamadır acaba diye bir saptama
       yapmaya çalıştığını gösterir.

       patch'in çıkış  durumu  0  ise,  listedeki  yamaların  hepsi  başarıyla
       uygulanmış  demektir. 1 ise bazıları uygulanamamıştır. 2 ise biraz daha
       fazla sorun vardır. Bir döngü içinde çok sayıda yama uyguluyorsanız her
       seferinde  bu çıkış durumuna bakmanız icabeder, böylece kısmen yamanmış
       dosyalara sonraki yamayı uygulamamış olursunuz.

YETERSİZLİKLER

       Bağlamsal fark  dosyaları  boş  dosyaların  ve  boş  dizinlerin  ya  da
       sembolik  bağ  gibi  özel  dosyaların  oluşturulması  ve silinmesi için
       güvenilir  bir  içerik  sunamazlar.  Sahiplik,  dosya   izinleri   gibi
       dosyaların  temel verilerinde bir değişiklik bilgisi sunamadıkları gibi
       bir dosyanın başka bir dosyaya sabit bağ mı olacağı gibi  bilgileri  de
       içeremezler.  Bu tür değişiklikler gerekliyse, bunları gerçekleştirecek
       bir betik yamaya eşlik etmelidir.

       patch, bir  ed  betiğinde  olmayan  satır  numaraları  hakkında  birşey
       söyleyemediği gibi, bir normal fark dosyasında da sadece bir değişiklik
       ya da silme işlemi  bulursa  hatalı  satır  numaralarını  saptayabilir.
       Belirsizlik  faktörü  olarak 3 verildiğinde bağlamsal fark dosyaları da
       sorun yaratabilir. Elverişli bir etkileşimli arayüz eklenene kadar, bir
       bağlamsal   fark   dosyasının   böyle   bir   durumda   sorun   çıkarıp
       çıkarmayacağını kendiniz saptamalısınız. Şüphesiz, hatasız  gerçekleşen
       bir  derleme  işlemi  yamanın  hatasız  uygulandığını  gösteriyor  gibi
       görünse de bu daima böyle olmaz.

       patch, bazan biraz fazla tahmin yapması gerekse bile  genellikle  doğru
       sonuçlar   üretir.  Yine  de,  yamanın  üretildiği  dosya  ile  yamanın
       uygulandığı dosya aynı sürüme ait olduğu zaman sonuçların doğru olacağı
       garanti edilmiştir.

UYUMLULUK BİLGİLERİ

       POSIX  standardı,  patch'in geleneksel davranışından farklı davranışlar
       belirtir.  patch'in  POSIX  uyumluluğu  olmayan  2.1  ve  daha   önceki
       sürümleri  ile  çalışmak  zorundaysanız  bu farklardan haberdar olmanız
       gerekir.

       ·  Geleneksel patch'de -p seçeneğinin terimi  isteğe  bağlıdır.  Yalnız
          başına   -p  seçeneği  -p0'a  eşdeğerdir.  Şimdiki  durumda  ise  -p
          seçeneğinin bir terime sahip olması zorunludur ve -p 0 seçeneği  -p0
          seçeneğine  eşdeğerdir.  En yüksek derecede uyumluluk adına seçeneği
          -p0 ve -p1 gibi kullanın.

          Ayrıca, geleneksel patch dosya yolunu  saptarken  bölü  çizgilerinin
          sayısına  bakarken yeni sürümleri dosya yolunu oluşturan elemanların
          sayısına bakmaktadır.  Bundan  dolayı,  birden  fazla  yanyana  bölü
          çizgisi  tek  bir  bölü  çizgisi  olarak ele alınmaktadır. En yüksek
          derecede  uyumluluk  adına  gönderilen  yamaların   içindeki   dosya
          isimlerinde // olmamasına dikkat edin.

       ·  Geleneksel patch'de yedekleme öntanımlı olarak etkindir. Bu davranış
          şimdi sadece -b (--backup) seçeneği ile etkin kılınabilmektedir.

          Bunun tersine, POSIX patch'de bir eşleşmeme olsa bile yedekleme asla
          yapılmaz.  GNU  patch'de  bu davranış  --posix seçeneği kullanılarak
          yahut POSIXLY_CORRECT ortam  değişkeninin  varlığı  sayesinde  POSIX
          uyumluluğu sağlanarak aksi takdirde --no-backup-if-mismatch seçeneği
          ile etkinleştirilir.

          Geleneksel patch'in -b sonek seçeneği ile GNU patch'in -b  -z  sonek
          seçenekleri eşdeğerdir.

       ·  Geleneksel patch yama başlığından yamanacak dosyanın ismini öğrenmek
          için karmaşık (ve iyi belgelenmemiş) bir yöntem kullanır. Bu  yöntem
          POSIX ile uyumlu olmadığı gibi, birkaç yanlış gibi görünmeyen yanlış
          içerir. Şimdi patch aynı karmaşıklıkta (ama daha iyi belgelenmiş) ve
          isteğe bağlı olarak POSIX uyumlu olabilen bir yöntem kullanmaktadır;
          onun  artık  daha  az  yanlış  gibi  görünmeyen  yanlış   içerdiğini
          düşünüyoruz.   Bağlamsal   fark   dosyasının  başlığında  ve  Index:
          satırında dosya isimlerinden önek ayırması yapıldıktan  sonra  kalan
          dosya isimleri aynı ise bu iki yöntem birbiriyle uyumludur. Yamanız,
          her başlıktaki dosya isimleri eşit sayıda bölü  çizgisi  içeriyorsa,
          normal olarak uyumludur.

       ·  Geleneksel  patch  kullanıcıya  bir  soru  yönelteceği  zaman soruyu
          standart hataya gönderir ve yanıtı bir  uçbirim  olarak  sırayla  şu
          dosyalarda arar: standart hata, standart çıktı, /dev/tty ve standard
          girdi. Şimdi  ise  patch  soruyu  standart  çıtıya  gönderip  yanıtı
          /dev/tty'den    okur.    Bazı    soruların    öntanımlı    yanıtları
          değiştirilmiştir, böyle öntanımlı  yanıtları  olan  sorularda  patch
          artık sonsuz bir döngüye girip yanıt beklememektedir.

       ·  Geleneksel   patch   gerçek  bir  hata  durumunda  1  ile  dönerken,
          uygulanamayan yamalar olduğunda bunların sayısını belirten bir çıkış
          değeri  ile döner. Şimdi ise patch uygulanamayan yamalar olduğunda 1
          ile, gerçek bir sorun olması durumunda 2 çıkış değeri ile döner.

       ·  GNU patch, geleneksel patch ve POSIX uyumlu patch  için  ortak  olan
          seçeneklerle kendinizi sınırlarsanız iyi olur. Bu seçenekler aşağıda
          listelenmiştir. Terimli seçeneklerde terimler  zorunludur  ve  terim
          ile seçenek arasındaki boşluğun olup olmaması önemlidir.

          -c
          -d dizin
          -D tanm
          -e
          -l
          -n
          -N
          -o ktdosyas
          -psay
          -R
          -r reddosyas

YAZILIM HATALARI

       Yazılım  hatalarını  lütfen  eposta  ile  <bug-gnu-utils  (at) gnu.org>
       adresine bildiriniz.

       patch kısmî eşleşmelerde, aşırı kaymış başlangıç  konumlarında  ve  yer
       değiştirmelerde  daha  çevik  olmalıydı  ama  bu  işlemler ek bir geçiş
       gerektiriyor.

       Kod eğer yinelenmişse (örneğin, #ifdef ESKİKOD ...  #else  ...   #endif
       ile)  patch  her  iki  sürümüde yamayamayacatır ve bu her ikisi için de
       uygulanabiliyorsa, yanlış sürüm yamanabilecek ve size işlemin  başarılı
       olduğunu söylececektir.

       Evvelce   uygulanmış   bir   yamayı  uygularsanız,  patch  yamanın  yer
       değiştirmeli yama olarak uygulanacağını varsayabilir ve size bu  yamayı
       uygulamamayı teklif eder. Bu bir özellik olarak yorumlanabilirdi.

KOPYALAMA

       Telif Hakkı © 1984, 1985, 1986, 1988 Larry Wall.
       Telif  Hakkı ©  1989,  1990,  1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998 Free Software Foundation, Inc.

       Bu kılavuzun harfi harfine kopyalanmasına ve dağıtılmasına telif  hakkı
       uyarısının  ve  bu  izin uyarısının tüm kopyalarında bulunması şartıyla
       izin verilmiştir.

       Bu kılavuzun değiştirilmiş kopyalarının  kopyalanması  ve  dağıtılması,
       türetilmiş  çalışmanın  sonuçlarının tamamı, harfi harfine kopyalamanın
       koşullarını içererek ve buna eşdeğer bir  izin  uyarısı  da  sağlandığı
       takdirde izin verilmiştir.

       Bu kılavuzun diğer dillere çevirilerinin kopyalanması ve dağıtılmasına,
       bu izin uyarısının bulunduğu orjinal ingilizce  sürümdeki  telif  hakkı
       sahipleri  tarafından onaylanmış bir çeviri değilse, yukarıda açıklanan
       değiştirilmiş   sürümlerinin   koşulları   sağlandığı   takdirde   izin
       verilmiştir.

COPYING

       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.

YAZARLAR

       patch'in  orjinal sürümü Larry Wall tarafından yazılmıştır. Paul Eggert
       patch'in keyfî sınırlarını kaldırdı; ikilik  dosyaların  desteklenmesi,
       dosya   zamanlarının  ayarlanması,  dosyaları  silinmesi  özelliklerini
       ekledi; ve daha iyi POSIX uyumluluğu sağladı. Diğer  destekleyicilerden
       Wayne  Davison  unidiff  desteğini,  David  MacKenzie  yapılandırma  ve
       yedekleme desteklerini sağladı.

ÇEVİREN

       Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Ağustos 2004