.\" http://belgeler.org \- 2009\-10\-29T15:35:43+02:00 .TH "patch" 1 "21 Mart 1998" "GNU" "" .nh .PD 0 .SH İSİM patch \- bir yama dosyasını orjinaline uygular .SH KULLANIM .nf \fBpatch\fR [\fIseçenekler\fR] [\fIorjinal\fR [\fIyama\fR]] .fi genellikle şöyle kullanılır: .nf \fBpatch \-p\fR\fIsayı \fR\fB<\fR\fIyama\fR .fi .SH AÇIKLAMA \fBpatch\fR, \fBdiff(1)\fR 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; \fB\-b\fR ve \fB\-\-backup\fR 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 \fIorjinal\fR olarak belirtilebilir. \fBpatch\fR çalıştırıldığında fark listesinin türü \fB\-c\fR (\fB\-\-context\fR), \fB\-e\fR (\fB\-\-ed\fR), \fB\-n\fR (\fB\-\-normal\fR) veya \fB\-u\fR (\fB\-\-unified\fR) seçenekleri ile belirtilmemişse önce fark listesinin türünü saptamaya çalışır. \fBed\fR fark dosyaları bir boruhattı ile \fBed(1)\fR metin düzenleyicisi üzerinden uygulanırken, bağlamsal fark dosyaları (eski, yeni ve birleşik) ve normal fark dosyaları doğrudan \fBpatch\fR tarafından uygulanır. \fBpatch\fR 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\N'39'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 \fBpatch\fR, 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. \fBpatch\fR 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\N'39'dir.) \fBpatch\fR yamanın uygulanacağı yeri bulamazsa, uygulayamadığı bölümü bir red dosyasına yazar. Bu dosyanın ismi normalde yama dosyasının ismine \fB.rej\fR eklenerek elde edilir. Eğer \fB.rej\fR eki çok uzun bir dosya ismi oluşturacaksa dosya isminin sonuna \fB#\fR eklenir, bu karakter de fazla geliyorsa dosya isminin son karakteri \fB#\fR 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. \fB\-\-verbose\fR 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 \fBpatch\fR, 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: .IP \fB·\fR 3 Başlık bir bağlamsal fark dosyası başlığı ise, \fBpatch\fR eski ve yeni dosya isimlerini başlıktan alır. Eğer isimdeki bölü çizgilerinin sayısı \fB\-p\fR\fIsayı\fR veya \fB\-\-strip=\fR\fIsayı\fR seçenekleri ile belirtilen kadar değilse bu isim yoksayılır. \fB/dev/null\fR ismi de ayrıca yoksayılır. .IP \fB·\fR 3 Yama olarak uygulanacak alanların dışında \fBIndex:\fR ile başlayan satırlar varsa ve hem yeni hem de eski dosya isimleri belirtilmemişse veya \fBpatch\fR POSIX uyumlu ise, \fBpatch\fR dosya isimlerini \fBIndex:\fR ile başlayan satırlardan alır. .IP \fB·\fR 3 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. .PP \fBpatch\fR bir dosya ismini aday dosya listesinden şu kurallara göre seçer: .IP \fB·\fR 3 Bazı isimli dosyalar mevcutsa, \fBpatch\fR POSIX uyumluysa ilk dosya ismi değilse eniyi isim seçilir. .IP \fB·\fR 3 Eğer \fBpatch\fR RCS, ClearCase ve SCCS\N'39'yi yoksaymıyorsa (\fB\-g \fR\fIsayı\fR veya \fB\-\-get=\fR\fIsayı\fR seçeneklerine bakınız) ve isimli bir dosya mevcut değilse ama bir RCS, ClearCase veya SCCS ana dosyası varsa \fBpatch\fR ilk isimli dosyayı RCS, ClearCase veya SCCS ana dosyası ile seçer. .IP \fB·\fR 3 İsimli dosya mevcut değilse, bir RCS, ClearCase veya SCCS ana dosyası da yoksa ama bazı dosya isimleri verilmişse, \fBpatch\fR POSIX uyumlu değilse ve yamanın bir dosya oluşturması gerekiyorsa, \fBpatch\fR en az dizin oluşturulacak şekilde en iyi dosya ismini seçer. .IP \fB·\fR 3 Şimdiye dek bahsedilen kurallarla hal bir dosya ismi seçilememişse, yamanacak dosyanın ismi size sorulur ve \fBpatch\fR dosya ismini buna göre seçer. .PP İ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 \fBPrereq:\fR ile başlayan bir satır varsa, \fBpatch\fR 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 \fBpatch\fR işine devam etmeden önce bir doğrulama isteği yapar. Tüm bunların nihayetinde, şöyle bir bildirim de yapabilirsiniz: .nf \fB| patch \-d /usr/src/local/blurfl\fR .fi ve, \fBblurfl\fR dizinindeki bir dosya yama dosyasıyla yamanır. Eğer yama dosyası bir yamadan fazlasını içeriyorsa \fBpatch\fR 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. .SH SEÇENEKLER .br .ns .TP 3 \fB\-b\fR, \fB\-\-backup\fR 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 \fB\-V\fR veya \fB\-\-version\-control\fR seçeneklerinin açıklamalarında bulunabilir. .TP 3 \fB\-\-backup\-if\-mismatch\fR Yama bir dosya ile tam uyuşmazsa ve yedekleme istenmese de dosya yedeklenir. \fBpatch\fR POSIX uyumlu değilse bu seçenek öntanımlı olarak uygulanır. .TP 3 \fB\-\-no\-backup\-if\-mismatch\fR Yama bir dosya ile tam uyuşmazsa ve yedekleme istense de dosya yedeklenmez. \fBpatch\fR POSIX uyumlu değilse bu seçenek öntanımlı olarak uygulanır. .TP 3 \fB\-B \fR\fIönek\fR, \fB\-\-prefix=\fR\fIönek\fR Basit yedek dosya ismi oluşturulurken dosya isminin önüne \fIönek\fR getirilir. Örneğin, \fB\-B /junk/\fR 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. .TP 3 \fB\-\-binary\fR 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 \fBdiff \-a \-\-binary\fR ile üretilmiş olmalıdır. .TP 3 \fB\-c\fR, \fB\-\-context\fR Yama dosyası sıradan bir bağlamsal fark dosyası olarak yorumlanır. .TP 3 \fB\-d \fR\fIdizin\fR, \fB\-\-directory=\fR\fIdizin\fR Hiçbir şey yapmadan, hemen \fIdizin\fR dizinine geçilir. .TP 3 \fB\-D \fR\fItanım\fR, \fB\-\-ifdef=\fR\fItanım\fR Değişiklikleri işaretlemede \fB#ifdef ... #endif\fR yapısı \fItanım\fR farklılaştırma sembolü ile kullanılır. .TP 3 \fB\-\-dry\-run\fR Hiçbir dosyada değişiklik yapmaksızın uygulanan yamaların sonuçları basılır. .TP 3 \fB\-e\fR, \fB\-\-ed\fR Yama dosyası bir \fBed\fR betiği olarak yorumlanır. .TP 3 \fB\-E\fR, \fB\-\-remove\-empty\-files\fR Yama uygulandıktan sonra boşalan dosyalar silinir. Aslında, bu seçenek gereksizdir, çünkü \fBpatch\fR 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 \fBpatch\fR POSIX uyumlu ise, \fBpatch\fR bu seçenek verilmedikçe yamandıktan sonra boşalan dosyaları silmez. \fBpatch\fR böyle bir dosyayı sildikten sonra boşalmışsa dosyanın bulunduğu dizini de silmeye çalışır. .TP 3 \fB\-f\fR, \fB\-\-force\fR 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; \fBPrereq:\fR 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 \fB\-s\fR seçeneğine bakınız. .TP 3 \fB\-F \fR\fIsayı\fR, \fB\-\-fuzz=\fR\fIsayı\fR En büyük belirsizlik faktörünü belirtmekte kullanılır. Bu seçenek sadece bağlamsal fark dosyalarına uygulanır ve \fBpatch\fR 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\N'39'dir ve bağlamsal fark dosyalarında bağlamsal satır sayısından daha yüksek bir değer (genelde 3\N'39'tür) atanmamalıdır. .TP 3 \fB\-g \fR\fIsayı\fR, \fB\-\-get=\fR\fIsayı\fR 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, \fBpatch\fR\N'39'in eylemlerini denetlemekte kullanılır. \fIsayı\fR pozitifse, \fBpatch\fR 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 \fBpatch\fR POSIX uyumluysa öntanımlı değer sıfır, aksi takdirde negatiftir. .TP 3 \fB\-\-help\fR Seçeneklerin bir özetini basar ve çıkar. .TP 3 \fB\-i \fR\fIyamadosyası\fR, \fB\-\-input=\fR\fIyamadosyası\fR Yama \fIyamadosyası\fR dosyasından okunur. \fIyamadosyası\fR olarak \- verilmişse öntanımlı olarak standart girdi okunur. .TP 3 \fB\-l\fR, \fB\-\-ignore\-whitespace\fR 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. .TP 3 \fB\-n\fR, \fB\-\-normal\fR Yama dosyası normal bir yama dosyası olarak yorumlanır. .TP 3 \fB\-N\fR, \fB\-\-forward\fR Eski ve yeni dosyaların yer değiştirileceği görünen veya zaten uygulanmış yamalar yoksayılır. \fB\-R\fR seçeneğine de bakınız. .TP 3 \fB\-o \fR\fIçıktıdosyası\fR, \fB\-\-output=\fR\fIçıktıdosyası\fR Dosyaların yerinde yamanması yerine çıktı, \fIçıktıdosyası\fR dosyasına gönderilir. .TP 3 \fB\-p \fR\fIsayı\fR, \fB\-\-strip=\fR\fIsayı\fR Yama dosyasında bulunan her dosya isminin başından \fIsayı\fR 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: .IP .RS .nf \fB/u/howard/src/blurfl/blurfl.c\fR .fi .RE .IP Seçenek \fB\-p0\fR olarak verilirse bu dizge olduğu gibi ele alınır, \fB\-p1\fR verilirse, .IP .RS .nf \fBu/howard/src/blurfl/blurfl.c\fR .fi .RE .IP baştaki bölü çizgisi atılır, \fB\-p4\fR verilirse, .IP .RS .nf \fBblurfl/blurfl.c\fR .fi .RE .IP olur. \fB\-p\fR hiç belirtilmezse sonuç \fBblurfl.c\fR olacaktır. Bu durumda dosya yamanın bulunduğu dizinde aranacağından dosya daha farklı bir yerdeyse bu da \fB\-d\fR seçeneği ile belirtilebilir. .TP 3 \fB\-\-posix\fR POSIX standardına kesinlikle uyulur: .RS 3 .IP \fB·\fR 3 Fark dosyası başlıklarından dosya isimleri öğrenilirken, listedeki (eski, yeni, birleşik) ilk mevcut dosya alınır. .IP \fB·\fR 3 Yamandıktan sonra boşalan dosyalar silinmez. .IP \fB·\fR 3 RCS, ClearCase veya SCCS\N'39'deki dosyalar için alınacak mı diye sormaz. .IP \fB·\fR 3 Komut satırında seçeneklerin dosyalardan önce verilmesi gerekir. .IP \fB·\fR 3 Eşleşmeyen dosyaların yedeklemesi yapılmaz. .PP .RE .IP .TP 3 \fB\-\-quoting\-style=\fR\fIsözcük\fR Çıktılanan isimler sarmalanırken \fIsözcük\fR ile belirtilen tarz kullanılır. \fIsözcük\fR şunlardan biri olabilir: .RS 3 .br .ns .TP \fBliteral\fR İsimler olduğu gibi çıktılanır. .TP \fBshell\fR İsimler kabuk metakarakterleri içeriyorsa kabuk için sarmalanır yoksa anlamı belirsiz çıktılama yapılır. .TP \fBshell\-always\fR Normalde sarmalanmaları gerekmese bile isimler daima kabuk için sarmalanır. .TP \fBc\fR İsimler C dilinde dizgelere uygulandığı gibi sarmalanır. .TP \fBescape\fR İsimler çevreleyen çifttırnakların ihmal edilmesi dışında \fBc\fR tarzındaki gibi sarmalanır. .PP .RE .IP .IP \fB\-\-quoting\-style\fR seçeneği için öntanımlı değeri \fBQUOTING_STYLE\fR ortam değişkeninde belirtebilirsiniz. Bu ortam değikeni atanmamışsa öntanımlı değer \fBshell\fR\N'39'dir. .TP 3 \fB\-r \fR\fIreddosyası\fR, \fB\-\-reject\-file=\fR\fIreddosyası\fR 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. \fB\-R\fR seçeneği \fBed\fR 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, \fBpatch\fR 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 \fB\-R\fR seçeneğinin uygulanmasını isteyip istemediğini sorar. Uygulanamıyorsa, \fBpatch\fR 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.) .TP 3 \fB\-s\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR Bir hata oluşmadıkça bilgilendirici hiçbir şey çıktılanmaz. .TP 3 \fB\-t\fR, \fB\-\-batch\fR \fB\-f\fR 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 (\fB\-f\fR ile aynı); yamanın \fBPrereq:\fR 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. .TP 3 \fB\-T\fR, \fB\-\-set\-time\fR 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 \fB\-Z\fR veya \fB\-\-set\-utc\fR seçeneklerini kullanarak zamanı UTC\N'39'ye göre belirtmeyi tercih edin. .TP 3 \fB\-u\fR, \fB\-\-unified\fR Yama dosyası birleşik bağlamsal fark dosyası olarak yorumlanır. .TP 3 \fB\-v\fR, \fB\-\-version\fR \fBpatch\fR\N'39'in sürüm başlığını ve ama seviyesini basar ve çıkar. .TP 3 \fB\-V \fR\fIyöntem\fR, \fB\-\-version\-control=\fR\fIyöntem\fR Yedek dosya isimleri saptanırken \fIyöntem\fR kullanılır. Bu yöntem ayrıca bu seçenek ile gerektiğinde değiştirilmek üzere \fBPATCH_VERSION_CONTROL\fR (veya bu atanmamışsa \fBVERSION_CONTROL\fR) 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. \fIyöntem\fR değeri GNU Emacs\N'39'ın \N'96'version\-control\N'39' değişkeni gibidir; farklı olarak \fBpatch\fR daha açıklayıcı olan eşanlamlılarını da tanır. Geçerli \fIyöntem\fR değerleri şunlardır (eşsiz kısaltmalar da kabul edilir): .RS 3 .br .ns .TP \fBexisting\fR, \fBnil\fR Zaten varolan dosyaların numaralı yedekleri yapılır, aksi takdirde basit yedekleme yapılır. Bu öntanımlıdır. .TP \fBnumbered\fR, \fBt\fR Numaralı yedekleme yapılır. F dosyasının yedek dosyası N sürüm numarasını belirtmek üzere F.~N~ biçiminde isimlendirilir. .TP \fBsimple\fR, \fBnever\fR Basit yedekleme yapılır. \fB\-B\fR (\fB\-\-prefix\fR), \fB\-Y\fR (\fB\-\-basename\-prefix\fR) ve \fB\-z\fR (\fB\-\-suffix\fR) seçenekleri ile basit yedek dosyası ismi belirtilebilir. Bu seçeneklerin hiçbiri belirtilmemişse, basit yedekleme soneki kullanılır; sonek değeri \fBSIMPLE_BACKUP_SUFFIX\fR ortam değişkeni ile belirtilmemişse öntanımlı olarak \fB.orig\fR soneki kullanılır. .PP .RE .IP .IP Numaralı ve basit yedeklemede dosya ismi çok uzun olursa bunlar yerine sonek olarak \fB~\fR kullanılır, bu işlem de dosya isminin çok uzun olmasına sebep oluyorsa dosya ismindeki son karakter \fB~\fR karakteri ile değiştirilir. .TP 3 \fB\-\-verbose\fR Yapılan işlem hakkında daha ayrıntılı bilgi verilir. .TP 3 \fB\-x \fR\fIsayı\fR, \fB\-\-debug=\fR\fIsayı\fR Sadece \fBpatch\fR yamacılarını ilgilendiren hata ayıklama seçeneklerini belirtmek için kullanılır. .TP 3 \fB\-Y \fR\fIönek\fR, \fB\-\-basename\-prefix=\fR\fIönek\fR Basit yedek dosyası ismi oluşturulurken dizinlerden arındırılmış dosya isminin önüne \fIönek\fR getirilir. Örneğin basit yedek dosya ismi \fB\-Y .del/\fR ile belirtilmişse \fBsrc/patch/util.c\fR dosyasının ismi \fBsrc/patch/.del/util.c\fR yapılır. .TP 3 \fB\-z \fR\fIsonek\fR, \fB\-\-suffix=\fR\fIsonek\fR Basit yedek dosyası ismi oluşturulurken dosya isminin sonuna \fIsonek\fR getirilir. Örneğin basit yedek dosya ismi \fB\-z \-\fR ile belirtilmişse \fBsrc/patch/util.c\fR dosyasının ismi \fBsrc/patch/util.c\-\fR yapılır. Yedekleme soneki gerektiğinde bu seçenek ile değiştirilmek üzere \fBSIMPLE_BACKUP_SUFFIX\fR ortam değişkeni ile de atanabilir. .TP 3 \fB\-Z\fR, \fB\-\-set\-utc\fR 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 \fB\-T\fR veya \fB\-\-set\-time\fR 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, \fB\-Z\fR (\fB\-\-set\-utc\fR) ve \fB\-T\fR (\fB\-\-set\-time\fR) seçenekleri bir dosyanın zamanını ayarlamaktan kaçınır. Buna rağmen \fB\-f\fR (\fB\-\-force\fR) seçeneği belirtilmişse dosyanın zamanı ne olursa olsun ayarlanır. \fBdiff\fR çı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 (\fBmake clean\fR gibi). Böylece sonraki \fBmake\fR çağrılarında yamanmış dosyaların zamanlarından dolayı hatalarla/uyarılarla karşılaşmazsınız. .PP .SH ORTAM DEĞİŞKENLERİ .br .ns .TP 3 \fBPATCH_GET\fR Eksik ya da salt\-okunur dosyaların RCS, ClearCase veya SCCS\N'39'den öntanımlı olarak alınıp alınmayacağını belirtmek için kullanılır. \fB\-g\fR (\fB\-\-get\fR) seçeneğinin açıklamasına bakınız. .TP 3 \fBPOSIXLY_CORRECT\fR Bu değişken atanmışsa \fBpatch\fR öntanımlı olarak POSIX standardına uyumlu davranır. \fB\-\-posix\fR seçeneğinin açıklamasına bakınız. .TP 3 \fBQUOTING_STYLE\fR \fB\-\-quoting\-style\fR seçeneğinin öntanımlı değeridir. .TP 3 \fBSIMPLE_BACKUP_SUFFIX\fR Bu ortam değişkeninin değeri basit yedekleme dosyalarında \fB.orig\fR soneki yerine kullanılacak sonektir. .TP 3 \fBTMPDIR, TMP, TEMP\fR Geçici dosyaları konulacağı dizindir. \fBpatch\fR 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 \fB/tmp\fR dizinidir. .TP 3 \fBVERSION_CONTROL, PATCH_VERSION_CONTROL\fR Sürüm denetim tarzını belirtir. \fB\-v\fR (\fB\-\-version\-control\fR) seçeneğinin açıklamasına bakınız. .PP .SH İLGİLİ DOSYALAR .br .ns .TP 3 \fB/dev/tty\fR denetim uçbirimi; kullanıcıya sorulan soruların yanıtlarını almak için kullanılır. .TP 3 \fI$TMPDIR/\fR\fBp*\fR geçici dosyalar .PP .SH İLGİLİ BELGELER \fBdiff(1)\fR, \fBed(1)\fR. Marshall T. Rose ve Einar A. Stefferud, Proposed Standard for Message Encapsulation, .br Internet RFC 934 (1985\-01). .SH 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 .br \fBdiff \-Naur \fR\fIeski yeni\fR komutunu kullanmaktır. Burada \fIeski\fR ve \fIyeni\fR ile eski ve yeni dizin isimleri belirtilir. Bu isimler herhangi bir bölü çizgisi içermemelidir. \fBdiff\fR komutunun başlıkları yama uygulayıcıların yamayı \fB\-Z\fR (\fB\-\-set\-utc\fR) seçeneği ile uygulayabilecekleri şekilde Evrensel Zamanda geleneksel Unix tarih ve zaman biçiminde içermelidir. Bu örnekte, komut Bourne kabuğu (\fBbash\fR) sözdizimiyle yazılmıştır: .nf \fBLC_ALL=C TZ=UTC0 diff \-Naur gcc\-2.7 gcc\-2.8\fR .fi Yamanızı uygulayacak olanlara hangi dizine geçip hangi \fBpatch\fR seçeneğini kullanacağını söyleyin. Seçenek dizgesi olarak \fB\-Np1\fR ö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\N'39'e göre yama seviyesini arttırmak için yamanmış bir \fBpatchlevel.h\fR dosyası tutmaktan dolayı çok üzgün kişileri gönderdiğiniz yama sayesinde kazanabilirsiniz. Yama içine bir \fBPrereq:\fR 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ı \fB/dev/null\fR 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, \fBpatch\fR POSIX uyumlu değilse ve \fB\-E\fR (\fB\-\-remove\-empty\-files\fR) seçeneği verilmişse, silinecektir. Dosyaları oluşturan ya da silen yamalar üretmenin kolay bir yolu GNU \fBdiff\fR\N'39'in \fB\-N\fR (\fB\-\-new\-file\fR) seçeneğini kullanmaktır. Alıcıların \fB\-p\fR\fIN\fR seçeneğini kullanacağını varsayıyorsanız, bunun gibi bir çıktıya sahip yama göndermeyin: .nf \fBdiff \-Naur v2.0.29/prog/README prog/README\fR \-\-\- v2.0.29/prog/README Mon Mar 10 15:13:12 1997 +++ prog/README Mon Mar 17 14:58:22 1997 .fi Çünkü burada eski ve yeni dosya isimleri farklı sayıda bölü çizgisi içermektedir ve \fBpatch\fR\N'39'in farklı sürümleri dosya isimlerini farklı yorumlarlar. Karışıklığı önlemek için böyle bir çıktı üreten yamalar gönderin: .nf \fBdiff \-Naur v2.0.29/prog/README v2.0.30/prog/README\fR \-\-\- v2.0.29/prog/README Mon Mar 10 15:13:12 1997 +++ v2.0.30/prog/README Mon Mar 17 14:58:22 1997 .fi \fBREADME.orig\fR 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 \fBpatch\fR\N'39'in gerçek dosyayı değil yedekleme dosyasını yamamasına yol açabilir. Bunun yerine \fBold/README\fR ve \fBnew/README\fR 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'39'ınızın içinde \fBconfigure: configure.in\fR diye bir satır var diye \fBconfigure\fR 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ı \fB\-Z\fR (\fB\-\-set\-utc\fR) seçeneği ile uygulayıp yamanmış dosyalara bağımlı yamanmamış dosyaları kaldırmak zorunda kalırlar (\fBmake clean\fR 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. .SH TANI İLETİLERİ Tanı iletilerinin varlığı genellikle \fBpatch\fR\N'39'in yama dosyanızı çözümleyemediğini belirtir. \fB\-\-verbose\fR seçeneği verilmişse bir \fBHmm...\fR iletisi, yama dosyasında işlenemeyen bir metinin varlığını ve \fBpatch\fR\N'39'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. \fBpatch\fR\N'39'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. .SH 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. \fBpatch\fR, 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. \fBpatch\fR, 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. .SH UYUMLULUK BİLGİLERİ POSIX standardı, \fBpatch\fR\N'39'in geleneksel davranışından farklı davranışlar belirtir. \fBpatch\fR\N'39'in POSIX uyumluluğu olmayan 2.1 ve daha önceki sürümleri ile çalışmak zorundaysanız bu farklardan haberdar olmanız gerekir. .IP \fB·\fR 3 Geleneksel \fBpatch\fR\N'39'de \fB\-p\fR seçeneğinin terimi isteğe bağlıdır. Yalnız başına \fB\-p\fR seçeneği \fB\-p0\fR\N'39'a eşdeğerdir. Şimdiki durumda ise \fB\-p\fR seçeneğinin bir terime sahip olması zorunludur ve \fB\-p 0\fR seçeneği \fB\-p0\fR seçeneğine eşdeğerdir. En yüksek derecede uyumluluk adına seçeneği \fB\-p0\fR ve \fB\-p1\fR gibi kullanın. Ayrıca, geleneksel \fBpatch\fR 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 \fB//\fR olmamasına dikkat edin. .IP \fB·\fR 3 Geleneksel \fBpatch\fR\N'39'de yedekleme öntanımlı olarak etkindir. Bu davranış şimdi sadece \fB\-b\fR (\fB\-\-backup\fR) seçeneği ile etkin kılınabilmektedir. Bunun tersine, POSIX \fBpatch\fR\N'39'de bir eşleşmeme olsa bile yedekleme asla yapılmaz. GNU \fBpatch\fR\N'39'de bu davranış \fB\-\-posix\fR seçeneği kullanılarak yahut \fBPOSIXLY_CORRECT\fR ortam değişkeninin varlığı sayesinde POSIX uyumluluğu sağlanarak aksi takdirde \fB\-\-no\-backup\-if\-mismatch\fR seçeneği ile etkinleştirilir. Geleneksel \fBpatch\fR\N'39'in \fB\-b \fR\fIsonek\fR seçeneği ile GNU \fBpatch\fR\N'39'in \fB\-b \-z \fR\fIsonek\fR seçenekleri eşdeğerdir. .IP \fB·\fR 3 Geleneksel \fBpatch\fR 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 \fBpatch\fR 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 \fBIndex:\fR 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. .IP \fB·\fR 3 Geleneksel \fBpatch\fR 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ı, \fB/dev/tty\fR ve standard girdi. Şimdi ise \fBpatch\fR soruyu standart çıtıya gönderip yanıtı \fB/dev/tty\fR\N'39'den okur. Bazı soruların öntanımlı yanıtları değiştirilmiştir, böyle öntanımlı yanıtları olan sorularda \fBpatch\fR artık sonsuz bir döngüye girip yanıt beklememektedir. .IP \fB·\fR 3 Geleneksel \fBpatch\fR 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 \fBpatch\fR uygulanamayan yamalar olduğunda 1 ile, gerçek bir sorun olması durumunda 2 çıkış değeri ile döner. .IP \fB·\fR 3 GNU \fBpatch\fR, geleneksel \fBpatch\fR ve POSIX uyumlu \fBpatch\fR 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. .IP .RS .nf \fB\-c\fR \fB\-d \fR\fIdizin\fR \fB\-D \fR\fItanım\fR \fB\-e\fR \fB\-l\fR \fB\-n\fR \fB\-N\fR \fB\-o \fR\fIçıktıdosyası\fR \fB\-p\fR\fIsayı\fR \fB\-R\fR \fB\-r \fR\fIreddosyası\fR .fi .RE .IP .PP .SH YAZILIM HATALARI Yazılım hatalarını lütfen eposta ile adresine bildiriniz. \fBpatch\fR 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, \fB#ifdef ESKİKOD ... #else ... #endif\fR ile) \fBpatch\fR 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, \fBpatch\fR yamanın yer değiştirmeli yama olarak uygulanacağını varsayabilir ve size bu yamayı uygulamamayı teklif eder. Bu bir özellik olarak yorumlanabilirdi. .SH KOPYALAMA Telif Hakkı © 1984, 1985, 1986, 1988 Larry Wall. .br 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. .SH COPYING Copyright 1984, 1985, 1986, 1988 Larry Wall. .br 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. .SH YAZARLAR \fBpatch\fR\N'39'in orjinal sürümü Larry Wall tarafından yazılmıştır. Paul Eggert \fBpatch\fR\N'39'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ı. .SH ÇEVİREN Nilgün Belma Bugüner , Ağustos 2004