Lokális repók importálása Gitea-be

Bevezetés

A Gitea komolyabb használata előtt érdemes végigolvasni az összes beállítási lehetőséget, ugyanis ez a kulcs sokmindenhez, bizonyos dolgok sehol máshol nincsenek dokumentálva. A Gitea-s doksi nem valami segítőkész, nem ír külön a funkciókról és azok használatáról, megkötéseiről. Így van ez a repó importálással is.

Az alapszitu az, hogy a Gitea gitea-repositories mappájába sajnos nem elég és nem is célravezető csak simán bemásolni egy bare repository-t. Ugyanis a Gitea csak azokat a repókat kezeli, amiket ő nyilvántartásba vett az adatbázisában, és egyébként is saját Git hook-okat használ. Vagyis a Gitea UI-ról kell őket létrehozni, nincs mese.

Migrálás

Szerencsére a felület biztosít egy migrálás opciót (fent a ”+” ikon lenyíló menüjében). Ennek a funkciónak azonban vannak trükkjei.

Egyrészt, mint ahogy pár sikertelen próbálkozás után egy GitHub issue-ból megtudtam, az SSH nem támogatott ennél a funkciónál.

Másrészt, kínjában az ember kipróbálja már a local path-t is, amikre a rendszer szintén visszapofázik, miszerint ez nem engedélyezett.

A Site Administration > User Accounts oldalon a saját fiókom szerkesztésénél, a lap alján van egy May import local repositories jelölőnégyzet. Ha ezt bepipálom és elmentem, csak egy pillanatig érzem a remény édes ízét, mert amint újratöltődik a lap, a pipa eltűnik. És persze az importálás nem működik. Mindennek ellenére az adatbázisban (megnéztem), a megfelelő flag-et átbillentette 1-esre, tehát elmentette, csak nem jeleníti meg…

…mert van egy globális tiltás is. És ezt én egyetlen egy helyen láttam leírva (amit jóval azután néztem meg, hogy beletőrödtem a kudarcba), a Config Cheat Sheet-en, ahol felsorolja az összes paramétert:

IMPORT_LOCAL_PATHS: false: Prevent all users (including admin) from importing local path on server.

Vagyis:

  1. A custom/conf/app.ini konfigfájlban engedélyezni kell globálisan a lokális importot:
[security]
IMPORT_LOCAL_PATHS = true
  1. A felületen, a Site Administration > User Accounts alatt a saját fiókunk szerkesztésénél (Edit) egyénileg is engedélyezni kell ezt, a May import local repositories jelölőnégyzet bepipálásával tehetjük meg
  2. Ezután már megadhatunk a migrálásnál helyi útvonalat, pl. /home/me/bare-repos/repo1

Migráláskor a Gitea gyakorlatilag csinál egy másolatot a megadott repóról a gitea-repositories-ba és regisztrálja az adatbázisba.

Git módszer

Természetesen Git parancsokkal is migrálhatunk, kívülről:

git clone --mirror OLD_REPO_URL
cd OLD_REPO.git
git remote set-url origin http://GITEA_DOMAIN/GITEA_USER/NEW_REPO.git
git push --mirror origin

Viszont a push előtt a fentebb írtak miatt előbb létre kell hozni a repót a Gitea webes felületén.