Ero sivun ”Subversion” versioiden välillä
p (luokkajuttu) |
p (<syntaxhighlight>) |
||
(34 välissä olevaa versiota 19 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
Subversion on kehittynyt [[versionhallintajärjestelmä]]. Monet projektit ovat viime aikoina siirtyneet [[CVS]]:stä Subversioniin. Lyhennetään yleensä SVN. | {{Ohjelma | ||
| nimi=Subversion | |||
| kuva= | |||
| kuvateksti= | |||
| lisenssi=[[ASL]] 2.0 | |||
| käyttöliittymä=teksti | |||
| kotisivu=[https://subversion.apache.org/ subversion.apache.org] | |||
}} | |||
'''Subversion''' on kehittynyt [[versionhallintajärjestelmä]]. Monet projektit ovat viime aikoina siirtyneet [[CVS]]:stä Subversioniin. Lyhennetään yleensä SVN. | |||
==Asennus== | |||
{{Asenna|Svn|subversion}} | |||
== Asiakasohjelma == | == Asiakasohjelma == | ||
Rivi 5: | Rivi 17: | ||
*Projektista voidaan ottaa työkopio komennolla <tt>svn checkout osoite projekti</tt>, esimerkiksi | *Projektista voidaan ottaa työkopio komennolla <tt>svn checkout osoite projekti</tt>, esimerkiksi | ||
svn checkout svn://palvelin. | svn checkout svn://palvelin.example/vapaaprojekti/trunk munprojekti | ||
Hakisi | Hakisi palvelin.example-palvelimen svn-varastosta projektin vapaaprojekti päähaaran, sijoittaen sen paikalliseen munprojekti-hakemistoon. | ||
*Työhakemistossa voi projektiin lisätä tiedostoja komennolla <tt>svn add</tt>, esimerkiksi | *Työhakemistossa voi projektiin lisätä tiedostoja komennolla <tt>svn add</tt>, esimerkiksi | ||
svn add uusfilu.cpp | svn add uusfilu.cpp | ||
Vastaavasti <tt>svn rm tiedosto</tt> | Vastaavasti <tt>svn rm tiedosto</tt> ja <tt>svn mkdir hakemisto</tt> | ||
*Tiedostoja voidaan muokata tämän jälkeen työhakemistosta millä tahansa tekstieditorilla. | *Tiedostoja voidaan muokata tämän jälkeen työhakemistosta millä tahansa tekstieditorilla. | ||
*Muokkausten jälkeen muutokset päivitetään komennolla svn ci, esimerkiksi | *Muokkausten jälkeen muutokset päivitetään komennolla <tt>svn ci</tt>, esimerkiksi | ||
svn ci -m "kommentti" | svn ci -m "kommentti" | ||
Jonka jälkeen näet tiedostot, joihin tehdään muutoksia. Tämän jälkeen svn kysyy, suoritetaanko svn-varaston päivitys. | Jonka jälkeen näet tiedostot, joihin tehdään muutoksia. Tämän jälkeen svn kysyy, suoritetaanko svn-varaston päivitys. | ||
Jos jossain vaiheessa tarvitaan käyttäjätunnusta ja salasanaa (etenkin muutoksia tehtäessä kirjautumista vaaditaan lähes aina), svn kysyy tarvittavat tiedot. | Jos jossain vaiheessa tarvitaan käyttäjätunnusta ja salasanaa (etenkin muutoksia tehtäessä kirjautumista vaaditaan lähes aina), svn kysyy tarvittavat tiedot. | ||
===Muita hyödyllisiä komentoja=== | |||
*<tt>svn update</tt> – Päivittää projektin työkopion uusimpaan versioon. | |||
*<tt>svn revert</tt> – Peruuttaa työkopioon tehdyt muutokset. | |||
*<tt>svn status</tt> – Näyttää työkopiossa muuttuneet tiedostonnimet. | |||
*<tt>svn diff</tt> – Näyttää työkopion tiedostojen sisällön muutokset suhteessa edelliseen päivitykseen. | |||
*<tt>svn help</tt> – Näyttää listan kaikista komennoista. | |||
*<tt>svn help komento</tt> – Näyttää tietyn komennon käyttöohjeen. | |||
==Skripti esimerkki Subversionin käytöstä== | |||
<syntaxhighlight lang="bash"> | |||
#!/bin/sh | |||
cd /polku/lähdekoodiin # esim. ~/trunk | |||
NUM=0 | |||
echo "Please wait..." | |||
`svn update > /tmp/svnupdtscrpt` && NUM=`wc -l /tmp/svnupdtscrpt | tr -d /[:alpha:]` | |||
if [ "$NUM" -gt "1" ]; then | |||
echo "Writing change log to Desktop..." | |||
( svn log ) > ~/Desktop/changed.log 2>&1 | |||
echo "Done!" | |||
else | |||
if [ "$NUM" -eq "1" ]; then | |||
echo "Sources are already up to date!" | |||
else | |||
echo "Error while updating sources!" | |||
fi | |||
fi | |||
</syntaxhighlight> | |||
Skripti toimii sillä oletuksella että "svn update" tuottaa vain yhden rivin tekstiä kun päivityksiä ei ole. | |||
`svn update > /tmp/svnupdtscrpt` && NUM=`wc -l /tmp/svnupdtscrpt | tr -d /[:alpha:]` | |||
[[wc]] käsky laskee rivien määrän vain jos "svn update" komento onnistuu (johtuu merkeistä &&). Muutoin muuttujalle NUM jää arvoksi 0. | |||
[[tr]] käsky poistaa ylimääräiset merkit (merkin "/" ja kirjaimet) wc käskyn tulosteesta (koska joissain wc ohjelman versioissa myös tiedoston nimi tulostetaan). | |||
== Palvelin == | == Palvelin == | ||
Rivi 21: | Rivi 67: | ||
*Aluksi luodaan koneelle svn-varasto. Esimerkiksi luomme svn-varaston polkuun /var/svn nimellä varasto: | *Aluksi luodaan koneelle svn-varasto. Esimerkiksi luomme svn-varaston polkuun /var/svn nimellä varasto: | ||
mkdir /var/svn | |||
cd /var/svn | |||
svnadmin create varasto | |||
Työkalu luo oletuksena FSFS-tyyppisen varaston. Se saa nimekseen ''varasto'' ja /var/svn-hakemistoon ilmestyy hakemisto ''varasto''. Voit käyttää myös vanhempaa Berkeley DB -tyyppistä varastoa käyttämällä valitsinta <tt>--fs-type bdb</tt>. FSFS-formaatin etuna on, että se on alustariippumaton ja vie vähemmän tilaa. Toinen FSFS-formaatin etu on se, ettei se ei vaadi huoltotoimenpiteitä, kuten Berkley DB. | |||
*Luotuun varastoon voidaan myös hakea valmiiksi vähän pohjaa seuraavalla tavalla | *Luotuun varastoon voidaan myös hakea valmiiksi vähän pohjaa seuraavalla tavalla | ||
svn import /var/svn/kivasvnpohja file:///var/svn/varasto/projektinnimi | svn import /var/svn/kivasvnpohja file:///var/svn/varasto/projektinnimi | ||
Rivi 56: | Rivi 103: | ||
WebSVN:llä tulee olla lukuoikeudet svn-varastoon, ja lisäksi kirjoitusoikeudet varaston db-hakemistoon. | WebSVN:llä tulee olla lukuoikeudet svn-varastoon, ja lisäksi kirjoitusoikeudet varaston db-hakemistoon. | ||
== | == Henkilökohtaisen varaston luominen== | ||
Subversionia on myös mahdollista käyttää yhden käyttäjän ympäristössä tiedostojen muutosten seurantaan. Versiohallinta on vaivaton tapa pitää varmuuskopioita vanhoista työtiedostoista ja huolehtia tiedostojen vaivattomasta siirrosta esimerkiksi koulun ja kodin välillä. Henkilökohtainen varasto on tiedostotasolla ja asiakasohjelmien tasolla täysin yhteensopiva monen käyttäjän varaston kanssa. | |||
Henkilökohtaisen varaston perustamiseen ei tarvitse pääkäyttäjän oikeuksia. Tähän tehtävään riittää jokin tietokone, johon saa yhteyden ssh:lla. Esimerkiksi yliopistojen tarjoamat päätekoneet, kuten Jyväskylän yliopiston <tt>jalava.cc.jyu.fi</tt>, soveltuvat tähän tehtävään erinomaisesti. Myös pelkästään paikallisen versiohallinnan perustaminen esimerkiksi muistitikulle on mahdollista käyttäen <tt>file:</tt>-URIa. | |||
Olkoon meillä avoinna ssh-pääteyhteys koneeseen <tt>tieto.kone.fi</tt> ja käyttätunnuksena <tt>tunnus</tt>. Varaston voi luoda minne tahansa. Tässä tilanteessa käytetään kotihakemistoa, koska siihen on aina kirjoitusoikeudet. | |||
Varaston luominen palvelimelle: | |||
svnadmin create ~/omasvn | |||
Selvitä käytetty hakemistopolku komentamalla: | |||
cd ~/omasvn | |||
pwd | |||
Kopioi tulostunut hakemistonnimi talteen. Siihen viitataan jatkossa nimellä <tt>svnpolku</tt>. Nyt varasto on luotu, eikä mitään muut asetusten tekemistä tarvita. Luodun varaston osoite muodostuu seuraavasti: <tt>svn+ssh://'''tunnus'''@'''tieto.kone.fi'''/'''svnpolku'''</tt> . | |||
Voit kokeilla sen toimivuutta toiselta tietokoneelta käsin komentamalla: | |||
svn info svn+ssh://tunnus@tieto.kone.fi/svnpolku | |||
Mikäli saat listan ominaisuuksista etkä virheilmoitusta, onnittele itseäsi; sinulla on toimiva henkilökohtainen tietovarasto! | |||
Nyt voit komentaa niillä koneilla, joilta haluat ottaa varastosta työkopion, seuraavaa: | |||
svn checkout svn+ssh://tunnus@tieto.kone.fi/svnpolku omat | |||
Tällöin svn noutaa sinulle aluksi tyhjän työkopion, johon voit luoda hakemistoja eri projekteille, kuten kursseille. Tutustu [[Subversion#Asiakasohjelma|asiakasohjelman komentoihin]]. | |||
Huomaa, että mikäli käytössäsi ei ole SSH-avainvarmennusta, saatat joutua syöttämään salasanan useita kertoja muodostaessasi yhteyttä palvelimelle. Tältä voi välttyä käyttämällä [[Ssh#Tunnistaminen_avainparilla|SSH-avaimia]]. | |||
==Aiheesta muualla== | |||
*[http://subclipse.tigris.org/files/documents/906/8847/file_8847.dat?filename=subclipse%20%2d%20install%2c%20use%20and%20compile%2epdf Subversionin dokumentaatio (PDF)] | *[http://subclipse.tigris.org/files/documents/906/8847/file_8847.dat?filename=subclipse%20%2d%20install%2c%20use%20and%20compile%2epdf Subversionin dokumentaatio (PDF)] | ||
* [http://svnbook.red-bean.com/ Version Control with Subversion (kirja)] | * [http://svnbook.red-bean.com/ Version Control with Subversion (kirja)] | ||
* [http://www.onlamp.com/pub/a/onlamp/2005/01/06/svn_homedir.html Keeping Your Life in Subversion] | * [http://www.onlamp.com/pub/a/onlamp/2005/01/06/svn_homedir.html Keeping Your Life in Subversion] | ||
[[Luokka:Kehitystyökalut]] | |||
[[Luokka: | |||
[[Luokka:Palvelimet]] | [[Luokka:Palvelimet]] | ||
Nykyinen versio 18. helmikuuta 2022 kello 10.05
Subversion | |
---|---|
Käyttöliittymä | teksti |
Lisenssi | ASL 2.0 |
Kotisivu | subversion.apache.org |
Subversion on kehittynyt versionhallintajärjestelmä. Monet projektit ovat viime aikoina siirtyneet CVS:stä Subversioniin. Lyhennetään yleensä SVN.
Asennus[muokkaa]
Svn löytyy useimpien jakeluiden paketinhallinnasta nimellä subversion. Lisätietoja ohjelmien asentamisesta löytyy artikkelista Ohjelmien asentaminen.
Asiakasohjelma[muokkaa]
Subversion-asiakasohjelma tulee yleensä jakelupaketin paketinhallinnasta subversion-nimisessä paketissa. Tämän jälkeen subversionia käytetään komennolla svn.
- Projektista voidaan ottaa työkopio komennolla svn checkout osoite projekti, esimerkiksi
svn checkout svn://palvelin.example/vapaaprojekti/trunk munprojekti
Hakisi palvelin.example-palvelimen svn-varastosta projektin vapaaprojekti päähaaran, sijoittaen sen paikalliseen munprojekti-hakemistoon.
- Työhakemistossa voi projektiin lisätä tiedostoja komennolla svn add, esimerkiksi
svn add uusfilu.cpp
Vastaavasti svn rm tiedosto ja svn mkdir hakemisto
- Tiedostoja voidaan muokata tämän jälkeen työhakemistosta millä tahansa tekstieditorilla.
- Muokkausten jälkeen muutokset päivitetään komennolla svn ci, esimerkiksi
svn ci -m "kommentti"
Jonka jälkeen näet tiedostot, joihin tehdään muutoksia. Tämän jälkeen svn kysyy, suoritetaanko svn-varaston päivitys.
Jos jossain vaiheessa tarvitaan käyttäjätunnusta ja salasanaa (etenkin muutoksia tehtäessä kirjautumista vaaditaan lähes aina), svn kysyy tarvittavat tiedot.
Muita hyödyllisiä komentoja[muokkaa]
- svn update – Päivittää projektin työkopion uusimpaan versioon.
- svn revert – Peruuttaa työkopioon tehdyt muutokset.
- svn status – Näyttää työkopiossa muuttuneet tiedostonnimet.
- svn diff – Näyttää työkopion tiedostojen sisällön muutokset suhteessa edelliseen päivitykseen.
- svn help – Näyttää listan kaikista komennoista.
- svn help komento – Näyttää tietyn komennon käyttöohjeen.
Skripti esimerkki Subversionin käytöstä[muokkaa]
#!/bin/sh
cd /polku/lähdekoodiin # esim. ~/trunk
NUM=0
echo "Please wait..."
`svn update > /tmp/svnupdtscrpt` && NUM=`wc -l /tmp/svnupdtscrpt | tr -d /[:alpha:]`
if [ "$NUM" -gt "1" ]; then
echo "Writing change log to Desktop..."
( svn log ) > ~/Desktop/changed.log 2>&1
echo "Done!"
else
if [ "$NUM" -eq "1" ]; then
echo "Sources are already up to date!"
else
echo "Error while updating sources!"
fi
fi
Skripti toimii sillä oletuksella että "svn update" tuottaa vain yhden rivin tekstiä kun päivityksiä ei ole.
`svn update > /tmp/svnupdtscrpt` && NUM=`wc -l /tmp/svnupdtscrpt | tr -d /[:alpha:]`
wc käsky laskee rivien määrän vain jos "svn update" komento onnistuu (johtuu merkeistä &&). Muutoin muuttujalle NUM jää arvoksi 0. tr käsky poistaa ylimääräiset merkit (merkin "/" ja kirjaimet) wc käskyn tulosteesta (koska joissain wc ohjelman versioissa myös tiedoston nimi tulostetaan).
Palvelin[muokkaa]
Samassa subversion-paketissa tulee yleensä myös subversion-palvelinohjelma. Subversion-palvelimen käyttöönotto on yksinkertaista.
- Aluksi luodaan koneelle svn-varasto. Esimerkiksi luomme svn-varaston polkuun /var/svn nimellä varasto:
mkdir /var/svn cd /var/svn svnadmin create varasto
Työkalu luo oletuksena FSFS-tyyppisen varaston. Se saa nimekseen varasto ja /var/svn-hakemistoon ilmestyy hakemisto varasto. Voit käyttää myös vanhempaa Berkeley DB -tyyppistä varastoa käyttämällä valitsinta --fs-type bdb. FSFS-formaatin etuna on, että se on alustariippumaton ja vie vähemmän tilaa. Toinen FSFS-formaatin etu on se, ettei se ei vaadi huoltotoimenpiteitä, kuten Berkley DB.
- Luotuun varastoon voidaan myös hakea valmiiksi vähän pohjaa seuraavalla tavalla
svn import /var/svn/kivasvnpohja file:///var/svn/varasto/projektinnimi
- Seuraavaksi tehdään varastoon tarvittavat asetukset. Avaa tiedosto /var/svn/varasto/conf/svnserve.conf. Tiedostossa pitäisi olla useita kommentoituja rivejä joilla on ohjeita asetusten tekemistä varten. Tiedostosta pitäisi tehdä kutakuinkin tällainen (valmiit kommentit napsastu pois):
[general] #Anonyymit saavat lukea (laita read:n tilalle none jos et halua antaa lukuoikeutta) anon-access = read #Kirjautuneille lukuoikeus auth-access = write #käyttäjätunnustiedosto password-db = passwd realm = Varastosi nimi
- Käyttäjätunnukset määriteltiin edellä tiedostoon passwd. Luo siis tiedosto /var/svn/conf/passwd ja lisää sinne rivejä muodossa:
[users] kayttaja1 = salasana kayttaja2 = salasana2
Kun käyttäjän toimet vaativat kirjautumista, kirjautumistiedot tarkistetaan tästä tiedostosta.
- Nyt kun asetukset on tehty, voidaan käynnistää itse svn-palvelin komennolla
svnserve -d -r /var/svn/varasto
-d tarkoittaa, että ajetaan palvelinta taustalla (nk. daemoni). -r-parametri kertoo, missä svn-varasto sijaitsee.
WebSVN[muokkaa]
WebSVN on ohjelma, jolla svn-varastoa voi selata suoraan selaimella. Selailun lisäksi onnistuu mm. eri versioiden vertailu keskenään.
Monissa jakeluissa WebSVN löytyy suoraan paketinhallinnasta. Esimerkiksi Debianissa komento apt-get install websvn asentaa WebSVN:n paikoilleen /var/www-hakemistoon (tai vastaavaan). Asetustiedosto sijaitsee tämän jälkeen yleensä joko polussa /etc/websvn/config.inc, tai polussa websvn:n hakemisto/include/config.inc. Ainakin Debianin paketinhallinnasta asennettu versio käyttää oletuksena svn-varastoon polkua /var/svn. Varaston polun voi asettaa rivillä:
$config->parentPath("/var/svn/");
WebSVN:llä tulee olla lukuoikeudet svn-varastoon, ja lisäksi kirjoitusoikeudet varaston db-hakemistoon.
Henkilökohtaisen varaston luominen[muokkaa]
Subversionia on myös mahdollista käyttää yhden käyttäjän ympäristössä tiedostojen muutosten seurantaan. Versiohallinta on vaivaton tapa pitää varmuuskopioita vanhoista työtiedostoista ja huolehtia tiedostojen vaivattomasta siirrosta esimerkiksi koulun ja kodin välillä. Henkilökohtainen varasto on tiedostotasolla ja asiakasohjelmien tasolla täysin yhteensopiva monen käyttäjän varaston kanssa.
Henkilökohtaisen varaston perustamiseen ei tarvitse pääkäyttäjän oikeuksia. Tähän tehtävään riittää jokin tietokone, johon saa yhteyden ssh:lla. Esimerkiksi yliopistojen tarjoamat päätekoneet, kuten Jyväskylän yliopiston jalava.cc.jyu.fi, soveltuvat tähän tehtävään erinomaisesti. Myös pelkästään paikallisen versiohallinnan perustaminen esimerkiksi muistitikulle on mahdollista käyttäen file:-URIa.
Olkoon meillä avoinna ssh-pääteyhteys koneeseen tieto.kone.fi ja käyttätunnuksena tunnus. Varaston voi luoda minne tahansa. Tässä tilanteessa käytetään kotihakemistoa, koska siihen on aina kirjoitusoikeudet.
Varaston luominen palvelimelle:
svnadmin create ~/omasvn
Selvitä käytetty hakemistopolku komentamalla:
cd ~/omasvn pwd
Kopioi tulostunut hakemistonnimi talteen. Siihen viitataan jatkossa nimellä svnpolku. Nyt varasto on luotu, eikä mitään muut asetusten tekemistä tarvita. Luodun varaston osoite muodostuu seuraavasti: svn+ssh://tunnus@tieto.kone.fi/svnpolku .
Voit kokeilla sen toimivuutta toiselta tietokoneelta käsin komentamalla:
svn info svn+ssh://tunnus@tieto.kone.fi/svnpolku
Mikäli saat listan ominaisuuksista etkä virheilmoitusta, onnittele itseäsi; sinulla on toimiva henkilökohtainen tietovarasto!
Nyt voit komentaa niillä koneilla, joilta haluat ottaa varastosta työkopion, seuraavaa:
svn checkout svn+ssh://tunnus@tieto.kone.fi/svnpolku omat
Tällöin svn noutaa sinulle aluksi tyhjän työkopion, johon voit luoda hakemistoja eri projekteille, kuten kursseille. Tutustu asiakasohjelman komentoihin.
Huomaa, että mikäli käytössäsi ei ole SSH-avainvarmennusta, saatat joutua syöttämään salasanan useita kertoja muodostaessasi yhteyttä palvelimelle. Tältä voi välttyä käyttämällä SSH-avaimia.