Cómo hacer que el compositor actualice solo los files en composer.lock / json y no extraer nuevas versiones

Mantenemos el composer.json / composer.lock en nuestro repository y usamos el compositor para actualizar las dependencies. Tenemos un githook post-checkout para hacer una actualización del compositor. Si hay una nueva versión de una de nuestras dependencies o dependencies, downloadá la actualización y cambiará el compositor.lock

El problema es que no quiero esto porque tendré dos desarrolladores que están cometiendo los files de locking y habrá conflictos innecesarios.

Lo que me gustaría es que la actualización del compositor sea un process manual, comprometer el composer.lock con las versiones específicas, y tener la actualización del compositor solo en function de lo que haya cambiado en el composer.lock. Pero no veo cómo hacer eso (y tal vez estoy malinterpretando, y no funciona de esa manera …)

¿Hay alguna manera de hacer esto u otra forma de resolver este problema?

Cambia tu gancho a la composer install , que se leerá desde el file de locking en el process de pago. A continuación, agregue un enlace post-merge para hacer lo mismo, de forma que si una persona realiza cambios en composer.lock la versión fusionada se instalará y / o actualizará automáticamente según sea necesario.

La regla general es que la install usa .lock si existe, la update siempre solo usa .json .

Encontré una manera de (casi) hacer esto. https://gist.github.com/yehosef/8ffbab1f2dbbef22b757

 #!/bin/bash OLD=`md5 -q composer.lock.old` NEW=`md5 -q composer.lock` if [ "$NEW" != "$OLD" ] then php composer.phar update fi cat composer.lock > composer.lock.old 

Ejecuto esto en el gancho git post-checkout. Confirmo el compositor.lock y .gitignore the composer.lock.old. Cuando quiero hacer una actualización, lo hago manualmente con la actualización del compositor y luego confirmo el composer.lock.

El problema es que esto no está directamente relacionado con las versiones de lo que hay en el compositor.lock, simplemente impidiéndome hacer actualizaciones de compositores todo el time.

Aún así sería mejor forzar al compositor a que solo cargue las versiones específicas en composer.lock.