Saturday, 19 August 2017

Diff Thinks Files Are Binary Options


Nacho4d: That39s estranho, porque git shouldn39t mesmo saber que existem quaisquer atributos estendidos. Se você pudesse reproduzi-lo, valeria a pena trazer na lista de discussão do git. Como é bom personalizado nas listas vger. kernel. org, você não precisa se inscrever para postar (as pessoas vão mantê-lo CC39ed para respostas) e são tipo de suposto não dar o volume bastante alto da lista gitvger. kernel. org. Ele simplesmente significa que quando git inspeciona o conteúdo real do arquivo (ele não sabe que qualquer extensão não é um arquivo binário - você pode usar o arquivo de atributos se você quiser dizer explicitamente - veja as páginas man). Tendo inspecionado o conteúdo dos arquivos, ele viu coisas que não estão em caracteres ASCII básicos. Sendo UTF16 eu espero que ele terá personagens engraçados assim que pensa seu binário. Existem maneiras de dizer ao git se você tem internacionalização (i18n) ou formatos de caracteres estendidos para o arquivo. Im não suficientemente sobre o método exato para a definição que - você pode precisar de RTFullM -) Edit: uma rápida pesquisa de SO encontrado can-i-make-git-reconhecer-a-utf-16-file-as-text que deve Dar-lhe algumas pistas. Você está quase, mas não completamente, não está errado. Git tinha inspecionado os arquivos reais e já vimos 39 personagens. No entanto, não é quotthinkquot UTF-16 é binário. É binário, porque o texto é definido como ASCII-based (that39s a única coisa que o built-in diff dará resultados utilizáveis ​​para) e UTF-16 não é. Sim, existe uma maneira de dizer ao git para usar o diff especial para arquivos definidos por padrão (usando. gitattributes). Ndash Jan Hudec Jul 28 11 at 9:27 Eu deveria acrescentar, que 39 personagens engraçados39 realmente significa zero bytes. Ndash Jan Hudec Jul 28 11 at 9:31 Ambos temos razão, mas de perspectivas diferentes. Nós dois dizemos quotGit inspeciona o conteúdo para determinar seu tipo. Ambos dizemos que para fazer git saber que deve ser tratado como UTF16 o usuário precisa dizer git via. gitattributes etc ndash Philip Oakley Jul 28 11 at 9:34 What is O oposto de check-attr - há um set-attr Eu originalmente salvo acidentalmente um arquivo como UTF-16, então comprometido e empurrado, e agora BitBucket vê-lo como UTF-16, mesmo depois de re-salvá-lo como UTF-8 , Comprometendo e empurrando-o novamente. Isso basicamente torna meus pedidos de solicitação impossíveis de ler porque os revisores precisam clicar em cada comentário individual para adicionar comentários de revisão. Ndash John Zabroski Jan 4 em 16:15 Eu estava tendo este problema onde Git GUI e SourceTree estava tratando arquivos Java / JS como binário e, portanto, couldnt ver diferença Criando arquivo nomeado atributos em pasta. gitinfo com o seguinte conteúdo resolveu o problema Se você gostaria Para fazer essa alteração para todos os repositórios, então você pode adicionar atributos arquivo no seguinte local HOME /.config / git / attributes Esta é uma informação correta. Eu estava tentando controlar diffs para um extremamente grande Dump MySQL (arquivo. Sql), mas git trata-lo como um arquivo binário, mesmo se ele tem apenas ASCII / UTF8 dados nele. A razão é que as linhas são super-long (inserir valores (um), (dois), (três), (.), (3 milhões.) Estranho, para cada commit, o repositório git não aumenta em 1.7gb , Mas apenas 350mb. Talvez, git está comprimindo o arquivo quotbinaryquot antes de salvá-lo. NDASH Alexandre T. Jan 15 às 17:55 Alexandre T. Git realmente comprimir arquivos blobs (usando GZip, IIRC). Ndash jpaugh ontem eu tive esse mesmo problema Depois de editar um dos meus arquivos em um novo editor. Descreve o novo editor usado uma codificação diferente (Unicode) do que o meu antigo editor (UTF-8).Então, eu simplesmente disse ao meu novo editor para salvar meus arquivos com UTF-8 e, em seguida, Git mostrou minhas alterações corretamente novamente e didnt vê-lo como um arquivo binário. Eu acho que o problema era simplesmente que git doesnt saber comparar arquivos de diferentes tipos de codificação. Então o tipo de codificação que você usa realmente não importa, enquanto ele permanece Eu não testei, mas tenho certeza se eu teria apenas cometido o meu arquivo com a nova codificação Unicode, da próxima vez que eu fiz alterações nesse arquivo que teria mostrado as alterações corretamente e não detectado como binário, desde então ele Teria sido comparar dois arquivos codificados Unicode, e não um arquivo UTF-8 para um arquivo Unicode. Você pode usar um aplicativo como o Bloco de Notas para ver e alterar facilmente o tipo de codificação de um arquivo de texto Abra o arquivo no Bloco de Notas e use o menu Codificação na barra de ferramentas. Arquivos Binários e Forçando Comparações de Texto Se diff achar que um dos dois arquivos é Comparando é binário (um arquivo não-texto), ele normalmente trata esse par de arquivos muito como se o formato de saída de resumo tivesse sido selecionado (veja Brief) e relata apenas que os arquivos binários são diferentes. Isso ocorre porque as comparações linha a linha geralmente não são significativas para arquivos binários. Diff determina se um arquivo é texto ou binário, verificando os primeiros poucos bytes no arquivo o número exato de bytes é dependente do sistema, mas normalmente é vários milhares. Se cada byte nessa parte do arquivo não for nulo, diff considera o arquivo como texto, caso contrário considera o arquivo como binário. Às vezes, você pode querer forçar o diff a considerar arquivos como sendo texto. Por exemplo, você pode estar comparando arquivos de texto que contêm caracteres nulos diff seria erroneamente decidir que esses são arquivos não-texto. Ou você pode estar comparando documentos que estão em um formato usado por um sistema de processamento de texto que usa caracteres nulos para indicar formatação especial. Você pode forçar diff a considerar todos os arquivos como arquivos de texto e compará-los linha a linha, usando a opção - a ou --text. Se os arquivos que você compara usando esta opção não contiverem texto, eles provavelmente conterão poucos caracteres de nova linha, ea saída diff consistirá de hunks mostrando diferenças entre longas linhas de quaisquer caracteres que os arquivos contenham. Você também pode forçar diff a considerar todos os arquivos como arquivos binários, e informar apenas se eles diferem (mas não como). Use a opção - q ou --brief para isso. Diferentes arquivos binários são considerados causadores de problemas porque a saída de resultado resultante não captura todas as diferenças. Esse problema faz com que diff sai com o status 2. No entanto, esse problema não pode ocorrer com a opção --a ou --text, ou com a opção - q ou --brief, pois essas opções fazem com que diff trate arquivos binários como texto arquivos. Em sistemas operacionais que distinguem entre texto e arquivos binários, diff normalmente lê e grava todos os dados como texto. Use a opção --binary para forçar o diff a ler e gravar dados binários. Esta opção não tem efeito em um sistema compatível com POSIX como o GNU ou Unix tradicional. No entanto, muitos sistemas operacionais de computadores pessoais representam o fim de uma linha com um retorno de carro seguido de uma nova linha. Em tais sistemas, diff normalmente ignora esses retornos de carro na entrada e os gera no final de cada linha de saída, mas com a opção - bin binária trata cada retorno de carro como apenas outro caractere de entrada e não gera um retorno de carro no Final de cada linha de saída. Isso pode ser útil ao lidar com arquivos não-texto que devem ser trocados com sistemas compatíveis com POSIX. O --strip-trailing-cr faz com que diff trate linhas de entrada que terminam em retorno de carro seguido de nova linha como se terminassem em linha simples. Isso pode ser útil ao comparar texto que é imperfeitamente importado de muitos sistemas operacionais de computadores pessoais. Esta opção afeta como as linhas são lidas, o que, por sua vez, afeta como elas são comparadas e produzidas. Se você quiser comparar dois arquivos byte por byte, você pode usar o programa cmp com a opção - l para mostrar os valores de cada byte diferente nos dois arquivos. Com GNU cmp. Você também pode usar a opção - b para mostrar a representação ASCII desses bytes. Consulte Invocar cmp. Para maiores informações. Se diff3 pensar que qualquer um dos arquivos que está comparando é binário (um arquivo não-texto), ele normalmente relata um erro, porque essas comparações geralmente não são úteis. Diff3 usa o mesmo teste como diff para decidir se um arquivo é binário. Como com diff. Se os arquivos de entrada contiverem alguns bytes não-texto, mas caso contrário são como arquivos de texto, você pode forçar o diff3 a considerar todos os arquivos como arquivos de texto e compará-los linha a linha usando as opções - a ou --text.1.7 Arquivos binários E Forçando Comparações de Texto Se diff acha que um dos dois arquivos que está comparando é binário (um arquivo não-texto), ele normalmente trata esse par de arquivos muito como se o formato de saída de resumo tivesse sido selecionado (veja seção 1.6 Resumindo quais Arquivos Differ), e relata apenas que os arquivos binários são diferentes. Isso ocorre porque as comparações linha a linha geralmente não são significativas para arquivos binários. Diff determina se um arquivo é texto ou binário, verificando os primeiros poucos bytes no arquivo o número exato de bytes é dependente do sistema, mas normalmente é vários milhares. Se cada byte nessa parte do arquivo não for nulo, diff considera o arquivo como texto, caso contrário considera o arquivo como binário. Às vezes, você pode querer forçar o diff a considerar arquivos como sendo texto. Por exemplo, você pode estar comparando arquivos de texto que contêm caracteres nulos diff seria erroneamente decidir que esses são arquivos não-texto. Ou você pode estar comparando documentos que estão em um formato usado por um sistema de processamento de texto que usa caracteres nulos para indicar formatação especial. Você pode forçar diff a considerar todos os arquivos como arquivos de texto e compará-los linha a linha, usando a opção - a ou --text. Se os arquivos que você compara usando esta opção não contiverem texto, eles provavelmente conterão poucos caracteres de nova linha, ea saída diff consistirá de hunks mostrando diferenças entre longas linhas de quaisquer caracteres que os arquivos contenham. Você também pode forçar diff a considerar todos os arquivos como arquivos binários, e informar apenas se eles diferem (mas não como). Use a opção - q ou --brief para isso. Diferentes arquivos binários são considerados causadores de problemas porque a saída de resultado resultante não captura todas as diferenças. Esse problema faz com que diff sai com o status 2. No entanto, esse problema não pode ocorrer com a opção --a ou --text, ou com a opção - q ou --brief, pois essas opções fazem com que diff trate arquivos binários como texto arquivos. Em sistemas operacionais que distinguem entre texto e arquivos binários, diff normalmente lê e grava todos os dados como texto. Use a opção --binary para forçar o diff a ler e gravar dados binários. Esta opção não tem efeito em um sistema compatível com POSIX, como o GNU ou Unix tradicional. No entanto, muitos sistemas operacionais de computadores pessoais representam o fim de uma linha com um retorno de carro seguido de uma nova linha. Em tais sistemas, diff normalmente ignora esses retornos de carro na entrada e os gera no final de cada linha de saída, mas com a opção - bin binária trata cada retorno de carro como apenas outro caractere de entrada e não gera um retorno de carro no Final de cada linha de saída. Isso pode ser útil ao lidar com arquivos não-texto que devem ser trocados com sistemas compatíveis com POSIX. O --strip-trailing-cr faz com que diff trate as linhas de entrada que terminam em retorno de carro seguido de nova linha como se terminassem em nova linha simples. Isso pode ser útil ao comparar texto que é imperfeitamente importado de muitos sistemas operacionais de computadores pessoais. Esta opção afeta como as linhas são lidas, o que, por sua vez, afeta como elas são comparadas e produzidas. Se você quiser comparar dois arquivos byte por byte, você pode usar o programa cmp com a opção - l para mostrar os valores de cada byte diferente nos dois arquivos. Com GNU cmp. Você também pode usar a opção - b para mostrar a representação ASCII desses bytes. Consulte a seção 12. Chamando cmp. Para maiores informações. Se diff3 pensar que qualquer um dos arquivos que está comparando é binário (um arquivo não-texto), ele normalmente relata um erro, porque essas comparações geralmente não são úteis. Diff3 usa o mesmo teste como diff para decidir se um arquivo é binário. Como com diff. Se os arquivos de entrada contiverem alguns bytes não-texto, mas caso contrário são como arquivos de texto, você pode forçar o diff3 a considerar todos os arquivos como arquivos de texto e compará-los linha a linha usando as opções - a ou --text.

No comments:

Post a Comment