Provided by: manpages-tr_2.0.6-2_all bug

İSİM

       patch - yama dosyasını uygular

KULLANIM

       patch [seçenekler] [özgün [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 özgün  dosyaya  uygulayarak  özgün  dosyaların  yamalı  sürümlerini  üretir.
       Normalde  yamalı sürümler özgün 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 özgün 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 boru
       ile ed(1) metin düzenleyicisine 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.)

       Sonek bağlamından daha az önek içeriğine sahip olan yama parçaları (belirsizlik uygulandıktan sonra), ilk
       satır numarası 1 ise dosyanın başlangıcına uygulanmalıdır. Önek bağlamından daha az sonek içeriğine sahip
       olan yama parçaları ise (belirsizlik uygulandıktan sonra) dosyanın sonuna uygulanmalıdır.

       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.)

       Reddedilen  parça,  birleşik veya bağlam farkı biçeminde çıkar. Girdi normal bir farksa, bağlamların çoğu
       basitçe boştur. 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  özgün  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 en iyi isim seçilir.

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

         •  Belirtilen  dosya  mevcut  değilse,  bir RCS, ClearCase, Perforce 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 bir dosya ismi seçilememişse, yamanacak dosyanın ismi size sorulur
            ve patch dosya ismini buna göre seçer.

       Belirtilen  dosyalar  listesinden  "en iyi" 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, bunlardan 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 numarasıdır) alır ve özgün 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 dosya yama dosyasıyla yamanır.

       Eğer yama dosyası bir yamadan fazlasını içeriyorsa patch onların her birini 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

       Uzun seçenekler için zorunlu olan girdiler kısa seçenekler için de zorunludur.

       -b, --backup
           Dosyaların  yedeğini  oluşturur.  Bir  dosya  yamanırken  özgün  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, --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 ikil  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, --directory=dizin
           Hiçbir şey yapmadan, hemen dizine geçilir.

       -D , --ifdef=tanım
           Değişiklikleri işaretlemede #ifdef ... #endif yapısı tanım farklılaştırma simgesi 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 , --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 , --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 öntanımlı değer sıfırdır.

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

       -i, --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.

       --merge, -merge=merge, -merge=diff3
           < Yama dosyasını özgün dosyaya diff3(1) veya merge(1) gibi uygular. Bir çelişki bulunursa  patch  bir
           uyarı  çıktılar  ve  çelişkiyi  <<<<<<< ve >>>>>>> satırları arasına yerleştirir. Bir çelişki genelde
           şuna benzer:

              <<<<<<<
              özgün dosyadaki satırlar
              |||||||
              yamadaki özgün satırlar
              =======
              yamadaki yeni satırlar
              >>>>>>>

           --merge seçeneğinin seçimlik girdisi  çelişkinin  çıktılanma  biçemini  değiştirir:  diff3  biçeminde
           |||||||  bölümünden  sonra yamadaki özgün satırlar gösterilir; merge biçeminde, bu bölüm olmaz. merge
           biçemi öntanımlıdır.

           Bu seçenek --forward seçeneğini de uygularken --fuzz=sayı seçeneğini yok sayar.

       -n, --normal
           Yama dosyası, normal 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, --output=çıktıdosyası
           Dosyaların yerinde yamanması yerine çıktı, çıktıdosyası dosyasına gönderilir.

       -p, --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=sözcük
           Çıktılanan  isimler  sarmalanırken  sözcük  ile  belirtilen  tarz  kullanılır.  sözcük ş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, --reject-file=reddosyası
           Reddedilenler  öntanımlı  .rej dosyası yerine reddosyasına konulur. reddosyası olarak - belirtilmişse
           reddedilenler yok sayılır.

       -R, --reverse
           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.)

       --read-only=davranış
           Salt-okunur bir dosyada değişiklik yapılırken belirtilen davranışa uyulur: ignore ise olası  sorunlar
           yok sayılır, warn ise bu konuda uyarır, fail ise işlem başarısız olur.

       reject-format=biçem
           Reddedilenler  dosyaları belirtilen biçemde üretir (context veya unified). Bu seçenek olmaksızın yama
           unified (birleşik) ise reddedilen parçalar da unified diff biçeminde  olur.  Aksi  takdirde,  context
           (bağlamsal) diff biçeminde olur.

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

       --follow-symlinks
           Girdi  dosyalarını  aranırken  sembolik  bağlar  izlenir.  Sembolik  bağların işaret ettiği dosyaları
           değiştirmek  yerine  sembolik  bağları  değiştirir.  Sembolik  bağlara  Git   tarzı   yamalar   artık
           uygulanmamaktadır.  Bu  seçenek,  yamanın  önceki sürümleriyle geriye dönük uyumluluk için mevcuttur;
           kullanımı önerilmez.

       -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ünü ve yama seviyesini basar ve çıkar.

       -V, --version-control=yöntem
           Yedek dosya isimleri saptanırken yöntem 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.

           yöntem  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  yöntem  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, --debug=sayı
           Sadece patch yamacılarını ilgilendiren hata ayıklama seçeneklerini belirtmek için kullanılır.

       -Y, --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, --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  özgün  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, Perforce 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: http://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  eğik çizgi ç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çeminde 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
       özgün 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, böyle bir çıktıya sahip yamayı 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üz bilmem kaç 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 tanım
               -e
               -l
               -n
               -N
               -o çıktıdosyası
               -psayı
               -R
               -r reddosyası

YAZILIM HATALARI

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

       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.

       Bir  yama  parçasının  nasıl birleştirileceğini hesaplamak, standart bulanık algoritmayı kullanmaktan çok
       daha zordur. Daha büyük parçalar, daha fazla bağlam, özgün konumdan daha büyük bir sapma ve daha kötü bir
       eşleşme, algoritmayı yavaşlatır.

TELİF HAKKI VE LİSANS

       Telif Hakkı © 1984, 1985, 1986, 1988 Larry Wall.
       Telif hakkı © 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,  2001,  2002,  2009
       Free     Software    Foundation,    Inc.    Lisans    GPLv3+:    GNU    GPL    sürüm    3    veya    üstü
       <http://gnu.org/licenses/gpl.html>.  Bu  bir  özgür  yazılımdır:  yazılımı  değiştirmek   ve   dağıtmakta
       özgürsünüz. Yasaların izin verdiği ölçüde HİÇBİR GARANTİ YOKTUR.

YAZARLAR

       patch’in özgün 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ı. Andreas Grünbacher birleştirme desteğini
       sağladı.

ÇEVİREN

       © 2022 Nilgün Belma Bugüner
       Bu çeviri özgür yazılımdır: Yasaların izin verdiği ölçüde HİÇBİR GARANTİ YOKTUR.
       Lütfen, çeviri ile ilgili bildirimde bulunmak veya çeviri yapmak  için  https://github.com/TLBP/manpages-
       tr/issues adresinde "New Issue" düğmesine tıklayıp yeni bir konu açınız ve isteğinizi belirtiniz.

patch 2.7.6                                        Şubat 2018                                           PATCH(1)