Provided by: manpages-tr_1.0.5.1-2_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