with tag tab hacer create commits github composer-php git-fork

github - tag - Cómo requerir un tenedor con compositor



github tag (7)

De acuerdo con la documentación de Composer http://getcomposer.org/doc/05-repositories.md#vcs , es suficiente especificar el repositorio original (no el tenedor) en el require ("nodge / lessphp" en su caso). Composer luego instalará SU horquilla (mire el código en los vendedores)

aquí está mi compositor.json, quiero usar la horquilla de Nodge del proyecto lessphp en 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" },

Pero tengo este error cuando hago la actualización:

nodo / lessphp dev-master -> no se ha encontrado ningún paquete coincidente.

No sé cómo exigirlo correctamente este tenedor ...

Alguna sugerencia ?


He intentado muchas opciones, pero después de recibir esta publicación, vi la luz y funcionó perfectamente.

Esto es lo que tienes que hacer:

1- Tenedor de repositorio

2- Crea una sucursal y haz las modificaciones necesarias.

3- Agrega la etiqueta del repositorio a tu compositor.json

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

4- En la línea de comando dentro de tu proyecto necesitas tu tenedor así:

composer require vendor/packagename:dev-branchname

¡¡Y voilá!!

Tienes tu versión de horquilla trabajando


La forma más común (y más fácil) de hacerlo es usar un repositorio VCS.

Todo lo que tiene que hacer es agregar su fork como un repositorio y actualizar la restricción de la versión para apuntar a su rama personalizada. Su nombre de bifurcación personalizado debe ir precedido de dev- .

Ejemplo suponiendo que parcheó el monólogo para corregir un error en la rama de corrección de errores:

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

Tenga en cuenta que no cambia la declaración de requerir, excepto para especificar su rama de corrección de errores. Todavía hace referencia al paquete ascendente ( monolog/monolog ), no a su bifurcación personal ( igorw/monolog ). Puede leer los detalles en los documentos


Normalmente agrego un nodo "dist" a la definición del paquete. Nunca tuve problemas para usarlo de esta manera.

Sin embargo, no puedo recordar de dónde obtuve este truco para obtener más explicaciones.

{ "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"] }, "dist": { "url": "https://github.com/Nodge/lessphp/archive/master.zip", "type": "zip" } } } ], "require": { "nodge/lessphp": "*" } }


Ok, entonces hice lo que decía la documentación y funciona ... entonces, ¿cómo puedo hacer retroceder cualquier cambio en github a mi tenedor viendo que el compositor no creó un repositorio git en la carpeta del paquete? ¿Comienzo inicializando el repositorio y volviéndolo a señalar con el tenedor o el compositor tiene algún parámetro que necesito pasar para crear el repositorio de la horquilla en la carpeta del proveedor / paquete?

Mi objetivo es impulsar cualquier cambio que haga a la horquilla y luego hacer una PR más adelante, pero no hay ningún repositorio git en la carpeta del paquete.


Si no puede hacer que la respuesta de @Neilime funcione para usted, asegúrese de que su fork use una rama diferente.

Por ejemplo, inserte sus cambios en una bifurcación de su bifurcación llamada my-bugfix , no agregue dev- prefix en su nombre de sucursal pero en su composer.json tiene que agregarlo. Su archivo de compositor se verá así:

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


Usando VCS funciona:

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

Pero si requiero un módulo que tenga este composer.json , no funciona. Instala el proyecto original, no el tenedor.

Ejemplo

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

Debería mencionar nuevamente el repositorio. ¿Eso es normal?