Pytanie Wkład w pakiety open source z katalogu dostawcy?


Idealna sytuacja

Często podczas pracy nad projektem Symfony2 zauważę coś, co chcę zmienić w jednej z moich zależności. Gdybym mógł znaleźć sposób, aby po prostu zmienić go w dostawcę, a następnie łatwo wprowadzić zmiany jako żądanie ściągnięcia, prawdopodobnie bym przyczynił się częściej (zamiast przesłonić część lokalnym pakietem podrzędnym).

Problem

Nie mogę zmienić katalogu dostawcy bez kompozytora, który przeraża następną aktualizację. Jeśli zgłoszę żądanie pobrania, może to zająć trochę czasu, zanim będę mógł użyć kodu w dostawcach, co w rzeczywistości zniechęca do udostępniania mojej nowej funkcji.

Jak to teraz robię

Sposób, w jaki zazwyczaj przyczyniam się do pakowania, polega na zrobieniu widelca, umieszczeniu widelca w standardowej aplikacji symfony barefones, wprowadzeniu zmiany, a następnie przesłaniu prośby o pociągnięcie.

Włóż widelec composer.json?

Jedyne rozwiązanie, jakie mogę wymyślić, to usunięcie zależności pakagistycznej pakietu, który edytuję, a następnie włączenie mojego widelca z kompozytorem (jako pakietu) z github. W ten sposób otrzymam swój kod natychmiast i mogę nadal wnosić wkład.

Czy to jedyne rozwiązanie? Jak ty to robisz?

Wszelkie porady / porady dotyczące wkładu w pakiet podczas pracy nad innym projektem w tym samym czasie będą mile widziane!


19
2017-11-10 19:04


pochodzenie


Myślę, że masz rację. Są 2 części: przesłanie łaty i użycie łaty. Zwykle fork / branch pakiet w moim projekcie roboczym, aby naprawić. Zatwierdź to i popchnij na moje własne repozytorium. Następnie, jeśli chcę nadal używać tej poprawki, dodam to odniesienie do mojego widelca / gałęzi do kompozytora. - MDrollette
Używamy tego samego podejścia co @MDrollette. Najpierw korzystamy ze standardowych pakietów. Jeśli coś wymaga naprawy (takie jak DBAL QueryBuilder - github.com/doctrine/dbal/pull/175), rozwidlimy go, użyjemy naszego widelca zamiast standardowego, modyfikujemy kod, piszemy testy i otwieramy żądanie ściągnięcia, mając nadzieję, że poprawka zostanie uwzględniona. - wimvds


Odpowiedzi:


[AKTUALIZACJA: odpowiedź już nie obowiązuje] 

Jak wskazano w jednym z komentarzy, ta odpowiedź ma już kilka lat i jest nieprawidłowa. Zobacz odpowiedzi poniżej, aby uzyskać prawidłowy sposób postępowania.

[Oryginalna odpowiedź poniżej]

Takie podejście zaleca Jordi Boggiano (@Seldaek), twórca kompozytora. Zobacz z jego wykładu na Symfony Live San Francisco na początku tego roku (w czasie 2 minut): http://www.youtube.com/watch?list=PLo7mBDsRHu11ChvScWUE7MN1Qo5QVHQEz&feature=player_detailpage&v=P3NwF8RV1lY#t=120s


7
2017-11-11 10:15



Dziękuję za udostępnienie. Jest to jedyny sposób, w jaki próbowałem, który pobiera widelec i działa z zależnościami. Zamiast używać formularza https dla repozytorium, jak pokazano na filmie, używam tego formularza. Nie wymaga hasła- git@github.com: <user> / <nazwa-modułu> .git Kluczem do spełnienia zależności jest wbudowane aliasowanie. - cmc
nieaktualne informacje, patrz poniżej, aby uzyskać poprawną odpowiedź na ten konkretny problem od października 2016 - Joey T


Nie, to jest zepsute.

Próbowałem oficjalnego sposobu dołączenia widelca, oto przykład (oryginał: kitano, fork: jstoeffler) z composer.json:

(Dla tych, którzy się spieszą: TO NIE DZIAŁA)

"repositories": [
//...
    {
        "type": "vcs",
        "url": "https://github.com/jstoeffler/KitanoConnectionBundle",

    },
//...
],

Korzysta z oryginalnego pakietu. Nie wiem, na czym polega problem i nie rozumiem, jak to działa, ale oto, jak z powodzeniem dodać widelec do projektu.

"repositories": [
//...
    {
        "type": "package",
        "package": {
            "name": "kitano/connection-bundle",
            "version": "dev-master",
            "source": {
                "url": "https://github.com/jstoeffler/KitanoConnectionBundle.git",
                "type": "git",
                "reference": "master"
            },
            "autoload": {
                "classmap": [""]
            }
        }
    },
//...
],

34
2018-01-15 18:34



Dzięki za tę alternatywną metodę. - Chris Tickner
Chcę tylko dodać, że dobrze jest mieć alternatywną metodę, ale oficjalna metoda działa (Po prostu używam go dzisiaj z najnowszą instalacją kompozytora). Właśnie potrzebowałem dołączyć dev- Przedrostek przed moją rozgałęzioną nazwą oddziału i działał jak czar. - mTorres
@mTorres, który niestety nie zadziałał. Julien to zrobił. - Hugh Guiney
Z tego co rozumiem, jeśli twój oddział jest przestarzały w stosunku do gałęzi głównej i że inne moduły wymagają aktualnego oryginału, oficjalna metoda nie działa. - delmalki
Dla wyjaśnienia innych (ponieważ to mnie podniosło), reference wartość powinna być nazwą twojego oddziału, z wyłączeniem dev- prefiks. - Pete


FYI, właśnie wypróbowałem pierwszą opcję:

    "repositories": [{
    "type": "vcs",
    "url": "https://github.com/thujohn/twitter"
}],
"require": {
    "laravel/framework": "4.2.*",
    "thujohn/twitter": "dev-master",
    "anahkiasen/flickering": "^0.1.2",
    "fairholm/elasticquent": "dev-master",
    "facebook/php-sdk-v4" : "~5.0"
},

Wszystko działało dobrze.

vagrant@dev:/var/www$ sudo php composer.phar update
Loading composer repositories with package information                                                                                                                                                         Updating dependencies (including require-dev)         
  - Removing thujohn/twitter (2.0.4)
  - Installing thujohn/twitter (dev-master 7a92118)
    Downloading: 100%         

Writing lock file
Generating autoload files
> php artisan clear-compiled
> php artisan optimize
Generating optimized class loader

Po prostu musiałem określić nazwę głównego "master" jako "dev-master".


0
2017-09-30 21:03





Od 2017 roku właściwym sposobem na to jest:

  1. Dodaj swój link do gałęzi GitHub do repositories

    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/crimson-med/yii2-link-preview"
        }
    ],
    
  2. Dodaj źródło do require Twojego composer.json

    "require": {
        "yii2mod/yii2-link-preview": "dev-master"
    },
    

0
2017-07-18 10:27