199 votes

Comment demander une fourche avec le compositeur ?

C'est mon composer.json Je veux utiliser le fork de Nodge du projet lessphp sur Github.

 "repositories": [{
    "type": "package",
    "package": {
        "version": "dev-master",
        "name": "nodge/lessphp",
        "source": {
            "url": "https://github.com/Nodge/lessphp.git",
            "type": "git",
            "reference": "master"
        },
        "autoload": {
            "classmap": ["lessc.inc.php"]
        }
    }
}],
"require": {
    "php": ">=5.3.3",
    "nodge/lessphp": "dev-master"
},

Mais j'obtiens cette erreur quand je lance composer update :

nodge/lessphp dev-master -> aucun paquet correspondant trouvé.

Je ne sais pas comment demander correctement cette fourche.

265voto

Seldaek Points 12311

La façon la plus courante (et la plus simple) de le faire est d'utiliser un dépôt VCS.

Tout ce que vous avez à faire est d'ajouter votre fork comme dépôt et de mettre à jour le fichier contrainte de version pour pointer vers votre branche personnalisée. Votre branche personnalisée nom doit être préfixé par dev- .

En supposant que vous avez bifurqué monologue/monologue et a créé une branche appelée correction de bogues vous devez mettre à jour votre composer.json comme ceci :

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/igorw/monolog"
        }
    ],
    "require": {
        "monolog/monolog": "dev-bugfix"
    }
}

Notez que vous ne changez pas l'instruction require sauf pour spécifier votre branche de correction de bogues. Vous faites toujours référence au paquet amont ( monolog/monolog ), no votre fourchette personnelle ( igorw/monolog ), et le nom de la branche est précédé du préfixe dev- . Vous pouvez lire les détails dans les docs

50voto

Neilime Points 2497

L'utilisation de VCS fonctionne :

"name": "test/test",
"repositories": [{
    "type": "vcs",
    "url": "http://github.com/Nodge/lessphp"
}],
"require": {
    "leafo/lessphp": "dev-master"
},

Mais si j'ai besoin d'un module qui a ceci composer.json ça ne marche pas. Il installe le projet original, pas le fork.

Exemple

"name": "example/example",
"require": {
    "test/test": "dev-master"
},

Je dois mentionner à nouveau le référentiel. Est-ce normal ?

42voto

Boedy Points 3806

Si la réponse de @Neilime ne fonctionne pas pour vous, assurez-vous que votre fork utilise une branche différente.

Par exemple, poussez vos modifications vers une branche de votre fork appelée my-bugfix ne pas ajouter dev- dans votre nom de branche mais dans votre composer.json vous devez l'ajouter. Votre fichier composer ressemblera à :

"repositories":
[
    {
        "type": "vcs",
        "url": "http://github.com/yourname/packageName"
    }
],
"require": {
    "owner/packageName": "dev-my-bugfix"
},

16voto

Luis Mata B. Points 262

J'ai essayé de nombreuses options mais après avoir lu ce post, j'ai vu la lumière et ça a marché parfaitement.

C'est ce que vous devez faire :

1- Fork The repository

2- Créez une branche et apportez les modifications nécessaires.

3- Ajouter l'étiquette du dépôt à votre composer.json

"repositories": [

        {
            "type": "vcs",
            "url": "https://github.com/user/yourforkname"
        }
    ]

4- Dans la ligne de commande à l'intérieur de votre projet, exigez votre fork comme ceci :

composer require vendor/packagename:dev-branchname

Et Voilá !!

Vous avez votre version fork qui fonctionne

7voto

Elvis Ciotti Points 1384

Selon la documentation de Composer http://getcomposer.org/doc/05-repositories.md#vcs , spécifier le dépôt d'origine (et non le fork) dans le champ require ("nodge/lessphp" dans votre cas). Composer installera alors VOTRE fork (regardez le code dans les vendeurs)

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