Koha Croatian user group
git: Revision 25
Git sustav za praćenje promjena koji koristi Koha. DON'T PANIC! podaci o korisnikuDa 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. repozitorijiRepozitoriji 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 repozitorijaAko ž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 branchesBranches 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. imenovanjeBranches nisu ništa drugo nego ime za svaku točku i kojoj se razvoj dijeli u dva toka. Dobri nazivi za branch:
pregleddpavlin@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 kreiranjePretpostavimo 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' patchesformat-patchNaš 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 listuKoha 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 Više informacija
Javni repozitorijDa 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-daemongit-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!) |