parche git ignorando el espacio en blanco diffs c ++

Lo único que me importa es el file C ++. (No te preocupes por los files binarys, el text, etc. … puedes asumir que todo es código C ++_).

Tengo estas twigs:

* dev master 

Ahora puedo crear una nueva twig "magic", donde branch magic equivale a "dev" (en términos de código C ++ generado), pero minimiza inútil whiteline diffs (como insert extra newlines) desde master.

es posible?

¡Gracias!

Tu pregunta no está completamente clara para mí. Creo que desea que la nueva twig contenga series de confirmaciones que son "equivalentes" a las de dev pero no contienen cambios innecesarios de espacio en blanco.

La forma más sencilla de hacerlo es con git rebase --interactive . Esto le permite editar una serie de confirmaciones manualmente. Puede get el hash del primer commit ("raíz") con git rev-list HEAD | tail -n 1 git rev-list HEAD | tail -n 1 . Si también quieres editar el primer compromiso, es más difícil, pero hay una respuesta SO para eso.

 git checkout dev git checkout -b magic git rebase --interactive $(git rev-list HEAD | tail -n 1) 

Esto hace aparecer un editor en la list de confirmaciones en order cronológico directo. Cambia la selección para editar en las confirmaciones que desea cambiar. git hará una pausa antes de procesar cada una de estas confirmaciones, lo que le permitirá modificarla con git commit --amend y luego continuar la rebase con git rebase --continue . Por supuesto, podría ejecutar un script para limpiar los files en lugar de editarlos manualmente. Si desea hacer esto en base a las diferencias con la confirmación anterior, necesitará usar algo como git cat-file blob HEAD^:filename para search la revisión anterior, o use git diff HEAD^ filename .

Si desea automatizar todo el process, puede usar git filter-branch --tree-filter script . Mire la página man para git-filter-branch para más detalles.

Si desea evitar que futuros commits contengan errores de espacio en blanco, puede configurar un enganche de precompromiso para no permitirlos.

Una vez que estés contento con la nueva twig de magia , puedes usarla para replace a dev :

 git branch -m dev dev-old git branch -m magic dev 

Sin embargo, tenga en count que esto podría causar problemas para las personas que ya tienen una copy de desarrollo en sus propios repositorys. Sería mejor hacer una fusión en su lugar.

git diff --ignore-space-change ...

Puede intentar configurar un post-merge que:

  • solo hacer algo si la twig actual es mágica
  • eliminar todas las whitelines de los files * .cpp
  • hacer un nuevo compromiso (ya que un post-merge no puede afectar directamente el resultado de la git merge de git merge )