Subversion ant FreeBSD
Kai keli programuotojai susitaria kurti ar tobulinti bendrai projektą, reikalinga kontrolės sistema, kuri užtikrintų, jog vienas vartotojas nesunaikins kito vartotojo darbo. Taip pat kartais prireikia sugražinti visą darbą į ankstesnę versiją. Šiam darbui atlikti pasirinkau `Subversion`.
### Sistemos paruošimas
Pirma – sukursime naują vartotoją `svn`. Vartotojas bus vienintelis savo grupėje taip pat `svn`. Galim pasinaudoti skriptu `adduser` – nurodome login’ą `svn`, grupė automatiškai irgi bus `svn`, home katalogas `/home/svn`.
Prieš instaliuojant `Subversion`, dar paredaguosim vartotojo `umask` saugumui truputėli padidinti. Pagal nutylėjimą `umask` yra `022`. Tai reiškia, kad sukurti failai bus skaitomi ir visiems kitiems sistemos vartotojams. O mums to nesinori. Kadangi `svn` grupė taip pat norės rašyti į failus, grupės teisę pakeičiam iš `2` į `0`. Kitiems uždrausime viską pakeisdami `2` į `7`. Gauname `umask 007`. Jei vartotojo `svn` shell’as yra `csh` – pakeisti viską yra lengva:
# edit ~svn/.cshrc
randame eilutę su `umask` ir esamas teises pakeičiame į `007`
Jei vartotojo shell’as yra kitas – redaguojame atitinkamus failus.
### Instaliuojame Subversion
Jei pasirinkote `umask 002`, galite įkompiliuoti wrapper’į į `Subversion` (instaliuojant iš portų). Jei naudojate `umask 007` arba norite susimesti sukompiliuotą `Subversion`, reikės sukurti wrapper skriptuką.
Kompiliuojant `Subversion` su wrapper’iu nurodančiu `umask 002`:
# cd /usr/ports/devel/subversion
# make -DWITH_SVNSERVE_WRAPPER install clean
Jei sukompiliuotą versija:
# pkg_add -r subversion
Jei wrapper’io neįkompiliavom, susikuriame skriptuką:
# mv /usr/local/bin/svn /usr/local/bin/svn.orig
# edit /usr/local/bin/svn
Failo turinys:
#!/bin/sh
umask 007
/usr/local/bin/svn.orig “$@”
Nurodykite `umask 002` arba `007` – koks jums geriau. Ir nepamirštame padaryti jį vykdomuoju:
# chmod +x /usr/local/bin/svn
### Kuriame saugyklą
Pirmiausiai prisijungiame `svn` login’u:
# su -l svn
Mums būtina, kad visi failai priklausytų vartotojui ir grupei `svn`. Iš namų katalogo `/home/svn` vykdome komandą:
% svnadmin create repository
Čia `repository` – mūsų saugyklos pavadinimas. Galite pasivadinti kaip jums geriau. Paprasta ar ne ?
### Prisijungimas prie Subversion
lokalūs vartotojai gali saugyklą pasiekti `file:///` schema.
Galime integruoti `Subversion` į `Apache` ir naudoti schemą `http://` arba `https://`, bet nereikia pamiršti, jog turint `Apache2`, reikia nurodyti `WITH_MOD_DAV_SVN=yes` raktą `make` komandai instaliuojant iš portų. Jei naudosite šią schemą, pasiskaitykite [Apache konfigūravimo subtilybes](http://svnbook.red-bean.com/en/1.0/svn-book.html#svn-ch-6-sect-4).
Kitas būdas – naudoti `svnserve`. Naudoti galima kaip savarankišką daemon’ą arba per `inetd`. Abu būdai leidžia jungtis kaip anonimui arba kaip autorizuotam vartotojui naudojant `CRAM-MD5`. Schema susijungimui – `svn://`
### Svnserve konfigūravimas
Pasirenkame paprasčiausią būdą, nes programuotojai yra keli, o jie neegzistuoja sistemoje. Tarkim, kad mes naudosime `inetd`. Tokiu atveju `svnserve` komandai reikalinga perduoti `-i` raktą. Paredaguojame `/etc/inetd.conf` failą – atkomentuojame arba įrašome eilutę:
svn stream tcp nowait svn /usr/local/bin/svnserve svnserve -i
Dabar adresas būtų toks: `svn://host.kazkas.lt/usr/home/svn/repository` – reikalinga nurodyti pilną kelia iki saugyklos. Jei nenorime atskleisti kur esame patalpinę saugykla, dar vieną raktą pridedame `-r` su pilno kelio parametru:
svn stream tcp nowait svn /usr/local/bin/svnserve svnserve -i -r /usr/home/svn
Adresas sutrumpėja iki: `svn://host.kazkas.lt/repository`
### Kuriame vartotojus
Mūsų saugykloje yra katalogas `conf`, kuriame yra failas `svnserve.conf`. Šį failą truputi paredaguosime ir nurodysime kokie vartotojai kokias teises turi:
[general]
# anonimas neturi jokiu teisiu ir negali netgi skaityti
# jei norime leisti anonimams nusikrauti failus – pakeičiame none į read
anon-access = none
# autorizuoti vartotojai gali ir skaityti ir rašyti failus. Juk jie tikri programuotojai.
auth-access = write
# nurodome failo vardą, kuriam surašyti vartotojai
password-db = passwd
realm = basic realm
Vartotojų failas `passwd` (turi būti tame pačiame kataloge) irgi nėra sudėtingas: po sekcijos `[users]` eilutėmis surašomi login’ai ir slaptažodžiai pagal schemą `LOGIN = PASSWORD`
[users]
uzeris1 = uzeriopasswordas
uzeras2 = kitaspasswordas
Taip, slaptažodžiai nekoduoti. Tik nepamirškite leisti failą nuskaityti `svn` vartotojui. Sėkmės programuojant grupėse.
Panašūs įrašai:
dado1945
19 May, 2005
Man tai svn+ssh labiausiai prie širdies. Ir nesudėtinga ir saugu :) Bet šiaip šaunu, kad straipsnį parašei.
pkmk
19 May, 2005
o gui klientą kokį pasiulysit?
Xawiers
19 May, 2005
Windozei: [TortoiseSVN](http://tortoisesvn.tigris.org/)
:)
Merė Raili
19 May, 2005
svn vs. cvs.
kodėl masiškai visi migruoja ant svn?
Vaidas Žilionis
22 May, 2005
Jo, kokie privalumai?
n0other
26 May, 2005
Cia labiau grandinine reakcija, nors google svn vs cvs duoda nemazai rezultatu.
anonimas
26 May, 2005
galejai saltini bent nurodyt
http://www.onlamp.com/lpt/a/5801
Loading
11 Jul, 2005
Pas tave trackbackus blogai atvaizduoja…
holms
12 Oct, 2008
svn+ssh saugus tik del ssl. niekas tau netrugdo webdav’ui irgi nustatyt naudot ssl, beto daug patogiau man uzejt i domain.lt/repos, ivesti prisijungimus ir tiesiai ziuret faljus, o ne kazkur prie ssh jungtys, tai pat ir eclipse daug patogiau yrasit tiesiog http://domain.lt/repos negi svn+ssh://… pagrinde tas pats, bet webdav’as turi daaaaug privalumu, as tenai nelendus nes per jaunas kolkas developeris, bet atejti pazynsiu.
holms
14 Oct, 2008
beje ponai kas gi autorizacija su atvirais passwordais daro =DDDD ten lievas manualas to onlamp. yra tam skirtas fajlas i kurios hashinami passwd eina, nepamenu komanda bet gentoo-wiki.com subversion manuale rastumet. netgi webdave su htpasswd toolzu hashinamas =) taigi kas tikrai statot normalei sau svn’a, jokiu budu passwd nesaugokit atvyroj formoj
svng
7 Dec, 2009
http://svng.idarbas.lt – nemokamas SVN hostingas
Xawiers
8 Dec, 2009
Tačiau nesi saugus del siūlomos paslaugos. Backupai? Konfidencialumas? tokie dalykai turi būti pasirašomi ant popieriaus. Plius kas uždraus pasiimti tau kažkieno talpinamą išeities kodą ir pasinaudoti savo reikmėm?
Kai viskas yra pas save – taip žymiai saugiau. turiu omeny rimtesnes įmones.