tagger tag picard para musicbrainz mac kid3 for easytag linux git line-endings

linux - tag - musicbrainz picard debian



Cherry-pick con ignorar espacios en blanco/finales de lĂ­nea (2)

Entonces, para completar, la respuesta es que la estrategia de combinación ignore-all-space hace el trabajo:

git cherry-pick -X ignore-all-space <commit-id>

Y eso le permitirá seleccionar sin esfuerzo las confirmaciones hechas cuando el archivo tenía, por ejemplo, los finales de línea de Windows en una versión que tiene finales de archivos Unix.

¿hay alguna manera de decirle a git cherry-pick que use la estrategia de fusión renormalize ? No estoy seguro de que la opción -X esté funcionando.

Tengo un montón de confirmaciones que parecen asumir un tipo de final de línea, y estoy tratando de aplicarlas a una rama que asume otra. No pasar un buen rato ...


Sé que esta pregunta es significativamente antigua, pero agregando esta respuesta porque esta es la primera publicación de Google "git cherry-pick ignore whitespace".

Aunque -X ignore-all-space funciona bien, debe verificar manualmente la confirmación si la opción de selección de cerebros sin ignorar tuvo algunos conflictos. (o use --no-commit mientras Cherry-picking y git diff --staged para revisarlo)

En algunos casos, la opción -X ignore-all-space ve bien, pero algunas sangrías son incorrectas.

Por ejemplo, suponga que tuvo algún conflicto de fusión con los espacios en blanco iniciales sin utilizar ignorar todo el espacio, como esto:

Change from theirs, Indent level 1(no conflict with/out whitespace) <<<<< HEAD Indent level 0 ===== Indent level 1 without any code change >>>>> cherry-picked commit

En este caso, -X ignore-all-space no muestra conflicto, pero la confirmación real se verá así:

Change from theirs, indent level 1 Indent level 0

Lo que sucedió aquí es que cambiaron la lógica, por lo que el código anterior (nivel de sangría 0) debe ser sangrado al nivel 1, pero no porque se especificó la opción ignorar- todo- espacio.

Así que el tl; dr es:

  1. -X ignore-all-space opción -X ignore-all-space también ignora los espacios en blanco iniciales, lo que puede ser problemático en algunas situaciones e idiomas como Python.
  2. Así que tienes que revisar manualmente después de usar esa opción, o ...
  3. En su lugar, use -X ignore-space-at-eol y maneje los conflictos de espacios en blanco iniciales manualmente.

Pero no deje de leer, ya que estas opciones no son la razón principal de estos problemas: el núcleo de este problema es que no todos se adhieren a las mismas reglas de espacio en blanco.

Para espacios en blanco iniciales y finales: use herramientas de alineación o IDE, o lo que sea para atenerse a las mismas reglas. Esto no es específico del sistema operativo y se puede seguir si su equipo hace un esfuerzo para facilitar la vida de otros desarrolladores.

Para cambios en eol: esto es específico del sistema operativo, pero afortunadamente Git es compatible con core.autocrlf y core.eol para el desarrollo de desarrollo multiplataforma. ver git-scm para más detalles.