Git sustav za praćenje promjena koji koristi Koha.
Mnogo bolje i potpunije upute: http://wiki.koha-community.org/wiki/Version_Control_Using_Git
DON'T PANIC!
podaci o korisniku
Da bi vaši commiti imali lijepo ime korisnika, morate prvo konfigurirati git
$ git config --global user.name "Dobrica Pavlinusic"
$ git config --global user.email "dpavlin@rot13.org"
Ovo je potrebno napraviti samo jednom za korisnika i primjenjuje se na svim repozitorijima na istoj mašini.
repozitoriji
Repozitoriji su jednostavno serveri koji nam omogućavaju da na njih šaljemo (push) ili sa njih vučemo (pull) promjene koje su u njima napravljene.
Kako je svaki checkout git-a potpuni repozitorij, svaki od njih može postati javni repozitorij koji može dijeliti promjene.
Upstream Koha development
Checkout (lokalna kopija)
git clone git://git.koha.org/pub/scm/koha.git
FFZG promjene
promjene iz drugog repozitorija
Ako želimo povući promjene iz drugog repozitorija (npr. druge instalacije unutar KOHA CUG-a) trebamo dodati novi remote repozitorij.
Na repozitoriju koji je napravljen od upstream Koha repozitorija, imamo jedan remote repozitorij origin za push i pull:
dpavlin@t61p:/srv/koha$ git remote -v
origin git://git.koha.org/pub/scm/koha.git (fetch)
origin git://git.koha.org/pub/scm/koha.git (push)
Sada ćemo dodati repozitorij sa FFZG development-a koristeći običnu ssh konekciju:
dpavlin@t61p:/srv/koha$ git remote add ffzg ssh://koha-dev.rot13.org/srv/koha/
dpavlin@t61p:/srv/koha$ git remote -v
ffzg ssh://koha-dev.rot13.org/srv/koha/ (fetch)
ffzg ssh://koha-dev.rot13.org/srv/koha/ (push)
origin git://git.koha.org/pub/scm/koha.git (fetch)
origin git://git.koha.org/pub/scm/koha.git (push)
i povući sve promjene lokalno:
dpavlin@t61p:/srv/koha$ git fetch ffzg
remote: Counting objects: 2019, done.
remote: Compressing objects: 100% (1440/1440), done.
remote: Total 1790 (delta 1116), reused 587 (delta 317)
Receiving objects: 100% (1790/1790), 1.40 MiB | 1.12 MiB/s, done.
Resolving deltas: 100% (1116/1116), completed with 67 local objects.
From ssh://koha-dev.rot13.org/srv/koha
* [new branch] ffzg -> ffzg/ffzg
* [new branch] ffzg2 -> ffzg/ffzg2
* [new branch] koha-lxc -> ffzg/koha-lxc
* [new branch] master -> ffzg/master
* [new branch] origin -> ffzg/origin
* [new branch] rt-390-signatura-zatvorenog-spremista -> ffzg/rt-390-signatura-zatvorenog-spremista
From ssh://koha-dev.rot13.org/srv/koha
* [new tag] ffzg -> ffzg
branches
Branches su mjesta na kojima se povjest promjena grana u dva dijela. Jedan je development koji rade upstream developeri Kohe, a drugi su naše lokalne promjene za nešto.
Nakon nekog vremena, potrebno je dva branch-a spojiti u jedan da bi preuzeli promjene. gitk nam može pokazati to kao stablo:
Promjene se mogu preuzeti (merge) iz jednog branch-a u drugi.
imenovanje
Branches nisu ništa drugo nego ime za svaku točku i kojoj se razvoj dijeli u dva toka.
Dobri nazivi za branch:
- DNS hostname produkcijske ili develpment mašine na kojoj je branch checkoutan
- veza na bug tracking (prefix-broj-kratak-opis)
pregled
dpavlin@t61p:/srv/koha$ git branch -a
* master
remotes/ffzg/ffzg
remotes/ffzg/ffzg2
remotes/ffzg/koha-lxc
remotes/ffzg/master
remotes/ffzg/origin
remotes/ffzg/rt-390-signatura-zatvorenog-spremista
remotes/origin/3.0.x
remotes/origin/HEAD -> origin/master
remotes/origin/biblibre-acq-preview-only
remotes/origin/biblibre-integration
remotes/origin/biblibre-sopac
remotes/origin/labels_recon
remotes/origin/master
remotes/origin/rfid-direct-tagging
remotes/origin/sysprefs_editor
kreiranje
Pretpostavimo da želimo kreirati branch za instalaciju na koha.ffzg.hr:
dpavlin@t61p:/srv/koha$ git checkout -b koha.ffzg.hr remotes/ffzg/ffzg2
Branch koha.ffzg.hr set up to track remote branch ffzg2 from ffzg.
Switched to a new branch 'koha.ffzg.hr'
patches
git format-patch
Naš cilj je napraviti patcheve od promjena koje smo napravili u našem branch-u:
Iz slike vidimo da smo napravili sip-debug branch iz postojećeg 3.0.x
koha-lxc:/srv/koha# git format-patch -o sip2-changes 3.0.x
sip2-changes/0001-disable-PreFork-to-enable-easy-debugging.patch
sip2-changes/0002-remove-eval-so-it-won-t-hide-errors.patch
sip2-changes/0003-warn-about-missing-institutions-entry-in-config-xm.patch
Ovo će napraviti onoliko patcheva koliko imamo commita na našem branch-u koji smo napravili od 3.0.x
am (apply mail patch)
Prvo ćemo napraviti novi branch u našem repozitoriju sip2-debug u koji ćemo importati naše patcheve:
koha-lxc:/srv/koha# git checkout -b sip2-debug master
Switched to a new branch "sip2-debug"
Nakon toga možemo applyati samo one promjene koje su nam interesantne:
koha-lxc:/srv/koha# git am sip2-changes/0001-disable-PreFork-to-enable-easy-debugging.patch
Applying disable PreFork to enable easy debugging
koha-lxc:/srv/koha# git am sip2-changes/0002-remove-eval-so-it-won-t-hide-errors.patch
Applying remove eval so it won't hide errors
koha-lxc:/srv/koha# git am sip2-changes/0003-warn-about-missing-institutions-entry-in-config-xm.patch
Applying warn about missing <institutions> entry in config xml
slanje na koha-patches listu
Koha prima patcheve preko koha-patches liste
yada, yada, nije testirano!
# create all changes against master in patches dir:
git format-patch -p patches master
git send-mail --to koha-patches@koha.org patches
# reciving side would just pull whole mbox
git am mbox
ne želim više svoje lokalne promjene!
git reset --hard
Oprez ovo će pobrisati sve promjene koje su različite od zadnjeg commit-a
Javni repozitorij
Da bi drugi korisnici mogli kopirati promjene, dovoljan je samo ssh. Međutim, za anonimne korisnike treba podesiti git-daemon
Dobar savjet je prvo instalirati gitweb za overview.
git-daemon
git-daemon --verbose --export-all --base-path=/var/cache/git
U Debian-u postoji paket git-daemon-run koji koristi runit (YMMV) koji se podešava u
dpavlin@mjesec:~$ cat /etc/sv/git-daemon/run
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec git-daemon --verbose --export-all --base-path=/var/cache/git
Dodan je --export-all i popravljen --base-path (sic!)