example composer check composer-php

composer php - composer - ¿Cómo usar una etiqueta/versión específica con el compositor y un repositorio privado de git?



packagist (4)

Para requerir una rama específica, también puedes simplemente dev- branchname como esto:

"require": { "user/project" : "dev-my-branch" },

Tengo algunos paquetes de host en el Gitlab de mi empresa. Quiero solicitar una versión específica de estos paquetes pero cada vez que lo intento, el compositor descarga la última confirmación de la rama maestra.

compositor.json:

{ "config": { "vendor-dir": "private/class" }, "name":"MyProject", "repositories": [ { "type": "vcs", "url": "[email protected]:user/project.git" } ], "require": { "user/project": "v0.5.0" }, "type":"project"}

La estructura del repositorio de mi paquete:

  • tag v0.5.0: commit dd6ed3c8 ...
  • cometer X, Y, Z
  • tag v0.7.0: commit 15293ac6 ...
  • ultimo cometer f15600a1 ...

Cuando ejecuto "instalar compositor":

Cargando repositorios de compositor con información del paquete

Instalación de dependencias (incluyendo require-dev)

Analicé 69 paquetes para resolver dependencias.

Analicé 67 reglas para resolver dependencias.

  • Instalación de usuario / proyecto (dev-master f15600a)

    Clonación f15600a1

Descarga la última confirmación solamente.

¿Cómo puedo configurar el archivo composer.json de mi proyecto para usar una etiqueta específica?



Tirar por etiqueta git :

{ "repositories": [ { "type": "git", "url": "https://gitlab.xxx.com/some/repo.git" } ], "require": { "some/repo": "1.0.2" } }

Tire por el último git commit :

{ "repositories": [ { "type": "git", "url": "https://gitlab.xxx.com/some/repo.git" } ], "require": { "some/repo": "dev-master" } }

Tire por git commit específico :

{ "repositories": [ { "type": "git", "url": "https://gitlab.xxx.com/some/repo.git" } ], "require": { "some/repo": "dev-master#68696f39" } }

Agregue un repositorio a través de Composer Cli y extraiga el último git commit :

composer config repositories.repo git https://gitlab.xxx.com/some/repo.git composer require "some/repo:dev-master" composer update


¿Cómo requerir una etiqueta Git específica?

Cambie el requisito de versión a dev-master , seguido de un hash # y el nombre de la etiqueta Git, por ejemplo, v0.5.0 , así:

"require": { "vendor/package": "dev-master#v0.5.0" }

¿Cómo exigir un Git commit específico?

Cambie el requisito de versión a dev-master , seguido de un hash # y la referencia de confirmación de Git, por ejemplo, dd6ed3c8 , así:

"require": { "vendor/package": "dev-master#dd6ed3c8" }

Referencia: https://getcomposer.org/doc/04-schema.md#package-links

Define tu propio paquete y configura versión y referencia

Una alternativa a trabajar con repositorios de "type": "vcs" es definir un paquete personalizado "type": "package" dentro de los repositorios y trabajar con una referencia.

La referencia es un hash de confirmación de Git, o un nombre de etiqueta o rama, como origin/master .

Esto vinculará la version a una reference confirmación específica, en este caso dd6ed3c8.

"repositories": [ # ... { "type": "package", "package": { "name": "vendor/package", "version": "v0.5.0", "source": { "url": "[email protected]:vendor/project.git", "type": "git", "reference": "dd6ed3c8" } } } ]