2013-10-08 8 views
5

Potrzebuję użyć Composer do zarządzania zależności (normalize.css i inne) bez composer.js w katalogu głównym projektu. Skończyło się na zdefiniowaniu pakiet, ale mam kilka pytań:Czy "wersja" w repozytorium git Composer odnosi się do wydania (tagu) na GitHub?

{ 
    "require": { 
     "twbs/bootstrap": "~3.0", 
     "fortawesome/font-awesome": "~3.2", 
     "necolas/normalize.css": "*" 
    }, 
    "repositories": [ 
     { 
      "type":"package", 
      "package": { 
       "name": "necolas/normalize.css", 
       "version":"2", 
       "source": { 
        "url": "https://github.com/necolas/normalize.css.git", 
        "type": "git", 
        "reference":"master" 
       } 
      } 
     } 
    ] 
} 

Czy version w moim pakiecie można znaleźć w komunikacie (TAG) w repozytorium GitHub? Jeśli tak, jak mogę określić, tj. ~2.1 (otrzymuję niepoprawną definicję pakietu) lub najnowszy dostępny tag?

Dla necolas/normalize.css Chciałbym zawsze uzyskać najnowszą wersję gałęzi głównej.

Odpowiedz

5

„Czy w moim wersja pakietu odnosi się do wydania”

Nie, wersja wewnątrz wpisu package określa numer wersji, że kompozytor powinien odnieść się do tego pakietu.

Ustawienie parametru version jawnie jest wymagane w przypadku pakietów niestety, nawet jeśli pochodzą one od Git.

"w jaki sposób mogę podać np. ~ 2.1 (otrzymuję niepoprawną definicję pakietu) lub najnowszy dostępny tag?"

Wygląda na to, że nie możesz. Wersja wymieniona w pakiecie musi być faktycznym numerem wersji, a nie numerem wersji i nie ma sposobu na pobranie tagów z Git, co jest do bani.

Jeśli chcesz zastąpić przy użyciu repozytorium pakietów przy użyciu pakietu artifact zip, bardzo łatwo byłoby dodać composer.json z odpowiednimi informacjami po pobraniu zip Giftub.

Dodałem, że jako dowód koncepcji do https://github.com/Danack/IntahwebzRepo, który jest prostym skryptem do pobierania zipballs z Github, a następnie albo dodać pozycję do wersji composer.json, albo całkowicie wygenerować composer.json, jeśli nie masz jeszcze.

Po pobraniu i modyfikacji zipballs używa ich w repozytorium Satis (aka Packagist).

+1

Oznacza to, że wyczyszczenie wersji z paczki pozwoli mi określić wersję w zwykły sposób (wymagają + semver)? – gremo

+1

Tak, powinien zrobić. – Danack

+1

Nie działa. Gdy usuniesz wersję z pakietu, wyświetlasz błąd podczas uruchamiania kompozytu (nieprawidłowa definicja pakietu). – gremo

5

Oto moje rozwiązanie:

Dla celów testu mam ten plik composer.json:

{ 
    "name": "mycompagny/composer-project", 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "http://localhost/git/test.composer.dep.git" 
     } 
    ], 
    "require" : { 
     "mycompagny/test.composer.dep": "dev-master#v2.0.0" 
    }, 
    "minimum-stability": "dev" 
} 

w kluczu wymagać, stawiać #youversion po dev-master, aby wskazywał tagu git " Twoja wersja".

Znacznik po # tutaj działa jako zatwierdzenie. (według: https://getcomposer.org/doc/04-schema.md#package-links)

Powiązane problemy