Como ler bzr diff

3

original:

if __name__ == "__main__":
    myparams = {"server":"mpilgrim", \
                    "database":"master", \
                    "uid":"sa", \
                    "pwd":"secret" \
                    }

corte de bzr diff:

 if __name__ == "__main__":
     myparams = {"server":"mpilgrim", \
@@ -15,4 +22,6 @@
                     "pwd":"secret" \
                     }

O que significa a parte '@@ -15,4 +22,6 @@' do bzr diff e por que ela sobrescreve duas linhas?

"database":"master", \
"uid":"sa", \
    
por Paradiesstaub 13.11.2011 / 20:13

1 resposta

3

Você forneceu trechos de um contexto diff , que mostra as duas linhas que são as mesmas nos arquivos e nas linhas que são alteradas. No entanto, os trechos selecionados não mostram linhas alteradas. (Esses seriam precedidos por - ou + caracteres, dependendo de estarem sendo removidos ou adicionados.)

@@ -15,4 +22,6 @@ significa que 4 linhas iniciando com a linha 15 no arquivo antigo são alteradas (ou não foram alteradas, mas são mostradas como contexto) e correspondem a 6 linhas iniciando com a linha 22 em o novo arquivo. (A maneira mais simples e mais comum de ocorrer é que o número de linhas adicionadas no novo arquivo exceda o número de linhas removidas no novo arquivo por 7, de forma que o que começou na linha 15 no arquivo antigo seja iniciado na linha 22 no novo arquivo, antes da aplicação das mudanças que serão especificadas.)

Como este é um diff de contexto, ele fornece algumas linhas para contexto que não especificam mudanças. Isso é útil para permitir que as pessoas editem os arquivos (desenvolvedores / mantenedores, quando for código-fonte, como neste caso) para saber o que está acontecendo, skimming o diff. Mas tem o outro propósito útil de tornar possível, em muitos casos, aplicar um diff criado contra uma versão de um arquivo em relação a outra versão do mesmo arquivo, desde que não mude exatamente as mesmas linhas que já foram alteradas (isto é, que foram alterados depois que o diff foi criado, mas antes de ser aplicado).

As seguintes linhas estão presumivelmente presentes, como contexto, no diff, porque houve uma mudança pouco antes delas (então elas são fornecidas pelo contexto após uma mudança):

if __name__ == "__main__":
    myparams = {"server":"mpilgrim", \

Considerando que estas linhas estão presumivelmente presentes, como contexto, no diff, porque haverá uma mudança logo depois delas (então elas são fornecidas pelo contexto antes uma mudança):

                     "pwd":"secret" \
                     }

Estas linhas provavelmente não estão suficientemente próximas de qualquer alteração especificada no diff para ser incluída como contexto:

                    "database":"master", \
                    "uid":"sa", \

É por isso que eles parecem estar faltando no diff. Eles não estão realmente ausentes, porque um diff não deve mostrar o arquivo inteiro. A mensagem para levar para casa tudo isso é que a ausência deles não é porque o diff está especificando que eles serão removidos. Certamente não está especificando que - se fosse, teria que incluir eles (com - assina antes deles para indicar sua remoção).

(Eu digo > supostamente acima não porque há uma grande probabilidade de que isso não esteja acontecendo, mas porque enquanto o utilitário diff criará diffs com números especificados de antes e após linhas de contexto, você poderia, se quisesse, manualmente criar ou modificar um diff para que ele tivesse mais ou menos linhas de contexto em alguns lugares do que em outros, e ainda assim seja um diff válido, desde que, quando necessário, os números em @@ lines sejam alterados para corresponder.)

Para obter mais informações sobre diff (os utilitários diff , patch , diff3 e sdiff e também o formato diff / patch ), consulte o GNU diff documentation . Em particular, você pode estar interessado na seção sobre o formato unificado .

    
por Eliah Kagan 13.11.2011 / 21:48

Tags