web-dev-qa-db-fra.com

Comment obtenir que Composer télécharge le dernier commit dans la branche principale depuis GitHub pour un package?

J'essaie d'obtenir que Composer télécharge le dernier commit pour le paquet Behat/MinkSelenium2Driver. Ce repo particulier a seulement une branche principale. J'ai essayé toutes les méthodes possibles, y compris la suppression des fichiers et leur retrait, afin de les faire fonctionner, mais cela n'a pas été le cas.

Comment pourrais-je l'obtenir pour extraire les derniers fichiers validés ou au moins ceux de la liste de commit que je liste ci-dessous?

Plus précisément, je veux obtenir ce commit: https://github.com/Behat/MinkSelenium2Driver/commit/2e73d8134ec8526b6e742f05c146fec2d5e1b8d6

Merci, Patrick

32
Patrick

Il n'y a qu'un seul moyen de récupérer la tête du référentiel: 

"require": { "behat/mink-Selenium2-driver" : "dev-master" }
"minimum-stability": "dev"

Eh bien, au moins deux façons:

"require": { "behat/mink-Selenium2-driver" : "dev-master as 1.1.x-dev" }
"minimum-stability": "dev"

Probablement au moins trois façons:

"require": { "behat/mink-Selenium2-driver" : "dev-master#2e73d8134ec8526b6e742f05c146fec2d5e1b8d6" }
"minimum-stability": "dev"

Parce que ce référentiel a en fait aliasé la branche master en tant que 1.1.x-dev, cela fonctionnerait également sans la stabilité minimale affectant tous les autres packages:

"require": { "behat/mink-Selenium2-driver" : "1.1.*@dev" }
49
Sven

Aucune des options ci-dessus n'a fonctionné jusqu'à ce que je supprime le fichier composer.lock. 

Une fois que j'ai supprimé le fichier composer.lock, il a tiré la dernière validation sans avoir à spécifier autre chose que le nom de la branche. (dev-master dans mon cas)

Donc, à partir de maintenant, il semble que je vais faire: 

1- Supprimez le fichier composer.lock.
2- supprimer le dossier des exigences. (fichiers obsolètes)
3- installation du compositeur. 

9
Eduardo Chongkan

Spécifiez simplement la branche principale:

composer require --dev behat/mink-Selenium2-driver:dev-master

PS: le --dev est juste pour spécifier que c'est une exigence de test/développement, c'est probablement ce que vous voulez.

5
Berend de Boer

Dans notre cas, aucune des réponses précédentes ne fonctionnait. Cela s'est avéré être quelque chose de simple:

Composer utilise uniquement l'attribut repositories du composeur ROOT.json

https://getcomposer.org/doc/04-schema.md#repositories

Dans notre cas, nous essayions d'obtenir le dernier commit de dev-master de l'une de nos dépendances transitives. Il y avait un problème avec les crochets entre github et packagist l'empêchant de fonctionner normalement et il nous a fallu quelques heures pour nous rendre compte que nous éditions le mauvais composer.json (celui de notre bibliothèque qui porte la dépendance) au lieu du haut -level composer.json que nous installions.

0
lmsurprenant

Je pense que la meilleure réponse est de laisser la stabilité minimale à stable.

"minimum-stability" : "stable"

Puis dans la section "require", spécifiez "dev-master @ dev"

"require" : {
  "ResistFascism" : "dev-master@dev"
}

Ou vous pouvez faire ce que je fais et ne pas utiliser master, mais plutôt créer mes propres branches. Ainsi, au lieu d’exécuter le package ResistFascism à partir de la branche master, spécifiez une branche dev dans votre composer.json.

"require" : {
  "ResistFascism" : "~1.2.1@dev"
}

J'aime conserver tous mes packages externes sur des versions stables, car c'est ce que je fais en production, mais je gère souvent mes propres packages sur des versions dev. Mais vous pouvez aussi utiliser master. C'est une préférence personnelle.

0
Halfstop