tipos tag remove practices etiquetas create crear best git standards removing-whitespace

remove - git tag best practices



git: cambiar el estilo(espacios en blanco) sin cambiar la propiedad/culpa? (4)

En un mundo ideal, habría alguna forma de reescribir la historia para que pareciera que nunca se introdujeron las violaciones.

git filter-branch hace precisamente eso.

http://git-scm.com/docs/git-filter-branch

Esto tiene los mismos problemas que todos los comandos de reescritura de historial, ya que esencialmente invalida todos los repositorios clonados.

Tenemos una base de código masiva y antigua que necesita mucha limpieza. Siempre hemos tenido estándares de codificación y todos siempre han intentado seguirlos, pero no se aplicaron, por lo que con el tiempo se han introducido muchas violaciones. Muchos de ellos son solo problemas de espacio en blanco, como el uso de pestañas en lugar de espacios o espacios donde hay no debería ser ninguno, o espacios faltantes donde deberían estar. Vamos a empezar a aplicar activamente nuestros estándares de codificación para asegurarnos de que no se presenten más infracciones, pero es difícil aplicarlos de manera automatizada solo en los cambios, por lo que sería bueno limpiar estos archivos antiguos.

Hay herramientas que pueden automatizar la solución de estos problemas, sin embargo, si lo hago, entonces la culpa me mostrará como el propietario de esas líneas, cuando en realidad quizás nunca las haya visto. Sé que hay un entorno para hacer que la culpa ignore los cambios en el espacio en blanco, pero no puedo hacer que todos usen la culpa de la misma manera, incluidas otras herramientas visuales y cosas como gitstats. En un mundo ideal, habría alguna forma de reescribir la historia para que pareciera que nunca se introdujeron las violaciones, sin encubrir quién introdujo el código real, pero no puedo encontrar nada de eso.


Hice una solicitud de extracción al paquete TextMate git , para establecer este parámetro "-w" de forma predeterminada para el comando "Buscar archivo anotado (Blame)". Gracias Mario Zaizar, hiciste mi día.

diff --git a/Support/lib/git.rb b/Support/lib/git.rb index 5e8de13..5192953 100644 --- a/Support/lib/git.rb +++ b/Support/lib/git.rb @@ -307,6 +307,9 @@ module SCM file = make_local_path(file_path) args = [file] args << revision unless revision.nil? || revision.empty? + # Ignore whitespace when comparing the parent''s version and + # the child''s to find where the lines came from. + args << ''-w'' output = command("annotate", *args) if output.match(/^fatal:/) puts output


Si está tratando de obtener un problema de causa raíz usando la culpa, no olvide usar el indicador -w para ignorar todos los espacios en blanco o cambios de sangrado. De modo que obtendrá el último cambio real en el código, en lugar de solo una sangría, o eliminará los espacios finales.

git blame -w app/to/file.rb

o simplemente puedes usar el comando git slap ..

git config alias.slap "blame -w"; git slap app/path/to/file.rb

teniendo los mismos resultados: D


Sobre la base de la respuesta de Mario , sugeriría git shame como un git-alias global:

git config --global alias.shame ''blame -w -M''

... y usarlo en lugar de git-culpa:

git shame path/to/file

Para explicar:
- -w Ignora los cambios en el espacio en blanco, por lo que no se debe culpar a alguien que volvió a sangrar el código
- -M Detecta líneas que se movieron o copiaron y culpa al autor original