Vodič za JGit

1. Uvod

JGit je lagana, čista Java knjižnica koja implementira Git sustav kontrole verzija - uključujući rutine pristupa spremištu, mrežne protokole i osnovne algoritme kontrole verzije.

JGit je relativno cjelovita implementacija Gita napisana na Javi i široko se koristi u Java zajednici. JGit projekt je pod kišobranom Eclipse, a njegov dom može se naći na JGitu.

U ovom ćemo uputstvu objasniti kako raditi s tim.

2. Početak rada

Postoji nekoliko načina da svoj projekt povežete s JGitom i započnete s pisanjem koda. Vjerojatno je najlakši način koristiti Maven - integracija se postiže dodavanjem sljedećeg isječka u oznaka u našem pom.xml datoteka:

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

Molimo posjetite spremište Maven Central za najnoviju verziju JGita. Nakon što je ovaj korak završen, Maven će automatski nabaviti i koristiti JGit knjižnice koje će nam trebati.

Ako više volite OSGi pakete, tu je i p2 spremište. Posjetite Eclipse JGit kako biste dobili potrebne informacije o integraciji ove knjižnice.

3. Stvaranje spremišta

JGit ima dvije osnovne razine API-ja: vodovod i porculan. Terminologija za njih dolazi iz samog Gita. JGit je podijeljen na ista područja:

  • porculan API-ji - prednji kraj za uobičajene radnje na razini korisnika (slično alatu za naredbene retke Git)
  • vodovod API-ji - izravna interakcija s objektima spremišta niske razine

Početna točka za većinu JGit sesija je u Spremište razred. Prvo što ćemo učiniti je stvaranje novog Spremište primjer.

The u tome naredba će nam stvoriti prazno spremište:

Git git = Git.init (). SetDirectory ("/ put / do / repo"). Call ();

Ovo će stvoriti spremište s radnim direktorijumom na mjestu kojemu je dato setDirectory ().

Postojeće spremište može se klonirati s cloneRepository naredba:

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

Gornji kod će klonirati spremište JGit u imenovani lokalni direktorij put / do / repo.

4. Git objekti

Svi objekti su predstavljeni SHA-1 id u Git objektnom modelu. U JGit-u to predstavlja AnyObjectId i ObjectId razreda.

U Git objektnom modelu postoje četiri vrste objekata:

  • mrlja - koristi se za pohranu podataka datoteka
  • stablo - imenik; upućuje na druge drveće i mrlje
  • počiniti - pokazuje na jedno stablo
  • označiti - označava počinjenje kao posebno; obično se koristi za označavanje određenih izdanja

Da biste riješili objekt iz spremišta, jednostavno dodajte ispravnu reviziju kao u sljedećoj funkciji:

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

4.1. Ref

The Ref je varijabla koja sadrži jedan identifikator objekta. Identifikator objekta može biti bilo koji valjani Git objekt (mrlja, stablo, počiniti, označiti).

Na primjer, da biste zatražili referencu na head, možete jednostavno nazvati:

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

4.2. RevWalk

The RevWalk hoda grafom urezivanja i proizvodi odgovarajuće urezivanja redom:

RevWalk šetnja = novi RevWalk (spremište);

4.3. RevCommit

The RevCommit predstavlja predavanje u objektnom modelu Git. Da biste raščlanili urezivanje, upotrijebite a RevWalk primjer:

RevWalk šetnja = novi RevWalk (spremište); RevCommit commit = walk.parseCommit (objectIdOfCommit);

4.4. RevTag

The RevTag predstavlja oznaku u Git objektnom modelu. Možete koristiti RevWalk primjer za raščlanjivanje oznake:

RevWalk šetnja = novi RevWalk (spremište); Oznaka RevTag = walk.parseTag (objectIdOfTag);

4.5. RevTree

The RevTree predstavlja stablo u objektnom modelu Git. A RevWalk instanca se također koristi za raščlanjivanje stabla:

RevWalk šetnja = novi RevWalk (spremište); Stablo RevTree = walk.parseTree (objectIdOfTree);

5. Porculanski API

Iako JGit sadrži puno nižeg koda za rad s Git spremištima, on također sadrži API više razine koji oponaša neke od Git-a porculan naredbe u org.eclipse.jgit.api paket.

5.1. AddCommand (git-dodaj)

The AddCommand omogućuje vam dodavanje datoteka u indeks putem:

  • addFilepattern()

Evo kratkog primjera kako dodati skup datoteka u indeks pomoću porculan API:

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

5.2. Povjeri naredbu (git-počiniti)

The Povjeri naredbu omogućuje izvršavanje predaja i ima na raspolaganju sljedeće opcije:

  • setAuthor()
  • setCommitter()
  • postavitiSve()

Evo kratkog primjera kako izvršiti predavanje pomoću porculan API:

Git git = novi Git (db); PovjeritiCommand commit = git.commit (); commit.setMessage ("početno urezivanje"). call ();

5.3. TagCommand (git-tag)

The TagCommand podržava razne mogućnosti označavanja:

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

Evo kratkog primjera označavanja urezivanja pomoću porculan API:

Git git = novi Git (db); RevCommit commit = git.commit (). SetMessage ("početno predavanje"). Call (); Oznaka RevTag = git.tag (). SetName ("tag"). Call ();

5.4. LogCommand (git-log)

The LogCommand omogućuje vam lako hodanje grafom urezivanja.

  • dodaj (AnyObjectId start)
  • addRange (AnyObjectId od, AnyObjectId do)

Evo kratkog primjera kako dobiti neke poruke dnevnika:

Git git = novi Git (db); Iterable log = git.log (). Call ();

6. Zadaci mrava

JGit također ima neke uobičajene Ant zadatke sadržane u org.eclipse.jgit.ant paket.

Da biste koristili te zadatke:

To bi osiguralo git-klon, git-init i git-checkout zadaci.

6.1. git-klon

Sljedeći su atributi potrebni:

  • uri: URI za kloniranje

Sljedeći atributi nisu obavezni:

  • dest: odredište na koje se klonira (zadana je upotreba čitljivog imena direktorija na temelju posljednje komponente puta datoteke URI)
  • ogoljen: pravi/lažno/Da/Ne naznačiti bi li klonirano spremište trebalo biti golo ili ne (zadane vrijednosti su: lažno)
  • podružnica: početna grana koju treba provjeriti pri kloniranju spremišta (zadano na GLAVA)

6.2. git-init

Nisu potrebni atributi za pokretanje git-init zadatak.

Sljedeći atributi nisu obvezni:

  • dest: staza na kojoj se inicijalizira git spremište (zadano na $ GIT_DIR ili trenutni direktorij)
  • ogoljen: pravi/lažno/Da/Ne naznačiti bi li spremište trebalo biti golo ili ne (prema zadanim postavkama lažno)

6.3. git-checkout

Sljedeći su atributi potrebni:

  • src: put do git spremišta
  • podružnica: početna grana za naplatu

Sljedeći atributi nisu obvezni:

  • stvoritigrana: pravi/lažno/Da/Ne da naznači treba li granu stvoriti ako već ne postoji (zadane vrijednosti su: lažno)
  • sila: pravi/lažno/Da/Ne: ako pravi/Da a grana s danim imenom već postoji, početna točka postojeće grane postavit će se na novu početnu točku; ako lažno, postojeća grana neće se mijenjati (zadane vrijednosti lažno)

7. Zaključak

API JGit na visokoj razini nije teško razumjeti. Ako znate koju git naredbu koristiti, lako možete pogoditi koje klase i metode koristiti u JGit-u.

Ovdje je dostupna zbirka spremnih za pokretanje isječaka JGit koda.

Ako i dalje imate poteškoća ili pitanja, ostavite komentar ovdje ili zatražite pomoć od JGit zajednice.


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