Mesclando sem conflitos de espaço em branco


179

Eu tenho um problema em que tenho um commit grande que altera cerca de mil linhas de código, removendo os espaços em branco do final das linhas e os espaços antes das guias.

Também existem cerca de 50 solicitações de recebimento para este projeto, que terão conflitos quando a consolidação for mesclada. Existe alguma maneira de o git poder ser configurado para que, ao mesclar confirmações futuras, ignore os conflitos em que um deles é apenas uma alteração de espaço em branco?

Modificar o próprio git ou usar uma ferramenta de terceiros não é possível, mas usar um gancho é bom.


Respostas:


246
 git merge -Xignore-all-space

Ou (mais preciso)

 git merge -Xignore-space-change

deve ser suficiente para ignorar todos os conflitos relacionados ao espaço durante a mesclagem.

Veja git diff :

--ignore-space-change

Ignore as alterações na quantidade de espaço em branco.
Isso ignora o espaço em branco no final da linha e considera todas as outras seqüências de um ou mais caracteres de espaço em branco equivalentes.

--ignore-all-space

Ignore o espaço em branco ao comparar linhas.
Isso ignora as diferenças, mesmo se uma linha tiver espaços em branco onde a outra linha não tiver nenhuma.

ks1322 acrescenta nos comentários um bom conselho:

Vale a pena mesclar --no-commite revisar a mesclagem antes do commit real .


O OP Callum Macrae relata que, nesse caso, a mesclagem continua sem interrupção e os espaços à direita contidos nos patches de solicitação de recebimento são aplicados aos arquivos locais.
No entanto, o OP usa um gancho de pré-confirmação que cuida dos referidos espaços finais.
(Suponho que seja um pouco semelhante a este , também mencionado aqui ).


O gancho de pré-confirmação do OP é mencionado aqui :

Além de remover o espaço em branco à direita, ele remove um a três espaços antes das guias (eu tenho a largura da guia definida como 4) e adiciona EOLs.
Eu tive relatórios de que o código que adiciona a EOL exclui o arquivo no Windows, mas não foi capaz de replicá-lo.


1
Dos meus testes até agora, parece que ele remove todas as alterações de espaço em branco no arquivo. No entanto, agora estou usando o gancho de pré-confirmação para remover os espaços em branco restantes, para que não seja um problema.
Callumacrae 21/03/12

1
@ CallumMacrae: ok, e obrigado pelo feedback. Novamente, adicionei seu link na resposta para obter mais visibilidade.
VonC 21/03/12

1
git merge -Xignore-space-change- Bem, eu posso dizer com certeza isso não funcionou ... . O único espaço em branco que eu estava tentando remover permaneceu. Git é absolutamente péssimo.
JWW

1
Vale a pena mesclar --no-commite revisar a mesclagem antes do commit real.
ks1322

1
-Xignore-all-espaço parece não fazer nada sobre espaço em branco e --ignore-space-change não foi reconhecido como uma opção por git
Preza8
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.