Útmutató a JGithez

1. Bemutatkozás

A JGit a Git verzióvezérlő rendszer könnyű, tiszta Java-könyvtár-megvalósítása - beleértve az adattár elérési rutinjait, hálózati protokollokat és az alapvető verziókezelő algoritmusokat.

A JGit a Git Java-ban írt, viszonylag teljes funkcionalitású megvalósítása, amelyet a Java-közösség széles körben használ. A JGit projekt az Eclipse égisze alatt található, otthona pedig a JGit-n található.

Ebben az oktatóanyagban elmagyarázzuk, hogyan kell vele dolgozni.

2. Az első lépések

Számos módon lehet összekapcsolni a projektet a JGittel és elkezdeni a kód írását. Valószínűleg a legegyszerűbb módszer a Maven használata - az integráció a következő kódrészlet hozzáadásával valósul meg tag a mi pom.xml fájl:

 org.eclipse.jgit org.eclipse.jgit 2016.06.6.1212191935-r 

Kérjük, keresse fel a Maven Central adattárát a JGit legújabb verziójához. Ha ez a lépés megtörtént, a Maven automatikusan megszerzi és felhasználja a szükséges JGit könyvtárakat.

Ha az OSGi csomagokat részesíti előnyben, van egy p2-tár is. Látogasson el az Eclipse JGit oldalra, és szerezze be a könyvtár integrálásához szükséges információkat.

3. Adattár létrehozása

A JGit két alapszintű API-val rendelkezik: vízvezeték és porcelán. Ezek terminológiája magától a Git-től származik. A JGit ugyanazokra a területekre oszlik:

  • porcelán API-k - front-end általános felhasználói szintű műveletekhez (hasonlóan a Git parancssori eszközhöz)
  • vízvezeték API-k - közvetlen kölcsönhatásba lépnek alacsony szintű adattár objektumokkal

A legtöbb JGit munkamenet kiindulópontja a Adattár osztály. Az első dolog, amit meg fogunk tenni, egy új létrehozása Adattár példa.

A benne parancs segítségével létrehozhatunk egy üres tárházat:

Git git = Git.init (). SetDirectory ("/ path / to / repo"). Call ();

Ez létrehoz egy adattárat, amelynek munkakönyvtár található a megadott helyen setDirectory ().

Egy meglévő adattár klónozható a cloneRepository parancs:

Git git = Git.cloneRepository () .setURI ("// github.com/eclipse/jgit.git") .setDirectory ("/ path / to / repo") .call ();

A fenti kód klónozza a JGit adattárat a megnevezett helyi könyvtárba elérési út / repo.

4. Git objektumok

Az összes objektumot SHA-1 azonosító képviseli a Git objektum modellben. A JGit-ben ezt a AnyObjectId és ObjectId osztályok.

A Git objektum modellben négy típusú objektum létezik:

  • folt - fájl adatok tárolására szolgál
  • fa - könyvtár; másra hivatkozik fák és foltok
  • elkövetni - mutat egyetlen fára
  • címke - az elkötelezettséget különlegesnek minősíti; általában meghatározott kibocsátások megjelölésére használják

Egy objektum lerakatból történő feloldásához egyszerűen adja át a megfelelő verziót, a következő függvény szerint:

ObjectId fej = repository.resolve ("HEAD");

4.1. Ref

A Ref olyan változó, amely egyetlen objektum azonosítót tartalmaz. Az objektumazonosító bármely érvényes Git objektum lehet (folt, fa, elkövetni, címke).

Például a head hivatkozás lekérdezéséhez egyszerűen hívja:

Ref HEAD = adattár.getRef ("refs / heads / master");

4.2. RevWalk

A RevWalk végigvisz egy elkötelezettségi grafikont, és a megfelelő sorrendet állítja elő:

RevWalk walk = új RevWalk (adattár);

4.3. RevCommit

A RevCommit elkötelezettséget jelent a Git objektum modellben. A kötelezettség elemzéséhez használja a RevWalk példa:

RevWalk walk = új RevWalk (adattár); RevCommit elkövetés = walk.parseCommit (objectIdOfCommit);

4.4. RevTag

A RevTag egy címkét képvisel a Git objektum modellben. Használhatja a RevWalk címke elemzéséhez szükséges példány:

RevWalk walk = új RevWalk (adattár); RevTag tag = walk.parseTag (objectIdOfTag);

4.5. RevTree

A RevTree egy fát képvisel a Git objektum modellben. A RevWalk a példányt egy fa elemzésére is használják:

RevWalk walk = új RevWalk (adattár); RevTree tree = walk.parseTree (objectIdOfTree);

5. Porcelán API

Míg a JGit sok alacsony szintű kódot tartalmaz a Git tárházakkal való együttműködéshez, egy magasabb szintű API-t is tartalmaz, amely utánozza a Git egy részét porcelán parancsokat a org.eclipse.jgit.api csomag.

5.1. AddCommand (git-add)

A AddCommand lehetővé teszi fájlok hozzáadását az indexhez a következőn keresztül:

  • addFilepattern()

Itt egy rövid példa arra, hogyan lehet fájlkészletet hozzáadni az indexhez a porcelán API:

Git git = új Git (db); AddCommand add = git.add (); add.addFilepattern ("someDirectory"). call ();

5.2. CommitCommand (git-elkötelezem)

A CommitCommand lehetővé teszi vállalások végrehajtását, és a következő lehetőségek állnak rendelkezésre:

  • setAuthor()
  • setCommitter()
  • setAll()

Itt van egy gyors példa arra, hogyan kell elköteleződni a porcelán API:

Git git = új Git (db); CommitCommand kötelezettségvállalás = git.commit (); comm.setMessage ("kezdeti elkötelezettség"). call ();

5.3. TagCommand (git-tag)

A TagCommand számos címkézési lehetőséget támogat:

  • setName()
  • setMessage()
  • setTagger()
  • setObjectId()
  • setForceUpdate()
  • setSigned()

Itt egy gyors példa az elkötelezettség címkézésére a porcelán API:

Git git = új Git (db); RevCommit elkövetés = git.commit (). SetMessage ("kezdeti elkötelezettség"). Call (); RevTag tag = git.tag (). SetName ("tag"). Call ();

5.4. LogCommand (git-log)

A LogCommand lehetővé teszi, hogy könnyedén járjon egy elkötelezettség grafikonon.

  • add (AnyObjectId start)
  • addRange (AnyObjectId óta, AnyObjectId addig)

Itt van egy rövid példa arra, hogyan lehet naplóüzeneteket kapni:

Git git = új Git (db); Iterálható napló = git.log (). Hívás ();

6. Hangya feladatok

A JGitnek van néhány közös Ant feladata is org.eclipse.jgit.ant csomag.

Ezeknek a feladatoknak a használatához:

Ez biztosítaná a git-klón, git-init és git-checkout feladatok.

6.1. git-klón

A következő attribútumok szükségesek:

  • uri: az URI, amelyből klónozni kell

A következő attribútumok nem kötelezőek:

  • rend: a klónozás célállomása (alapértelmezés szerint egy ember által olvasható könyvtárnév használata a URI)
  • csupasz: igaz/hamis/Igen/nem jelzi, hogy a klónozott adattárnak csupasznak kell-e lennie vagy sem (alapértelmezés szerint hamis)
  • ág: a kezdeti ág, amelyet ellenőrizni kell a lerakat klónozásakor (alapértelmezés szerint FEJ)

6.2. git-init

A. Futtatásához nem szükséges attribútum git-init feladat.

A következő attribútumok nem kötelezőek:

  • rend: az útvonal, ahol a git adattár inicializálva van (alapértelmezés szerint $ GIT_DIR vagy az aktuális könyvtár)
  • csupasz: igaz/hamis/Igen/nem - annak jelzése, hogy az adattárnak csupasznak kell lennie vagy sem (alapértelmezés szerint hamis)

6.3. git-checkout

A következő attribútumok szükségesek:

  • src: a git-tárház elérési útja
  • ág: a kezdeti fiók a pénztárhoz

A következő attribútumok nem kötelezőek:

  • createbranch: igaz/hamis/Igen/nem jelzi, hogy létre kell-e hozni az ágat, ha még nem létezik (alapértelmezés szerint hamis)
  • Kényszerítés: igaz/hamis/Igen/nem: ha igaz/Igen és a megadott névvel rendelkező ág már létezik, egy meglévő ág kezdőpontját új kezdőpontra állítjuk be; ha hamis, a meglévő ág nem változik (alapértelmezés szerint hamis)

7. Következtetés

A magas szintű JGit API-t nem nehéz megérteni. Ha tudja, milyen git parancsot használjon, könnyen kitalálhatja, hogy mely osztályokat és módszereket használja a JGitben.

Itt elérhető a futtatásra kész JGit kódrészletek gyűjteménye.

Ha továbbra is nehézségei vagy kérdései vannak, kérjük, hagyjon megjegyzést itt, vagy kérjen segítséget a JGit közösségtől.