Koha Croatian user group
git: Revision 23

Git sustav za praćenje promjena koji koristi Koha.

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:

git-branch-merge.png

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

format-patch

git format-patch

Naš cilj je napraviti patcheve od promjena koje smo napravili u našem branch-u:

git-branch-sip-debug.png

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

Više informacija

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!)