2016-01-14 9 views
12

Ich habe einige Pakete Host auf dem Gitlab meiner Firma. Ich möchte eine bestimmte Version dieser Pakete anfordern, aber jedes Mal, wenn ich es versuche, lade ich das letzte Commit des Master-Zweiges herunter.Wie verwende ich ein bestimmtes Tag/eine bestimmte Version mit Composer und einem privaten Git-Repository?

composer.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"} 

Die Struktur des Repository meiner Paket:

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

Wenn ich execute "Komponist installieren":

Laden Komponist Repositorys mit Paketinformationen

Abhängigkeiten installieren (einschließlich erfordern-dev)

Analysierte 69 Pakete Abhängigkeiten aufzulösen

Analysiert 67 Regeln zur Auflösung von Abhängigkeiten

  • Installieren von Benutzer/Projekt (dev-master f15600a)

    Klonen f15600a1

Es lädt die zuletzt nur begehen.

Wie kann ich die composer.json-Datei meines Projekts für die Verwendung eines bestimmten Tags konfigurieren?

Antwort

17

Wie wird ein bestimmtes Git-Tag benötigt?

Ändern Sie die Versionsanforderung in dev-master, gefolgt von einem Hash # und dem Git-Tag-Namen, z. v0.5.0, etwa so:

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

Wie eine spezifische Git verpflichten verlangen?

Ändern Sie die Versionsanforderung in dev-master, gefolgt von einem Hash und der Git Commit-Referenz, z.dd6ed3c8, etwa so:

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

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


Definieren Sie Ihr eigenes Paket und setzen Version und

Eine alternative Referenz mit Repositorys von "type": "vcs" zu arbeiten, ist eine benutzerdefinierte zu definieren Paket "type": "package" in Repositories und arbeiten mit einer Referenz.

Der Verweis ist entweder ein Git-Commit-Hash oder ein Tag oder ein Zweigname wie origin/master.

Dies bindet die version an ein bestimmtes Commit reference, in diesem Fall dd6ed3c8.

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

Ich versuche schon dieses und jedes Mal, es Downloads begehen die letzte. Nicht das angeforderte Tag/commit – Airmanbzh

+1

Ich weiß nicht, warum Typ VCS für Sie nicht funktioniert. Ich habe ein Beispiel hinzugefügt, um ein eigenes Paket in Repositories zu definieren. Dies ermöglicht es, eine Version und eine Referenz festzulegen. –

+1

Ich habe Ihren letzten Vorschlag und immer noch das gleiche Ergebnis versucht. Es klont das gesamte Repository (und verwendet das letzte Commit) Ich verstehe nicht, warum das passiert. Vielleicht muss ich etwas ähnliches wie packagist verwenden ... – Airmanbzh

5

Pull von git tag:

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

Pull von neuesten Git Commit:

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

Pull von spezifischen git commit:

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

Repository hinzufügen über Komponist Cli und ziehen neuesten git commit:

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

Um requir e eine bestimmte Filiale können Sie auch nur dev- branch wie folgt aus:

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