2016-01-14 12 views
12

Mam kilka hostów pakietów na Gitlab mojej firmy. Chcę zażądać określonej wersji tych pakietów, ale za każdym razem, gdy próbuję, kompozytor pobiera najnowszy commit z gałęzi master.Jak używać określonego znacznika/wersji z kompozytorem i prywatnym repozytorium git?

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

Struktura repozytorium mojego pakietu:

  • tag v0.5.0: popełnić dd6ed3c8 ...
  • popełnić X, Y, Z
  • tag v0.7.0: commit 15293ac6 ...
  • ostatni commit f15600a1 ...

Kiedy wykonać "kompozytor zainstalować":

Ładowanie kompozytor repozytoria z informacjami pakietu

Instalowanie zależnościami (w tym wymagają-dev)

przeanalizował 69 pakietów do rozwiązywania zależności

Przeanalizowano 67 reguł rozwiązywania zależności:

  • Instalacja użytkownika/projekt (dev-master f15600a)

    Klonowanie f15600a1

Pobiera ostatni popełnić tylko.

Jak mogę skonfigurować plik composer.json mojego projektu, aby używał określonego znacznika?

Odpowiedz

17

Jak wymagać określonego tagu Git?

Zmień wymaganie dotyczące wersji na dev-master, a następnie hash # i nazwę znacznika Git, np. v0.5.0, tak:

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

Jak wymagać specjalnego Git popełnić?

Zmień wymaganie dotyczące wersji na dev-master, a następnie hash # i odwołanie do zatwierdzenia Git, np.dd6ed3c8, tak:

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

Odwoływanie: https://getcomposer.org/doc/04-schema.md#package-links


Określ swój własny pakiet i wersję zestawu i odniesienie

alternatywę do pracy z repozytoriów "type": "vcs" jest zdefiniowanie niestandardowego pakiet "type": "package" wewnątrz repozytoriów i pracuj z referencją.

Odwołanie jest albo hasłem zatwierdzenia Git, albo znacznikiem lub nazwą gałęzi, na przykład origin/master.

Powiąże to version z konkretnym zatwierdzeniem reference, w tym przypadku dd6ed3c8.

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

już spróbować i za każdym razem pobiera ostatni popełnić. Nie żądany tag/commit – Airmanbzh

+1

Nie wiem, dlaczego typ vcs nie działa. Dodałem przykład do definiowania własnego pakietu wewnątrz repozytoriów. Pozwala to na ustawienie wersji i odniesienia. –

+1

Wypróbowałem twoją ostatnią propozycję i wciąż osiągnąłem ten sam rezultat. Klonuje całe repozytorium (i używa ostatniego zatwierdzenia) Nie rozumiem, dlaczego tak się dzieje. Być może muszę użyć czegoś podobnego do packagist ... – Airmanbzh

5

ciągnąć za tag git:

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

Pociągnij przez ostatnie zatwierdzenie git:

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

Pull przez konkretnego git commit:

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

Dodaj repozytorium poprzez Composer CLI i pociągnąć najnowszy git commit:

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

Aby requir e specyficzna gałąź można też po prostu dev- BRANCHNAME tak:

"require": { 
    "user/project" : "dev-my-branch" 
}, 
Powiązane problemy