570 votes

composer.lock partie du référentiel?

Je suis un peu confus avec composer.lock utilisée dans une application grâce à un référentiel.

J’ai vu beaucoup de gens disent que nous ne devrions pas .gitignore composer.lock partir du référentiel.

Mais si je mets à jour mes bibliothèques dans dev, je vais avoir un nouveau composer.lock mais je ne vais pas être en mesure de mettre à jour en production, je vais ?

Il ne génère pas les conflits sur ce fichier ?

729voto

meza Points 1276

Si vous mettez à jour votre libs, vous voulez valider le fichier verrou trop. Fondamentalement, il indique que votre projet est verrouillé pour les versions spécifiques des bibliothèques que vous utilisez.

Si vous validez vos modifications, et que quelqu'un tire votre code et met à jour les dépendances, le fichier de verrouillage doit être non modifié. Si elle est modifiée, cela signifie que vous avez une nouvelle version de quelque chose.

Avoir dans le référentiel vous assure que chaque développeur utilise les mêmes versions.

216voto

fieg Points 447

Pour les applications/projets: Certainement oui.

Le compositeur de la documentation membres (avec l'accent):

Valider votre demande de compositeur.de verrouillage (avec le compositeur.json) dans le contrôle de version.

Comme @meza a dit: Vous devez valider le fichier de verrouillage de sorte que vous et vos collaborateurs travaillent sur le même ensemble de versions et de vous empêcher de proverbes comme ", Mais cela a fonctionné sur mon ordinateur". ;-)

Pour les bibliothèques: Probablement pas.

Le compositeur de la documentation notes sur cette question:

Remarque: Pour les bibliothèques, il n'est pas forcément recommandé pour commettre le fichier de verrouillage (...)

Et les états ici:

Pour votre bibliothèque, vous pouvez commettre le compositeur.verrouillage de fichier si vous le souhaitez. Cela peut aider votre équipe à toujours tester par rapport à la même dépendance versions. Cependant, ce fichier de verrouillage n'aura pas d'effet sur d'autres projets qui en dépendent. Il a uniquement un effet sur le projet principal.

Pour les bibliothèques, je suis d'accord avec @Josh Johnson réponse.

87voto

Josh Johnson Points 2312

Après le faire de deux façons pour quelques projets, ma position est qu' composer.lock ne doit pas être engagé dans le cadre du projet. Je sais qu'il est plus facile de le faire, mais s'il vous plaît garder avec moi alors je fais un cas pour cette.

composer.lock construire des métadonnées qui ne fait pas partie du projet. L'état de dépendance doit être contrôlée par le biais de la façon dont vous êtes à la gestion des versions (soit manuellement, soit dans le cadre de votre processus de génération automatique) et non pas de façon arbitraire par la dernière développeur de les mettre à jour et valider le fichier de verrouillage.

Si vous êtes inquiet au sujet de vos dépendances de modification entre le compositeur des mises à jour alors que vous avez un manque de confiance dans votre schéma de gestion des versions. Versions (1.0, 1.1, 1.2, etc) doivent être immuables et vous devriez éviter de "dev" et "X.* les" jokers à l'extérieur de l'option initiale de développement.

Commettre le fichier de verrouillage est une régression pour votre système de gestion de la dépendance la dépendance de la version est aujourd'hui de retour à être implicity défini.

Aussi, votre projet ne devrait jamais être reconstruit ou de dépendances reaquired dans chaque environnement, en particulier la prod. Votre livrable (tar, zip, phar, un annuaire, etc) doivent être immuable et promue dans des environnements sans changer d'état.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X