GitHub - fork-olás
Nyílt forráskódú projekt esetében előfordul, hogy más kódjához mi magunk is hozzá szeretnénk nyúlni, szeretnénk bele fejleszteni, ki szeretnénk egészíteni. Érthető okokból azonban a projektek tulajdonosai nem adnak bárkinek hozzáférést a repóhoz. Emiatt szükség lesz egy saját változatra.
Megtehetjük azt, hogy saját magunk leklónozzuk a projektet, majd módosítva a “remote” beállításokat egy saját, üres repóba feltöltjük. Ezt hívjuk a repó fork-olásának (a szó azt jelenti, hogy elágazás: ahogy az út egyből kettéágazik, vagy ahogy a villa egy nyeléből több kisebb “ág” nő ki).
Ha a platform megengedi, akkor ezt egy kattintással is elvégezhetjük. A példában a GitHub weboldalt használom.
Forkolás
A projekt weboldalán kattintsunk erre a gombra:
Ez után a saját projektjeink között meg fog jelenni a repó, együtt a teljes történelmével, változtatásaival.
A kapcsolat nem szűnik meg a két repó között, a név alatt látszik, hogy melyik volt az eredeti repó:
Forkolás után a két projektet különbözőnek lehet tekinteni, a saját repónkba gond nélkül tudunk saját kódot push-olni - de ha szeretnénk, akkor az eredetit is nyomon tudjuk követni, néhány parancs kiadásával az eredeti projekt változtatásait is tudjuk integrálni.
Ilyen módon lehet karban tartani pl. egy népszerű, Linux-os projekt Windows-os változatát, ha az eredeti készítő erre nem tud időt szánni:
- Az eredeti projekt a Linux-os kódot tartalmazza
- A forkolt projekt tartalmazza a szükséges Windows-os módosításokat, miközben naprakészen tud maradni az eredetivel
A két projekt innentől kezdve párhuzamosan fut.
Alkalomszerűen előfordulhat, hogy a fork-olt projekt válik népszerűbbé, mert az eredeti tulajdonosánál jobban karban tartja, gyorsabban fejleszti az új funkciókat stb. Ez történt az OpenOffice esetében is: az eredeti projekt jövőjét féltették az Oracle-től, ezért készítettek a fork-ot, a jogi problémákat elkerülendő a projektet átneveztét LibreOffice-re, és azóta ez lett a népszerűbb változat.
Pull request
Ha a saját módosításunkat az eredeti projekt fejlesztői is szívesen látnának, akkor készíthetünk egy ún. pull request-et. Ez egy felkérés arra, hogy bizonyos commitokat az eredeti fejlesztő pull-oljon a mi projektünkből. Ezt ő pedig elfogadhatja, vagy visszautasíthatja.
Példa egy pull request-re: lehet comment-elni, látszanak a bele tartozó commitok.
Github-on a pull request az elsődleges módszer a különböző fejlesztők közös munkájához. Cégen belüli, privát git repók esetében is léteznek hasonló funkciók, amely egy repón belül, a különböző fejlesztési ágak között valósítja meg ugyanezt (ún. merge request - merge-elésre felkérés).