update lock index git git-index

lock - ¿Quién tocó mi git supuestamente sin cambiar?



git index lock (2)

Parece que --skip-worktree + sparse checkout podría permitir este tipo de comportamiento.

Desde git, suponga que no se ha cambiado frente a omitir worktree - ignorando un enlace simbólico ( con algunas modificaciones contextuales ):

  • Establezca core.sparseCheckout en true para el repositorio.
  • Cree un archivo .git/info/sparse-checkout contenga dos patrones: * para incluir todo y !/path/to/someFile.txt para excluir el archivo local ''someFile.txt''.
  • Ahora, configure manualmente el bit skip-worktree en someFile.txt.

Ahora puede continuar sin tener que temer que git confirme automáticamente el directorio, pero tenga en cuenta que aún tendrá problemas si alguien ejecuta explícitamente git add en el directorio o en cualquier archivo que contenga.

Investigaciones adicionales en la página de manual parecen indicar que --skip-worktree es más apropiado para el caso de uso que se solicita.

Tengo un archivo determinado en mi repositorio en el que puse el bit de asumir sin cambios en:

git update-index --assume-unchanged someFile.txt

De vez en cuando, después de algunos trabajos en el repositorio, ese bit se desactiva y el archivo ya no se assume-unchanged automáticamente.

¿Quién lo está tocando? ¿Cómo puedo hacer esto permanente hasta que explícitamente le diga a git que:

git update-index --no-assume-unchanged someFile.txt

¿Que está pasando aqui?

Edición : estoy usando el bit de suposición sin cambios en los archivos de configuración que cambian localmente, y nunca debería comprometerse, por no mencionar que se han enviado en sentido ascendente. No quiero verlos en git status , ni en ningún otro lugar, a menos que explícitamente le diga a git que deseo editar y cometer uno de ellos.

Edit : OK, creo que logré reproducir el problema.

--assume-unchanged el archivo desde un repositorio diferente (que no lo tenía como --assume-unchanged ), saqué mi repositorio y, --assume-unchanged , el bit se restableció.

Entonces surgen dos preguntas:

  1. ¿Es posible establecer este bit en el repositorio central autorizado para que se propague a todos los repositorios?
  2. ¿Es posible hacer que este bit quede pegajoso, incluso después de los cambios remotos?

IIRC si ignora un archivo versionado, se comportará así. Puede ignorar todos los árboles de trabajo de .gitignore o, en particular, el árbol de trabajo de .git/info/exclude (sí, funciona, pero no se pretende que sea una forma de hacer las cosas).