mac limpiar consola configurar windows git diff file-permissions

limpiar - Permisos de archivos Git en Windows



git commit (5)

De otra pregunta aquí en stackoverflow: ¿Cómo puedo hacer que Git ignore los cambios en el modo de archivo (chmod)?

Tratar:

git config core.filemode false

De git-config(1) :

core.fileMode If false, the executable bit differences between the index and the working copy are ignored; useful on broken filesystems like FAT. See git-update-index(1). True by default.

He leído algunas preguntas sobre permisos de archivos en Git y todavía estoy un poco confundido. Tengo un repositorio en GitHub bifurcado de otro. Después de fusionarse, deberían ser idénticos. Sin embargo:

$ git diff --summary origin/epsilon master/epsilon mode change 100644 => 100755 ants/dist/sample_bots/csharp/compile.sh mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/MyBot.coffee mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/ants.coffee mode change 100644 => 100755 ants/util/block_test.sh mode change 100644 => 100755 manager/mass_skill_update.py mode change 100644 => 100755 worker/jailguard.py mode change 100644 => 100755 worker/release_stale_jails.py mode change 100644 => 100755 worker/start_worker.sh

Intenté cambiar los permisos de los archivos, pero no altera los resultados de las diferencias.

¿Que debería hacer?

editar : este problema fue causado / agravado por el hecho de que estaba usando git en un huésped de ubuntu VM con el repositorio alojado en el host compartido de Windows 7. Esta fue una receta para el desastre. Las respuestas aquí me parecen razonables, pero no puedo otorgar un tic porque responden a un problema que yo no tenía.



Handy one-liner para Git Bash:

find . -name ''*.sh'' | xargs git update-index --chmod=+x

Marcará todos los archivos .sh como ejecutables. Después de eso, solo tienes que git commit .


Lo arreglé cambiando los permisos de los archivos en Ubuntu, commit, push y todo OK. Parece que no funcionaría con msysgit en Windows / NTFS.


Si usa Cygwin git (o Linux git, también, supongo), hay una buena posibilidad de que su configuración de core.filemode se haya establecido en el nivel de proyecto en $ projdir / .git / config. Descubrí que tenía que hacer lo siguiente para conseguir que mi git de Cygwin y mi git de Windows coexistieran muy bien en un sistema de archivos de Windows sin que aparecieran cambios inexistentes en el modo de archivo todo el tiempo:

  • elimine la configuración de línea core.filemode en $ projdir / .git / config
  • en Windows git, ejecute "git config --global core.filemode false"

Esto permite que mi Cygwin git continúe viendo los cambios en el modo de archivo, que generalmente son relevantes, al tiempo que ordena al Windows git que ignore los cambios en el modo de archivo que ve, que generalmente son falsos positivos.