Sprievodca JGitom

1. Úvod

JGit je ľahká a čistá implementácia knižnice Java systému riadenia verzií Git - vrátane rutín prístupu do úložiska, sieťových protokolov a základných algoritmov riadenia verzií.

JGit je pomerne plnohodnotná implementácia Gitu napísaná v jazyku Java a je široko používaná v komunite Java. Projekt JGit zastrešuje Eclipse a jeho domov nájdete na stránkach JGit.

V tomto návode vám vysvetlíme, ako s ním pracovať.

2. Začíname

Existuje niekoľko spôsobov, ako spojiť váš projekt s JGitom a začať písať kód. Pravdepodobne najjednoduchší spôsob je použiť Maven - integrácia sa dosiahne pridaním nasledujúceho úryvku do súboru značka v našom pom.xml spis:

 org.eclipse.jgit org.eclipse.jgit 4.6.0.201612231935-r 

Najnovšiu verziu JGit nájdete v archíve Maven Central. Po vykonaní tohto kroku Maven automaticky získa a použije knižnice JGit, ktoré budeme potrebovať.

Ak dávate prednosť balíkom OSGi, existuje aj úložisko p2. Navštívte Eclipse JGit a získate potrebné informácie o integrácii tejto knižnice.

3. Vytvorenie úložiska

JGit má dve základné úrovne API: Inštalatérstvo a porcelán. Terminológia pre tieto termíny pochádza zo samotného Gitu. JGit je rozdelený do rovnakých oblastí:

  • porcelán API - front-end pre bežné akcie na úrovni používateľa (podobne ako nástroj príkazového riadku Git)
  • Inštalatérstvo API - priama interakcia s objektmi nízkej úrovne úložiska

Východiskový bod pre väčšinu relácií JGit je v Úložisko trieda. Prvá vec, ktorú urobíme, je vytvorenie nového Úložisko inštancia.

The init príkaz nám umožní vytvoriť prázdne úložisko:

Git git = Git.init (). SetDirectory ("/ cesta / k / repo"). Volanie ();

Týmto sa vytvorí úložisko s pracovným adresárom na danom mieste setDirectory ().

Existujúce úložisko je možné klonovať pomocou cloneRepository príkaz:

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

Vyššie uvedený kód klonuje úložisko JGit do lokálneho adresára s názvom cesta / do / repo.

4. Git objekty

Všetky objekty sú v modeli objektu Git reprezentované identifikátorom SHA-1. V JGit to predstavuje AnyObjectId a ObjectId triedy.

V objektovom modeli Git existujú štyri typy objektov:

  • kvapka - slúži na ukladanie dát súborov
  • strom - adresár; odkazuje na iné stromy a guľky
  • spáchať - ukazuje na jeden strom
  • značka - označí potvrdenie za zvláštne; sa všeobecne používa na označovanie konkrétnych vydaní

Ak chcete vyriešiť objekt z úložiska, jednoducho vykonajte správnu revíziu ako v nasledujúcej funkcii:

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

4.1. Ref

The Ref je premenná, ktorá obsahuje jeden identifikátor objektu. Identifikátorom objektu môže byť akýkoľvek platný objekt Git (kvapka, strom, spáchať, značka).

Napríklad na vyhľadanie odkazu na head môžete jednoducho zavolať:

Ref HEAD = repository.getRef ("refs / heads / master");

4.2. RevWalk

The RevWalk prejde grafom potvrdenia a vytvorí zodpovedajúce potvrdenia v poradí:

RevWalk walk = nový RevWalk (úložisko);

4.3. RevCommit

The RevCommit predstavuje potvrdenie v objektovom modeli Git. Ak chcete analyzovať potvrdenie, použite a RevWalk inštancia:

RevWalk walk = nový RevWalk (úložisko); RevCommit commit = walk.parseCommit (objectIdOfCommit);

4.4. RevTag

The RevTag predstavuje značku v objektovom modeli Git. Môžete použiť a RevWalk inštancia na analýzu značky:

RevWalk walk = nový RevWalk (úložisko); Značka RevTag = walk.parseTag (objectIdOfTag);

4.5. RevTree

The RevTree predstavuje strom v objektovom modeli Git. A RevWalk inštancia sa tiež používa na analýzu stromu:

RevWalk walk = nový RevWalk (úložisko); RevTree strom = walk.parseTree (objectIdOfTree);

5. Porcelánové API

Aj keď JGit obsahuje veľa nízkoúrovňového kódu na prácu s archívmi Git, obsahuje aj API vyššej úrovne, ktoré napodobňuje niektoré z Git porcelán príkazy v org.eclipse.jgit.api balíček.

5.1. AddCommand (git-pridať)

The AddCommand umožňuje pridávať súbory do indexu pomocou:

  • addFilepattern()

Tu je rýchly príklad toho, ako pridať súbor súborov do indexu pomocou porcelán API:

Git git = nový Git (db); AddCommand add = git.add (); add.addFilepattern ("someDirectory"). call ();

5.2. CommitCommand (git-commit)

The CommitCommand umožňuje vykonávať záväzky a má k dispozícii nasledujúce možnosti:

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

Tu je rýchly príklad toho, ako sa zaviazať pomocou porcelán API:

Git git = nový Git (db); CommitCommand commit = git.commit (); commit.setMessage ("počiatočné potvrdenie"). call ();

5.3. TagCommand (značka git)

The TagCommand podporuje rôzne možnosti označovania:

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

Tu je rýchly príklad označenia potvrdenia pomocou súboru porcelán API:

Git git = nový Git (db); RevCommit commit = git.commit (). SetMessage ("počiatočné potvrdenie"). Call (); Značka RevTag = git.tag (). SetName ("značka"). Call ();

5.4. LogCommand (git-log)

The LogCommand umožňuje ľahko prechádzať grafom potvrdenia.

  • pridať (AnyObjectId štart)
  • addRange (AnyObjectId od, AnyObjectId do)

Tu je rýchly príklad toho, ako získať niektoré správy z denníka:

Git git = nový Git (db); Iterovateľný protokol = git.log (). Call ();

6. Úlohy mravca

JGit má tiež niekoľko bežných úloh Ant, ktoré obsahuje org.eclipse.jgit.ant zväzok.

Ak chcete použiť tieto úlohy:

Toto by poskytlo git-klon, git-init a git-pokladňa úlohy.

6.1. git-klon

Vyžadujú sa tieto atribúty:

  • uri: identifikátor URI, z ktorého sa má klonovať

Nasledujúce atribúty sú voliteľné:

  • cieľ: cieľ, do ktorého sa má klonovať (predvolené nastavenie je použiť názov adresára čitateľný pre človeka na základe poslednej zložky cesty v priečinku URI)
  • holý: pravda/nepravdivé/Áno/č na označenie, či má byť klonované úložisko holé alebo nie (predvolené nastavenie) nepravdivé)
  • pobočka: počiatočná vetva, ktorá sa má skontrolovať pri klonovaní úložiska (predvolené je HLAVA)

6.2. git-init

Na spustenie súboru nie sú potrebné žiadne atribúty git-init úloha.

Nasledujúce atribúty sú voliteľné:

  • cieľ: cesta, kde je inicializované úložisko git (predvolené pre $ GIT_DIR alebo aktuálny adresár)
  • holý: pravda/nepravdivé/Áno/č na označenie, či má byť úložisko holé alebo nie (predvolené je) nepravdivé)

6.3. git-pokladňa

Vyžadujú sa tieto atribúty:

  • src: cesta do úložiska git
  • pobočka: počiatočná vetva k pokladni

Nasledujúce atribúty sú voliteľné:

  • vytvoriť odvetvie: pravda/nepravdivé/Áno/č na označenie, či by sa mala vetva vytvoriť, ak ešte neexistuje (predvolené nastavenie je) nepravdivé)
  • sila: pravda/nepravdivé/Áno/č: ak pravda/Áno a pobočka s daným menom už existuje, počiatočný bod existujúcej pobočky sa nastaví na nový začiatočný bod; ak nepravdivé, existujúca vetva sa nezmení (predvolené nastavenie je nepravdivé)

7. Záver

Rozhranie JGit API na vysokej úrovni nie je ťažké pochopiť. Ak viete, aký príkaz git máte použiť, môžete ľahko odhadnúť, ktoré triedy a metódy sa majú v JGit použiť.

Tu je k dispozícii zbierka úryvkov kódu JGit pripravených na spustenie.

Ak stále máte ťažkosti alebo otázky, zanechajte prosím komentár tu alebo požiadajte o pomoc komunitu JGit.


$config[zx-auto] not found$config[zx-overlay] not found