Captura de tela de um Tkdiff

Em computação, diff é um utilitário de comparação de arquivos que analisa e exibe as diferenças entre dois arquivos texto por linha.[1] É normalmente usado para mostrar as mudanças entre uma versão de um arquivo e a versão anterior do mesmo arquivo fonte ou de configuração.[2]

O diff mostra as alterações realizadas por linha para arquivos de texto. Implementações modernas também suportam arquivos binários. A saída é chamada de um "diff", ou um patch (remendo),[3] uma vez que a saída pode ser aplicada com o programa patch do Unix.[4] Na língua inglesa, a saída de utilitários similares de comparação de arquivos também são chamadas de um "diff". Assim como o uso da palavra "grep" para descrever o ato de procurar, a paravra diff é usada como jargão para diferença.[5]

História

editar

O diff foi desenvolvido próximo de 1970 no sistema operacional Unix, que estava surgindo da Bell Labs. A primeira versão foi lançada junto com a 5° edição do Unix em 1974, e foi escrita por Douglas McIlroy, e James Hunt.[6] A pesquisa foi publicada em 1976 no artigo co-escrito com James W. Hunt, que desenvolveu o protótipo original do diff. O algoritmo descrito pelo artigo ficou conhecido por algoritmo Hunt-Szymanski.

Algoritmo

editar

A operação de diff é baseado na solução do problema de maior subsequência comum (LCS).

Neste problema, são dadas duas sequências de itens:

a b c d f g h j q z
a b c d e f g i j k r x y z

e nós queremos achar a maior subsequência de itens que está presente em ambos as sequências na mesma ordem. Ou seja, queremos achar uma nova sequência por deletar alguns itens da primeira sequência original, e da segunda por deletar outros itens. Também queremos que esse sequência seja a mais longa possível. No caso seria:

a b c d e f g j z

Isso é apenas um pequeno passo para conseguirmos uma saída parecida com diff: se um item não existe na subsequência mas está presente na primeira sequência original, ele deve ser deletado (como indicado pelo marcador '-', abaixo). Se um item não existe na subsequência mas está presente na segunda sequência original, ele deve ser adicionado (como indicado pelo marcador '+').

e  h i  q  k r x y
+  - +  -  + + + +

Ver também

editar

Referências

  1. «Comandos Linux – Comando diff». Linux Force Security. 5 de abril de 2019. Consultado em 27 de dezembro de 2021. Nos sistemas operacionais do tipo Unix, o comando diff analisa dois arquivos e imprime as linhas diferentes. 
  2. «Linux diff – How to Compare Two Files and Apply Changes with the Patch Command». freeCodeCamp. 15 de setembro de 2021. Consultado em 27 de dezembro de 2021. Comparing files and finding the differences between them is a widely used operation. This is specially useful when you have to compare complex code or configuration files. 
  3. «How to Compare Two Files in Linux». linuxhint. Consultado em 27 de dezembro de 2021. The “diff” command is also used by the programmers to get the difference between two source code files to develop patches. 
  4. «7 Patch Command Examples to Apply Diff Patch Files in Linux». The Geek Stuff. 2 de dezembro de 2014. Consultado em 27 de dezembro de 2021 
  5. «diff». Cambridge Dictionary. Consultado em 27 de dezembro de 2021. short for difference 
  6. Hunt, James W.; McIlroy, M. Douglas (junho de 1976). «An Algorithm for Differential File Comparison» (PDF). Bell Laboratories. Computing Science Technical Report. 41 

Ligações externas

editar
Ícone de esboço Este artigo sobre computação é um esboço. Você pode ajudar a Wikipédia expandindo-o.

📚 Artikel Terkait di Wikipedia

Patch (Unix)

para suportar arquivos de patch criados via diff. Um usuário cria um arquivo de patch executando o diff para duas versões de um arquivo (original e destino)

Wikipédia

fevereiro de 2025). «Wikimedia Brasil se torna o mais novo Capítulo Wikimedia». Diff. Consultado em 25 de julho de 2025  André, João Gabriel Ribeiro, Rita Pinto

Git

Arquivado do original em 29 de maio de 2010 , benchmarking "git diff" against "bzr diff", and finding the former 100x faster in some cases. Roland Dreier

TortoiseSVN

html> "SourceForge.net 2007 Community Choice Awards". SourceForge.net. 2007. Retirado 29 de outubro de 2011. "tortoisesvn: TortoiseMerge - a text diff tool

Rede de computadores

mídia de transmissão de maior qualidade. Propostas anteriores como IntServ, DiffServ e IP multicast não tiveram ampla aceitação, em grande parte porque exigem

Sistema de controle de versões

versionamento), VCS (do inglês version control system) ou ainda SCM (do inglês source code management) na função prática da Ciência da Computação e da Engenharia

Revision Control System

eficiência reduzida. Revisões são armazenados, com o auxílio do utilitário diff. RCS foi lançado pela primeira vez em 1982 por Walter F. Tichy, enquanto

Música do Níger

menos de 10% cada. Os Kanuri são pouco mais de 4%, enquanto os Toubou, os Diffa e os Gurma são pequenas populações de menos de meio por cento cada. Os Zarma