usar repositorio eliminar crear como comandos clonar php composer-php packagist

eliminar - Use el compositor PHP para clonar el repositorio git



git pull (7)

Intento utilizar composer para clonar automáticamente un repositorio git de github que no está en packagist pero no funciona y no puedo entender qué estoy haciendo mal.

Creo que tengo que incluirlo entre "repositorios" como sigue:

"repositories": [ { "url": "https://github.com/l3pp4rd/DoctrineExtensions.git", "type": "git" } ],

y luego, probablemente, lo liste en la sección "requerir". Debería ser similar a este ejemplo, pero no funciona. Simplemente da este error:

Sus requisitos no se pudieron resolver en un conjunto de paquetes instalable.

¿Alguien ha tratado de hacer algo como esto ya?


En el momento de escribir en 2013, esta era una forma de hacerlo. Composer ha agregado soporte para mejores formas: ver la answer @igorw

¿TIENES UN REPOSITORIO?

Git, Mercurial, SVN es compatible con Composer.

¿TIENES ESCRIBIR ACCESO AL REPOSITORIO?

¿Sí?

EL REPOSITORIO TIENE UN ARCHIVO composer.json

Si tiene un repositorio, puede escribir en: Agregue un archivo composer.json , o solucione el existente, y NO use la solución a continuación.

Ir a la answer @igorw

SOLO USAR ESTO SI NO TIENE UN REPOSITORIO
O SI EL REPOSITORIO NO TIENE UN composer.json Y NO PUEDE AGREGARLO

Esto anulará todo lo que Composer pueda leer del composer.json del repositorio original, incluidas las dependencias del paquete y la carga automática.

Usar el tipo de package transferirá la carga de definir correctamente todo en usted. La forma más fácil es tener un archivo composer.json en el repositorio, y simplemente usarlo.

Esta solución solo es realmente para casos excepcionales en los que tiene una descarga ZIP abandonada que no puede modificar, o un repositorio que solo puede leer, pero que ya no se actualiza.

"repositories": [ { "type":"package", "package": { "name": "l3pp4rd/doctrine-extensions", "version":"master", "source": { "url": "https://github.com/l3pp4rd/DoctrineExtensions.git", "type": "git", "reference":"master" } } } ], "require": { "l3pp4rd/doctrine-extensions": "master" }


En mi caso, uso Symfony2.3.x y el parámetro de estabilidad mínima es por defecto "estable" (lo cual es bueno). Quería importar un repositorio no en packagist pero tenía el mismo problema "Sus requisitos no podrían resolverse en un conjunto de paquetes instalable". Parece que el compositor.json en el repositorio que intenté importar usa un "desarrollador" de estabilidad mínima.

Entonces, para resolver este problema, no olvide verificar la minimum-stability . Lo resolví requiriendo una versión dev-master lugar de master como se indica en esta post .


Ese paquete, de hecho, está disponible a través de packagist . No necesita una definición de repositorio personalizado en este caso. Solo asegúrese de agregar un require (que siempre es necesario) con una restricción de versión coincidente.

En general, si un paquete está disponible en packagist, no agregue un repositorio de VCS. Simplemente ralentizará las cosas.

Para paquetes que no están disponibles a través de packagist, use un repositorio VCS (o git), como se muestra en su pregunta. Cuando lo hagas, asegúrate de que:

  • El campo "repositorios" se especifica en root composer.json (es un campo de solo raíz, las definiciones de repositorio de los paquetes necesarios se ignoran)
  • La definición de repositorios apunta a un repositorio válido de VCS
  • Si el tipo es "git" en lugar de "vcs" (como en tu pregunta), asegúrate de que sea de hecho un repositorio git
  • Usted tiene un require para el paquete en cuestión
  • La restricción en el require coincide con las versiones proporcionadas por el repositorio de VCS. Puede usar composer show <packagename> para encontrar las versiones disponibles. En este caso ~2.3 sería una buena opción.
  • El nombre en el require coincide con el nombre en el composer.json remoto.json. En este caso, es gedmo/doctrine-extensions .

Aquí hay una muestra de composer.json que instala el mismo paquete a través de un repositorio de VCS:

{ "repositories": [ { "url": "https://github.com/l3pp4rd/DoctrineExtensions.git", "type": "git" } ], "require": { "gedmo/doctrine-extensions": "~2.3" } }

El VCS explica todo esto bastante bien.

Si hay un repositorio git (u otro VCS) con un composer.json disponible, no use un repositorio "paquete". Los repos de paquetes requieren que proporcione todos los metadatos en la definición e ignorará por completo cualquier composer.json presente en el dist y la fuente proporcionados. También tienen limitaciones adicionales, como no permitir actualizaciones adecuadas en la mayoría de los casos.

Evite los repos de paquetes ( vea también los documentos ).


Me encontré con el siguiente error: The requested package my-foo/bar could not be found in any version, there may be a typo in the package name.

Si está realizando otro repositorio para realizar sus propios cambios, terminará con un nuevo repositorio.

P.ej:

https://github.com/foo/bar.git => https://github.com/my-foo/bar.git

La nueva URL tendrá que ir a la sección de repositorios de tu compositor. Json.

Recuerde que si quiere referirse a su fork como my-foo/bar en su sección require, deberá cambiar el nombre del paquete en el archivo composer.json dentro de su nuevo repositorio.

{ "name": "foo/bar", => { "name": "my-foo/bar",

Si acabas de abrir la forma más fácil de hacerlo, edítala directamente dentro de github.


Puede incluir el repositorio de git en composer.json así:

"repositories": [ { "type": "package", "package": { "name": "example-package-name", //give package name to anything, must be unique "version": "1.0", "source": { "url": "https://github.com/example-package-name.git", //git url "type": "git", "reference": "master" //git branch-name } } }], "require" : { "example-package-name": "1.0" }


Si quiere usar un composer.json de GitHub, mire VCS (en la sección VCS).

La sección del paquete es para paquetes que no tienen el composer.json . Sin embargo, tampoco siguió ese ejemplo o también habría funcionado. Lea lo que dice sobre los repositorios de paquetes:

Básicamente, usted define la misma información que está incluida en los packages.json del repositorio del compositor, pero solo para un solo paquete. Nuevamente, los campos mínimos requeridos son nombre, versión y cualquiera de dist o source.


Solo dile al compositor que use la fuente si está disponible:

composer update --prefer-source

O:

composer install --prefer-source

Luego obtendrá paquetes como repositorios clonados en lugar de extraer tarballs, por lo que puede hacer algunos cambios y volver a cometerlos. Por supuesto, suponiendo que tiene permisos de escritura / inserción en el repositorio y Composer sabe sobre el repositorio del proyecto.

Descargo de responsabilidad: Creo que puedo responder una pregunta un poco diferente, pero esto era lo que estaba buscando cuando encontré esta pregunta, por lo que espero que también sea útil para otros.

Si Composer no sabe dónde está el repositorio del proyecto o si el proyecto no tiene el compositor adecuado, la situación es un poco más complicada, pero otros ya respondieron esos escenarios.