En guide til JGit

1. Introduksjon

JGit er en lett, ren Java-biblioteksimplementering av Git versjonskontrollsystemet - inkludert rutiner for tilgang til depot, nettverksprotokoller og kjerneversjonskontrollalgoritmer.

JGit er en relativt fullverdig implementering av Git skrevet i Java og er mye brukt i Java-samfunnet. JGit-prosjektet er under formørkelsesparaplyen, og dets hjem finner du på JGit.

I denne opplæringen forklarer vi hvordan du kan jobbe med den.

2. Komme i gang

Det er flere måter å koble prosjektet til JGit og begynne å skrive kode. Sannsynligvis er den enkleste måten å bruke Maven - integrasjonen oppnås ved å legge til følgende kodebit i tag i vår pom.xml fil:

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

Besøk Maven Central repository for den nyeste versjonen av JGit. Når dette trinnet er gjort, vil Maven automatisk anskaffe og bruke JGit-bibliotekene vi trenger.

Hvis du foretrekker OSGi-bunter, er det også et p2-lager. Besøk Eclipse JGit for å få nødvendig informasjon om hvordan du integrerer dette biblioteket.

3. Opprette et depot

JGit har to grunnleggende nivåer av API: rørleggerarbeid og porselen. Terminologien for disse kommer fra Git selv. JGit er delt inn i de samme områdene:

  • porselen APIer - front-end for vanlige handlinger på brukernivå (ligner på Git kommandolinjeverktøy)
  • rørleggerarbeid APIer - direkte interaksjon med lagringsobjekter på lavt nivå

Utgangspunktet for de fleste JGit-økter er i Oppbevaringssted klasse. Det første vi skal gjøre er å skape et nytt Oppbevaringssted forekomst.

De i det kommando vil la oss opprette et tomt arkiv:

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

Dette vil opprette et lager med en arbeidskatalog på stedet gitt til setDirectory ().

Et eksisterende lager kan klones med cloneRepository kommando:

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

Koden ovenfor vil klone JGit-depotet i den lokale katalogen som heter sti / til / repo.

4. Git Objekter

Alle objekter er representert med en SHA-1-id i Git-objektmodellen. I JGit er dette representert av AnyObjectId og ObjectId klasser.

Det er fire typer objekter i Git-objektmodellen:

  • klatt - brukes til lagring av fildata
  • tre - en katalog; den refererer til annet trær og klatter
  • begå - peker på et enkelt tre
  • stikkord - markerer en forpliktelse som spesiell; vanligvis brukt til merking av spesifikke utgivelser

For å løse et objekt fra et depot, passerer du bare riktig revisjon som i følgende funksjon:

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

4.1. Ref

De Ref er en variabel som inneholder en enkelt objektidentifikator. Objektidentifikatoren kan være et hvilket som helst gyldig Git-objekt (klatt, tre, begå, stikkord).

For eksempel, for å søke etter referansen til hodet, kan du bare ringe:

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

4.2. RevWalk

De RevWalk går en forpliktelsesgraf og produserer samsvarende forpliktelser i rekkefølge:

RevWalk walk = nye RevWalk (repository);

4.3. RevCommit

De RevCommit representerer en forpliktelse i Git-objektmodellen. For å analysere en forpliktelse, bruk a RevWalk forekomst:

RevWalk walk = nye RevWalk (repository); RevCommit commit = walk.parseCommit (objectIdOfCommit);

4.4. RevTag

De RevTag representerer en tag i Git-objektmodellen. Du kan bruke en RevWalk forekomst for å analysere en tag:

RevWalk walk = ny RevWalk (repository); RevTag tag = walk.parseTag (objectIdOfTag);

4.5. RevTree

De RevTree representerer et tre i Git-objektmodellen. EN RevWalk forekomst brukes også til å analysere et tre:

RevWalk walk = nye RevWalk (repository); RevTree tree = walk.parseTree (objectIdOfTree);

5. Porselen API

Mens JGit inneholder mye kode på lavt nivå for å fungere med Git-arkiver, inneholder den også et API på høyere nivå som etterligner noe av Git porselen kommandoer i org.eclipse.jgit.api pakke.

5.1. Legg til kommando (git-add)

De Legg til kommando lar deg legge til filer i indeksen via:

  • addFilepattern()

Her er et raskt eksempel på hvordan du legger til et sett med filer til indeksen ved hjelp av porselen API:

Git git = ny Git (db); AddCommand add = git.add (); add.addFilepattern ("someDirectory"). ring ();

5.2. CommitCommand (git-commit)

De CommitCommand lar deg utføre forpliktelser og har følgende tilgjengelige alternativer:

  • sett Forfatter()
  • setCommitter()
  • settAll()

Her er et raskt eksempel på hvordan du forplikter deg til å bruke porselen API:

Git git = ny Git (db); CommitCommand commit = git.commit (); commit.setMessage ("initial commit"). kall ();

5.3. TagCommand (git-tag)

De TagCommand støtter en rekke taggingalternativer:

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

Her er et raskt eksempel på å merke en forpliktelse ved hjelp av porselen API:

Git git = ny Git (db); RevCommit commit = git.commit (). SetMessage ("initial commit"). Call (); RevTag tag = git.tag (). SetName ("tag"). Call ();

5.4. Loggkommando (git-logg)

De Loggkommando lar deg enkelt gå en forpliktelsesgraf.

  • legg til (AnyObjectId start)
  • addRange (AnyObjectId siden, AnyObjectId til)

Her er et raskt eksempel på hvordan du får noen loggmeldinger:

Git git = ny Git (db); Iterabel logg = git.log (). Ring ();

6. Myroppgaver

JGit har også noen vanlige Ant-oppgaver som finnes i org.eclipse.jgit.ant bunt.

Slik bruker du disse oppgavene:

Dette vil gi git-klon, git-init og git-checkout oppgaver.

6.1. git-klon

Følgende attributter kreves:

  • uri: URI å klone fra

Følgende attributter er valgfrie:

  • dest: destinasjonen du skal klone til (bruker standard et lesbart katalognavn basert på den siste banekomponenten i URI)
  • naken: ekte/falsk/ja/Nei for å indikere om det klonede depotet skal være blott eller ikke (standard er falsk)
  • gren: den første grenen for å sjekke ut når du kloner depotet (er som standard HODE)

6.2. git-init

Ingen attributter kreves for å kjøre git-init oppgave.

Følgende attributter er valgfrie:

  • dest: banen der et git-depot initialiseres (er som standard $ GIT_DIR eller den nåværende katalogen)
  • naken: ekte/falsk/ja/Nei for å indikere om depotet skal være tomt eller ikke (standard falsk)

6.3. git-checkout

Følgende attributter kreves:

  • src: stien til git-depotet
  • gren: den første grenen til kassen

Følgende attributter er valgfrie:

  • lage gren: ekte/falsk/ja/Nei for å indikere om grenen skal opprettes hvis den ikke allerede eksisterer (standard falsk)
  • makt: ekte/falsk/ja/Nei: hvis ekte/ja og grenen med det gitte navnet allerede eksisterer, vil startpunktet til en eksisterende gren settes til et nytt startpunkt; hvis falsk, vil den eksisterende grenen ikke endres (er som standard falsk)

7. Konklusjon

JGit API på høyt nivå er ikke vanskelig å forstå. Hvis du vet hvilken git-kommando du skal bruke, kan du enkelt gjette hvilke klasser og metoder du skal bruke i JGit.

Det er en samling klare JGit-kodebiter tilgjengelig her.

Hvis du fortsatt har problemer eller spørsmål, kan du legge igjen en kommentar her eller be JGit-samfunnet om hjelp.


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