Diff

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

Bilgisayar ile hesaplamada bir dosya karşılaştırma yardımcı programıdır ve iki dosya arasındaki farkları bulmaya yarar. Program text dosyalarındaki her bir satırda yapılan değişiklikleri gösterir. Modern implementasyonlar binary dosyaları da destekler. Diff programının çıktısı diff ya da daha yaygın şekliyle -çıktıları patch adlı unix programı ile patch olarak uygulanabildiği için- patch olarak adlandırılır. Aynı zamanda diff bilgisayar jargonunda dosya üzerindeki herhangi bir değişikliği hesaplama anlamında bir fiil olarak kullanılır. Vikipedi diff kullanımına bir örnek Son değişiklikler sayfasında görülebilecek olan fark butonudur.


Tarihçesi :


The diff utility was developed in the early 1970s on the Unix operating system which was emerging from AT&T Bell Labs in Murray Hill, New Jersey. The final version, first shipped with the 5th Edition of Unix in 1974, was entirely written by Douglas McIlroy. This research was published in a 1976 paper co-written with James W. Hunt who developed an initial prototype of diff.[1]

McIlroy's work was preceded and influenced by Steve Johnson's comparison program on GECOS and Mike Lesk's proof program. proof also originated on Unix and, like diff, produced line-by-line changes and even used angle-brackets (">" and "<") for presenting line insertions and deletions in the program's output. The heuristics used in these early applications were, however, deemed unreliable. The potential usefulness of a diff tool provoked McIlroy into researching and designing a more robust tool that could be used in a variety of tasks but perform well in the processing and size limitations of the PDP-11's hardware. His approach to the problem resulted from collaboration also with individuals at Bell Labs including Alfred Aho, Elliot Pinson, Jeffrey Ullman, and Harold S. Stone.

In the context of Unix, the use of the ed line editor provided diff with the natural ability to create machine-usable "edit scripts". These edit scripts, when saved to a file, can, along with the original file, be reconstituted by ed into the modified file in its entirety. This greatly reduced the secondary storage necessary to maintain multiple versions of a file. McIlroy considered writing a post-processor for diff where a variety of output formats could be designed and implemented, but he found it more frugal and simpler to have diff be responsible for generating the syntax and reverse-order input accepted by the ed command. In 1985, Larry Wall composed a separate utility, patch, that generalized and extended the ability to modify files with diff output. Modes in Emacs also allow for converting the format of patches and even editing patches interactively.

In diff's early years, common uses included comparing changes in the source of software code and markup for technical documents, verifying program debugging output, comparing filesystem listings and analyzing computer assembly code. The output targeted for ed was motivated to provide compression for a sequence of modifications made to a file. The Source Code Control System (SCCS) and its ability to archive revisions emerged in the late 1970s as a consequence of storing edit scripts from diff.

Project Xanadu is a conceptual predecessor of diff. It was a hypertext project first conceived in 1960 that was to include a version tracking system necessary for its "transpointing windows" feature. The feature subsumed file differences in the expansive term "transclusion", where a document has included in it parts of other documents or revisions.

nasıl kullanır ? :

İSİM

   diff — iki dosya arasındaki farklılıkları bulur

KULLANIM

   diff [ seçenekler ] 1.dosya 2.dosya

AÇIKLAMA

   diff, en basit tabiri ile, iki farklı dosyanın içeriğini karşılaştırır. Dosya ismi olarak - verilmişse, diff standart girdiyi okur. Özel bir durum olarak, diff - - şeklinde komut kullanımı, standart girdi ile bir kopyasını karşılaştırır.
   Şayet 1.dosya bir dizin ve 2.dosya değilse, diff komutu, 1.dosya ile verilen dizin içindeki 2.dosya ile aynı isimli dosyayı karşılaştırır; bu durum tersi için de geçerlidir. Dizin olmayan dosya mutlaka - olmalıdır.
   Şayet her iki girdi de dizin ise, diff, alfabetik sıra ile, eşleşen bütün dosyaları karşılaştırır. Bu karşılaştırma alt dizinlerde yapılmaz. Şayet alt dizinlerdeki dosyalarında karşılaştırılmasını -r veya -recursive seçeneğini belirtmeniz gerekir. diff, asla bir dizinin asıl içeriğini bir dosyaymış gibi karşılaştırmaz. Standart girdi isimsiz olduğundan, tamamen tanımlanmış bir dosyaya standart girdi muamelesi yapılmaz ve "aynı isimli dosya" fikri buraya uygulanamaz.
   diff seçenekleri - ile başlar. Bu nedenle 1.dosya ve 2.dosya isimleri - ile başlayamaz. Bunun yanında, -- şeklinde kullanım ile bu sorunu aşabilirsiniz. -- işaretinden sonra gelen argümanlar - ile başlasa bile dosya ismi olarak değerlendirilir.
   Seçenekler
       Aşağıda, GNU diff'in kabul ettiği bütün komutların bir özetini bulacaksınız. Pek çok seçenek iki eşdeğer isme sahiptir. Birincisi - ile başlayan tek bir harften oluşur, diğeri ise -- ile başlayan uzun bir isimden meydana gelmektedir. Çok sayıda tek harfli seçenek (bir argüman almadıkça), -ac gibi yanyana yazılabilir: -ac, -a ve -c anlamına gelir. Uzun isimli seçenekler de başlangıçtan itibaren kendilerinden başka bir seçenekle karışmayacak şekilde kısaltılarak kullanılabilirler. Köşeli parantezler içindeki argümanlar, gerekli değilse verilmeyebileceği anlamına gelir.
       -satır_sayısı
           Dosya içeriğin tamsayı cinsinden satır sayısı (-5 gibi belirtilir). Bu seçenek kendi başına bir çıktı biçimi tanımlamaz. -c veya -u ile birlikte kullanılmadığı sürece bir etkisi yoktur. Bu seçenek eskidir. patch komutunun düzgün çalışması için içerikte en az iki satır olması gerekir. 
       -a
       --text
           Metin dosyası olmasalar bile, bütün dosyaları metin dosyaları olarak kabul eder ve onları satır satır karşılaştırır. 
       -b
       --ignore-space-change
           Karşılaştırmada ara boşluklarındaki farklar dikkate alınmaz. 
       -B
           Karşılaştımada boş satırlardaki farklar dikkate alınmaz. 
       -c
           Bağlamsal çıktı biçimi kullanılır. 
       -C satır_sayısı
       --context[=satır_sayısı]
           Bağlamın satır_sayısı satırı gösterilerek bağlamsal çıktı biçimi kullanılır. satır_sayısı belirtilmezse üç satır gösterilir. patch komutunun düzgün çalışması için içerikte en az iki satır olması gerekir. 
       --changed-group-format=biçim
           Her iki dosyadaki if-then-else biçimindeki farklı satırları içeren satır gruplarını çıktılarken biçim kullanılır. 
       -d
       --minimal
           En küçük değişikliği bile bulmak için algoritma değiştirilir. Bu seçenek diff'in yavaş çalışmasına (bazan oldukça yavaş) sebep olur. 
       -D isim
           isim önişlemci makrosunun koşullarına uygun olarak katıştırılmış if-then-else biçimli çıktı üretir. 
       -e
       -ed
           Çıktıyı bir ed betiği olarak üretir. 
       -f
       --forward-ed
           Çıktı bir ed betiği gibi karışık olur ancak farklar dosyadaki sırasına uygun çıktılanır. 
       -F düzifd
       --show-function-line=düzifd
           Bağlamsal veya tekilleştirilmiş biçimde, her bir değişiklik parçası için, önceki satırdan düzifd ile eşleşen kısmı gösterir. 
       -h
           Bu seçenek herhangi bir etkiye sahip değildir, Unix uyumluluğu için vardır. 
       -H
       --speed-large-files
           Pek çok küçük değişikliğe sahip büyük dosyaların karşılaştırılmasında işlemini hızlandırmak için buluşsal yöntemler (heuristics) kullanılır. 
       --horizon-lines=satır_sayısı
           Farklılıklardan önceki ortak satırların son satır_sayısı satırını ve farklılıklardan sonraki ortak satırların ilk satır_sayısı satırını iptal etmez. 
       -i
       --ignore-case
           Büyük ve küçük harf kullanımından kaynaklanan farklar gözönüne alınmaz, aynı kabul edilir. 
       --ifdef=isim
           isim önişlemci makrosunun koşullarına uygun olarak katıştırılmış if-then-else biçimli çıktı üretir. 
       -I düzifd
       --ignore-matching-lines=düzifd
           düzifd ile eşleşen satırlar diğer dosyada olsa da olmasada yok sayılır. 
       --ignore-blank-lines
           Satırları karşılaştırırken boş satırları yoksayar. 
       -l
       --paginate
           Çıktıyı sayfalamak için pr komutundan geçirir. 
       -L etiket
       --label=etiket
           Bağlamsal ya da tekilleştirilmiş biçimli başlıklarda dosya ismi yerine etiket kullanılır. 
       --left-column
           Yanyana çıktılama biçiminde iki ortak satırdan sadece soldakini basar. 
       --line-format=biçim
           if-then-else biçimli tüm girdi satırlarını çıktılarken biçim kullanılır. 
       -n
       -rcs
           RCS biçimli çıktı verir; her komutun etkilenen satır sayısını belirtmesi dışında -f ile aynıdır. 
       -N
       --new-file
           Dizinleri karşılaştırırken, bir dosyanın sadece tek bir dizin içinde bulunduğu durumlarda; bu dosyayı diğer dizin içinde de, içi boş olarak, varmış gibi kabul eder. 
       --new-group-format=biçim
           İkinci dosyadaki if-then-else biçimli girdi satırı gruplarını çıktılarken biçim kullanılır. 
       --new-line-format=biçim
           İkinci dosyadaki if-then-else biçimli bir girdi satırını çıktılarken biçim kullanılır. 
       --old-group-format=biçim
           Birinci dosyadaki if-then-else biçimli girdi satırı gruplarını çıktılarken biçim kullanılır. 
       --old-line-format=biçim
           Birinci dosyadaki if-then-else biçimli bir girdi satırını çıktılarken biçim kullanılır. 
       -p
       --show-c-function
           Her bir değişikliğin hangi C işlevi içinde olduğunu gösterir. 
       -P
       --unidirectional-new-file
           Dizinleri karşılaştırırken, bir dosyanın sadece ikinci dizin içinde bulunduğu durumlarda; bu dosyayı diğer dizin içinde de, içi boş olarak, varmış gibi kabul eder. 
       -q
       --brief
           Dosyalar farklıysa sadece raporlar, farkları bulmaz. 
       -r
       --recursive
           Dizinleri karşılaştırırken, bulunan bütün alt dizinlerin içindekileri de karşılaştır. 
       -s
       --report-identical-files
           Dosyalar aynıysa raporlar. 
       -S dosya
       --starting-file=dosya
           Dizinleri karşılaştırırken, dosya ile belirtilen dosyadan başlar. Böylece yarıda kalmış bir kıyaslamayı devam ettirebilirsiniz. 
       --from-file=dosya
           Tüm terimleri dosya ile karşılaştırır. dosya bir dizin olabilir. 
       --to-file=dosya
           dosyayı tüm terimlerle karşılaştırır. dosya bir dizin olabilir. 
       --sdiff-merge-assist
           sdiff'e yardım için ek bilgiler basar. sdiff, bu bilgileri diff'i çalıştırırken kullanır. Bu seçenek, kullanıcıların doğrudan kullanması için tasarlanmamıştır. 
       --suppress-common-lines
           Yan yana çıktı biçiminde ortak satırlar çıktılanmaz. 
       -t
       --expand-tabs
           Girdi dosyalarındaki sekmelerin eşitliğini sağlamak için; çıktılarken sekmeleri boşluklara çevirir. 
       -T
       --initial-tab
           Normal ya da bağlamsal biçimdeki bir satırın metninden önceki boşlukları sekmelerle değiştirir. Böylece, satırların sekmelerle hizalanarak düzgün görünmesi sağlanır. 
       -u
           Tekilleştirilmiş dosya biçimi kullanılır. 
       --unchanged-group-format=biçim
           Her iki dosyadan da alınmış if-then-else biçimindeki bir ortak satır grubunu biçim biçiminde çıktılar. 
       --unchanged-line-format=biçim
           Her iki dosyadan da alınmış if-then-else biçimindeki bir ortak satırı biçim biçiminde çıktılar. 
       -U satır_sayısı
       --unified[=satır_sayısı]
           Bağlamın satır_sayısı satırı gösterilerek tekilleştirilmiş çıktı biçimi kullanılır. satır_sayısı belirtilmezse üç satır gösterilir. patch komutunun düzgün çalışması için içerikte en az iki satır olması gerekir. 
       -v
       --version
           diff'in sürüm numarasını basar. 
       -w
       --ignore-all-space
           Satırları karşılaştırırken boşlukları atlar. 
       -W krk_sayısı
       --width=krk_sayısı
           Yanyana çıktı biçiminde krk_sayısı ile belirtilen genişlikte sütunlar kullanılır. 
       -x şablon
       --exclude=şablon
           Dizinleri kıyaslarken, şablon ile eşleşen sahip alt dizinleri ve dosyaları yoksayar. 
       -X dosya
       --exclude-from=dosya
           Dizinleri kıyaslarken, dosya içindeki şablonlar ile eşleşen sahip alt dizinleri ve dosyaları yoksayar. 
       -y
       --side-by-side
           Yan yana çıktı biçimi kullanılır. 

İLGİLİ BELGELER

   cmp(1), comm(1), diff3(1), ed(1), patch(1)), pr(1), sdiff(1). 

ÇIKIŞ DURUMU

   Çıkış durumu olarak 0'ın anlamı, hiçbir farklılık bulunamadığıdır. Bazı farklılıkların olduğu durumlarda 1 ile çıkar. Şayet 2 ile çıkarsa, bir sorun var demektir.

Article keywords: file diff,

Questions for article: c-diff, mackenzie et al. binary files and forcing text comparison in comparing and merging files with gnu diff and patch. downloaded 28 april 2007, cbc with diff, mackenzie et al. binary files and forcing text comparison in comparing and merging files with gnu diff and patch. downloaded 28 april 2007, cbc with diff

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net