Git clone nenaklonuje balíčky z vlasních repozitářů do vendor

před 10 dny

jikki
Člen | 42
+
0
-

Ahojte,

Mám Windows server s Git repozitářemi, kde jsou celé nette projekty a balíčky s vlastními komponentami. Git je dostupný přes HTTP pomocí Gitea.

Na lokální mašině si vytvářím projekt

composer create-project nette/web-project Projekt
git init

Abych mohl nainstalovat balíčky z repozitáře na mém serveru, tak do composer.json přidám

"repositories": [
    {
        "type": "vcs",
        "url": "http://jmenoserveru/git/test/komponenta.git"
    }

Pak nainstaluji balíček pomocí příkazu

composer require test/komponenta

Balíček se bez problému přidá do projektu. V .gitignore mám pouze local.neon config. Tzn. že commituji i složku vendor.
Do vývojového repozitáře si přidám remote pro nahrání do bare repozitáře na serveru a projekt tam nahraji.

Nyní k problému.
Projekt dám naklonovat z bare repozitáře na produkci. Data se přenesou, složka vendor obsahuje jednotlivé balíčky nette, ale neobsahuje balíček s mou komponentou z repozitářů na mém server. Vytvoří se pouze složka test/komponenta, která je ale prázdná.

Komponenta má následující composer.json

{
    "name": "test/komponenta",
    "description": "...",
    "require": {
        "php": ">=7.1",
        "nette/application": "^3.0",
        "nette/forms": "^3.0",
        "nette/utils": "^3.0",
        "nette/di": "^3.0"
    },
    "autoload": {
        "psr-4": {
            "aczs\\scanner\\": "src/"
        }
    }
}

Zkoušel jsem ještě i upravit composer.json v projektu a balíček natahovat po síti přes sdílení. Nicméně chová se to úplně stejně.

"repositories": [
    {
        "type": "vcs",
        "url": "//jmenoserveru/repository_packages/test/komponenta.git"
    }
],

composer update nebo composer install hlásí, že složka test/komponenta je prázdná. Když ji smažu a pak spustím příkaz znova, tak se balíček doinstaluje. Pokud však vydám novou verzi komponenty a aktualizuji si ji v projektu na vývojové mašině, pak nahraju do remote, pak stáhnu na produkci, tak se můj balíček opět neaktualizuje.

Poradí prosím někdo co dělám špatně?

Předem moc děkuji

před 10 dny

CZechBoY
Člen | 3406
+
0
-

Neulozil se ti jako submodul? Zkus git submodule init && git submodule update

před 9 dny

jikki
Člen | 42
+
0
-

@CZechBoY Zřejmě ano, se submoduly však zatím nemám zkušenost. Jak to prosím tě udělat, aby to bylo bez submodulů?
díky moc

před 9 dny

CZechBoY
Člen | 3406
+
0
-

Necommituj ty slozky je jako submoduly :-)

před 9 dny

jikki
Člen | 42
+
0
-

No já právě zatím nekomitoval nikdy nic jako submodul :) veškeré commity byly normální.
Když nainstaluji mou komponentu do projektu, tak obsahuje i složku .git oproti jiným balíčkům. Předpokládám, že právě kvůli tomu se při klonování repozitáře projektu nenahraje samotný kód komponenty. Jinak si to neumím vysvětlit. Jak se ale té složky zbavit. Mám v tom trochu guláš :)

Editoval jikki (5. 11. 8:10)

před 9 dny

CZechBoY
Člen | 3406
+
0
-

Zkus preinstalovat composer pres composer install —prefer-dist

pak zkontroluj .gitmodules v rootu repozitare

před 8 dny

jikki
Člen | 42
+
0
-

To nainstaluje komponentu úplně stejně. A složku .gitmodules nemám nikde :)

Když jsem měl komponentu na githubu jako soukromý repozitář a do composer.json jsem v projektu přidal adresu takto, tak to nainstalovalo správně, bez složky .git.

"repositories": [
    {
        "type": "vcs",
        "url": "git@github.com:jmeno/komponenta.git"
    }
],

A když jsem adresu přidal jako https, tak to nainstalovalo i se složkou .git a dělalo to problém jako teď

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/com:jmeno/komponenta.git"
    }
],

Bohužel nyní s Gitea nemohu mít ssh přístup a musím tedy rozjet https.

před 8 dny

Mabar
Člen | 145
+
0
-

https://github.com/com:jmeno/komponenta.git

Url pro https by měla používat lomítko, ne dvojtečku.

tak to nainstalovalo i se složkou .git

David ti už poslal návod ;) Nesmíš commitovat .git složky ve vendoru. Takže použij jednu z těch čtyř možností v odkazu, nejjednodušší budeš mít do .gitignore přidat /vendor/**/.git

před 8 dny

jikki
Člen | 42
+
0
-

Dvojtečka u https byl jen překlep tady na foru :)

Zkouším v projektu do .gitignore přidat /vendor/**/.git. Pak push do bare repo a klonovat jinde. Složka mé komponenty ve vendor je opět prázdná. Zkoušel jsem smazat celou složku vendor a composer.lock a natáhnout znova. Zkoušel jsem i vytvořit jak pracovní tak bare repozitář vytvořit znova. Nevím co dělám špatně.

před 8 dny

Mabar
Člen | 145
+
0
-

Ujistil jsi se, že .git složky nejsou commitnuté? Smaž vendor, commitni, pak znova stáhni a commitni ho už bez .git složek.
Btw, ideální by bylo vendor vůbec necommitovat

před 8 dny

jikki
Člen | 42
+
0
-

Udělal jsem přesně jak píšeš, ale nepomáhá to.
Vendor potřebuji.

před 8 dny

David Matějka
Moderator | 5972
+
0
-

a zkousel si smazat ty .git slozky, jak je v tom odkazu, co jsem posilal?

před 8 dny

jikki
Člen | 42
+
0
-

Zkoušel jsem smazat vendor, commit, composer install, smazat složku .git z mé komponenty ve vendor, commit, push. Pak při klonování jinám to udělalo správně, ve vendor jsem viděl i zdrojaky mé komponenty. Při composer update se ale natáhne opět složka .git a před commitem ji musít opět smazat. Tak fajn, aspoň, že to takto funguje, jen musím myslet na to smazání.

/vendor/**/.git tohle v .gitignore v projektu nemá žádný efekt.

Ještě jsem zkoušel nahrát totožnou komponentu na github a přidat si ji do projektu. Fungovalo to správně přes https i git@ , tedy nenatahovalo to složku .git.

Dále jsem zkoušel natáhnout bare repozitář přímo z disku. Chová se to stejné jako z Gitea, tzn stahuje to i .git.

Zajímalo by mě proč se to chová jinák z githubu a jinak z lokálních repozitárů.

Budu nad tím dál kolaborovat, když na něco přijdu, tak sem napíšu.
Jinak moc díky pánové za pomoc :)

před 8 dny

David Matějka
Moderator | 5972
+
0
-

muzes na to vyuzit treba post-update script: https://getcomposer.org/…s/scripts.md

před 8 dny

Mabar
Člen | 145
+
0
-

Co takto? Mělo by být možné ty složky z commitu vyjmout

/vendor/**/**/.git

před 6 dny

jikki
Člen | 42
+
0
-

Nejde to :( Zkoušel jsem ještě i kombinace hvězdiček a lomítek, ale nepovedlo se.

před 6 dny

chemix
Gold Partner | 1063
+
0
-

Me pomaha composer cleaner od dg https://github.com/…oser-cleaner

včera

jikki
Člen | 42
+
0
-

chemix napsal(a):

Me pomaha composer cleaner od dg https://github.com/…oser-cleaner

Tohle zdá se, že pomáha efektivně. Má to nějaké stinné stránky? Z projektu mi to smazalo přes 1000 souborů, ale zdá se že vše funguje.

včera

CZechBoY
Člen | 3406
+
+1
-

Je potreba aby mely knihovny spravne nastaveny autoloading a pokud pouzivas nejaky neautoloadovane souboru z vendor slozky tak je potreba je uvest v cleaner ignore.