Ero sivun ”Bazaar” versioiden välillä
(→Aiheesta muualla: Kotisivun linkki kuntoon) |
(laajennusta) |
||
Rivi 25: | Rivi 25: | ||
=== Työskentely paikallisen varaston kanssa === | === Työskentely paikallisen varaston kanssa === | ||
Koska Bazaar on hajautettu versionhallintaohjelma, sitä käytettäessä toimitaan omalla koneella sijaitsevan varaston kanssa. Tämä varasto voidaan toki aina tarpeen tullen laittaa verkkoon julkiselle palvelimelle. | |||
==== Paikallisen varaston luominen ==== | |||
Tiettyyn hakemistoon voidaan perustaa uusi varasto komennolla | Tiettyyn hakemistoon voidaan perustaa uusi varasto komennolla | ||
bzr init | bzr init | ||
Rivi 41: | Rivi 43: | ||
added tietoa.txt | added tietoa.txt | ||
added lisenssi | added lisenssi | ||
Kaikki hakemiston tiedostot voitaisiin lisätä kerralla komennolla | |||
bzr add | |||
Seuraavaksi tallennamme projektistamme ensimmäisen ''revision'' versionhallintajärjestelmään komennolla <tt>bzr commit</tt> jolle voidaan antaa myös kuvaus muutoksesta: | Seuraavaksi tallennamme projektistamme ensimmäisen ''revision'' versionhallintajärjestelmään komennolla <tt>bzr commit</tt> jolle voidaan antaa myös kuvaus muutoksesta: | ||
Rivi 51: | Rivi 55: | ||
</pre> | </pre> | ||
<tt>bzr commit</tt> lisää Bazaarin tietokantaan uuden ''revision'', johon on myöhemmin mahdollista palata ja jota voidaan muutenkin hyödyntää esimerkiksi tutkimalla koodiin tehtyjä muutoksia. | |||
==== Revisiohistria ==== | |||
Muokataan seuraavaksi projektiamme kirjoittamalla jotain tekstiä tiedostoon <tt>tietoa.txt</tt>. Edellisen <tt>bzr commit</tt> -komennon jälkeen tekemämme muutokset näemmä komennolla <tt>bzr diff</tt>: | Muokataan seuraavaksi projektiamme kirjoittamalla jotain tekstiä tiedostoon <tt>tietoa.txt</tt>. Edellisen <tt>bzr commit</tt> -komennon jälkeen tekemämme muutokset näemmä komennolla <tt>bzr diff</tt>: | ||
<pre> | <pre> | ||
Rivi 58: | Rivi 64: | ||
+++ tietoa.txt 2008-04-13 16:42:09 +0000 | +++ tietoa.txt 2008-04-13 16:42:09 +0000 | ||
@@ -0,0 +1,1 @@ | @@ -0,0 +1,1 @@ | ||
+Bazaar on | +Bazaar on vapaa, hajautettu versionhallintaohjelma joka on saatavissa Linuxin lisäksi myös | ||
Windowsille ja Mac OS:lle. | Windowsille ja Mac OS:lle. | ||
</pre> | </pre> | ||
Rivi 87: | Rivi 93: | ||
Projektin alku | Projektin alku | ||
</pre> | </pre> | ||
<tt>bzr diff</tt> -komennolla voidaan lisäksi vertailla tiettyjä revisioita. Nykyisen varaston sisällön eron tiettyyn revisioon näkee komennolla | |||
bzr diff -r VERSIO | |||
Ja tiettyjen revisioiden välillä tapahtuneet muutokset on mahdollista selvittää komennolla | |||
bzr diff -r VERSIO..VERSIO | |||
Esimerkiksi revisiosta 1 revisioon 3 tapahtuneet muutokset näkee komennolla | |||
bzr diff -r 1..3 | |||
Huomaa kaksi pistettä. Komennon tuloste on samanlaista kuin [[diff]]-komentoa käytettäessä. | |||
Muutosten tarkastelu voidaan rajata koskemaan vain tiettyjä tiedostoja komennolla | |||
bzr diff tiedosto1 tiedosto2 | |||
==== Historiaan palaaminen ==== | |||
Bazaariin tallennettuihin (<tt>bzr commit</tt>) revisioihin on tarvittaessa mahdollista palata. Muutetaan esimerkiksi tiedostoa <tt>tietoa.txt</tt> ja lisätään sinne kirjoitusvirhe: | |||
$ bzr commit -m "Parantelua" | |||
$ bzr diff -r2 | |||
=== modified file 'tietoa.txt' | |||
--- tietoa.txt 2008-11-11 14:45:35 +0000 | |||
+++ tietoa.txt 2008-11-11 14:49:15 +0000 | |||
+Tämä ilmestyi tänne vahingossa, ei pitänyt tallenttaa/committaa | |||
Nyt voimme kumota virheemme kahdella tapaa. Koko edellisen commitin vaikutus voidaan poistaa tietokannasta komennolla | |||
bzr uncommit | |||
Tämä kumoaa kaikki edellisen commitin vaikutukset ja palauttaa tietokannan edellistä revisiota (tässä rev 2) vastaavaan tilaan. Komento kysyy vielä vahvistuksen, jotta tietoa ei poisteta vahingossa. Komento jättää tiedostot ennalleen, eli tässä tapauksessa ne jäisivät revisiota 3 vastaavaan tilaan. | |||
Fiksumpi tapa tiettyyn revisioon palaamiseen on <tt>revert</tt>-toiminto: | |||
bzr revert | |||
Jos mitään parametreja ei anneta, palataan tällä komennolla edellistä committia vastaavaan tilaan, eli kaikki muutokset, joita ei ole viety tietokantaan komennolla <tt>bzr commit</tt> kumotaan. | |||
Tiettyyn revisioon voidaan palata valitsimella -r: | |||
bzr revert -r REVISIO | |||
esimerkiksi | |||
bzr revert -r 2 | |||
Komento muuttaa projektin tiedostot vastaamaan revision 2 tilaa. Tämän jälkeen muutokset on vietävä vielä tietokantaan komennolla | |||
bzr commit -m "Paltaan takaisin toimivaanversioon" | |||
Revertin etu <tt>uncommit</tt>-toimintoon nähden on se, että tällöin mitään tietoa ei hävitetä, vaan "kumotut" muutokset löytyvät edelleen historiasta normaalisti. | |||
=== Ulkoisen palvelimen käyttö === | === Ulkoisen palvelimen käyttö === |
Versio 11. marraskuuta 2008 kello 18.00
Bazaar on vapaa, hajautettu versionhallintaohjelma joka on saatavissa Linuxin lisäksi myös Windowsille ja Mac OS:lle.
Bazaar | |
---|---|
Käyttöliittymä | teksti |
Lisenssi | GPL |
Kotisivu | bazaar-vcs.org |
Yleistä
Bazaar on hajautettu versionhallintajärjestelmä, eli sitä käytettäessä ei normaalisti olla yhteydessä palvelimeen. Bazaaria käytetään normaalisti omalla koneella, ja oman version voi halutessaan lähettää palvelimelle. Bazaar ei myöskään vaadi erillistä keskuspalvelinta tai tällaisia palvelimia voi olla useita.
Bazaarin lisäksi hajautettu versionhallintajärjestelmä on mm. Git.
Asennus
Bazaar löytyy useimpien jakeluiden paketinhallintajärjestelmästä paketista bazaar tai bzr.
Käyttö
Bazaaria käytetään komennolla
$ bzr
Aluksi kerrotaan oma nimi ja sähköposti, jotta ne näkyisivät oikein lokeissa:
$ bzr whoami "Erkki Esimerkki <erkki@linux.fi>"
Työskentely paikallisen varaston kanssa
Koska Bazaar on hajautettu versionhallintaohjelma, sitä käytettäessä toimitaan omalla koneella sijaitsevan varaston kanssa. Tämä varasto voidaan toki aina tarpeen tullen laittaa verkkoon julkiselle palvelimelle.
Paikallisen varaston luominen
Tiettyyn hakemistoon voidaan perustaa uusi varasto komennolla
bzr init
Tämä komento luo kyseiseen hakemistoon piilotetun hakemiston .bzr, jossa Bazaar säilyttää tarvitsemiaan tietoja.
Projektiin otetaan mukaan tiedostoja ja hakemistoja komennolla
bzr add tiedosto
Luodaan esimerkiksi uusi projekti, jota käytämme Bazaariin tutustumiseen:
$ mkdir bazaar $ cd bazaar/ $ bzr init $ touch tietoa.txt $ touch lisenssi $ bzr add tietoa.txt lisenssi added tietoa.txt added lisenssi
Kaikki hakemiston tiedostot voitaisiin lisätä kerralla komennolla
bzr add
Seuraavaksi tallennamme projektistamme ensimmäisen revision versionhallintajärjestelmään komennolla bzr commit jolle voidaan antaa myös kuvaus muutoksesta:
$ bzr commit -m "Projektin alku" $ Committing to: /koodaus/bazaar/ $ added lisenssi $ added tietoa.txt $ Committed revision 1.
bzr commit lisää Bazaarin tietokantaan uuden revision, johon on myöhemmin mahdollista palata ja jota voidaan muutenkin hyödyntää esimerkiksi tutkimalla koodiin tehtyjä muutoksia.
Revisiohistria
Muokataan seuraavaksi projektiamme kirjoittamalla jotain tekstiä tiedostoon tietoa.txt. Edellisen bzr commit -komennon jälkeen tekemämme muutokset näemmä komennolla bzr diff:
$ bzr diff === modified file 'tietoa.txt' --- tietoa.txt 2008-04-13 16:39:33 +0000 +++ tietoa.txt 2008-04-13 16:42:09 +0000 @@ -0,0 +1,1 @@ +Bazaar on vapaa, hajautettu versionhallintaohjelma joka on saatavissa Linuxin lisäksi myös Windowsille ja Mac OS:lle.
Tämä muutos voidaan nyt tallentaa varastoon kuten edellä:
$ bzr commit -m "Perustietoja" Committing to: /koodaus/bazaar/ modified tietoa.txt Committed revision 2.
Varastoon tehtyjä muutoksia voidaan seurata lokista:
$ bzr log ------------------------------------------------------------ revno: 2 committer: Erkki Esimerkki <erkki@linux.fi> branch nick: bazaar timestamp: Sun 2008-04-13 19:43:33 +0300 message: Perustietoja ------------------------------------------------------------ revno: 1 committer: Erkki Esimerkki <erkki@linux.fi> branch nick: bazaar timestamp: Sun 2008-04-13 19:39:33 +0300 message: Projektin alku
bzr diff -komennolla voidaan lisäksi vertailla tiettyjä revisioita. Nykyisen varaston sisällön eron tiettyyn revisioon näkee komennolla
bzr diff -r VERSIO
Ja tiettyjen revisioiden välillä tapahtuneet muutokset on mahdollista selvittää komennolla
bzr diff -r VERSIO..VERSIO
Esimerkiksi revisiosta 1 revisioon 3 tapahtuneet muutokset näkee komennolla
bzr diff -r 1..3
Huomaa kaksi pistettä. Komennon tuloste on samanlaista kuin diff-komentoa käytettäessä.
Muutosten tarkastelu voidaan rajata koskemaan vain tiettyjä tiedostoja komennolla
bzr diff tiedosto1 tiedosto2
Historiaan palaaminen
Bazaariin tallennettuihin (bzr commit) revisioihin on tarvittaessa mahdollista palata. Muutetaan esimerkiksi tiedostoa tietoa.txt ja lisätään sinne kirjoitusvirhe:
$ bzr commit -m "Parantelua" $ bzr diff -r2 === modified file 'tietoa.txt' --- tietoa.txt 2008-11-11 14:45:35 +0000 +++ tietoa.txt 2008-11-11 14:49:15 +0000 +Tämä ilmestyi tänne vahingossa, ei pitänyt tallenttaa/committaa
Nyt voimme kumota virheemme kahdella tapaa. Koko edellisen commitin vaikutus voidaan poistaa tietokannasta komennolla
bzr uncommit
Tämä kumoaa kaikki edellisen commitin vaikutukset ja palauttaa tietokannan edellistä revisiota (tässä rev 2) vastaavaan tilaan. Komento kysyy vielä vahvistuksen, jotta tietoa ei poisteta vahingossa. Komento jättää tiedostot ennalleen, eli tässä tapauksessa ne jäisivät revisiota 3 vastaavaan tilaan.
Fiksumpi tapa tiettyyn revisioon palaamiseen on revert-toiminto:
bzr revert
Jos mitään parametreja ei anneta, palataan tällä komennolla edellistä committia vastaavaan tilaan, eli kaikki muutokset, joita ei ole viety tietokantaan komennolla bzr commit kumotaan.
Tiettyyn revisioon voidaan palata valitsimella -r:
bzr revert -r REVISIO
esimerkiksi
bzr revert -r 2
Komento muuttaa projektin tiedostot vastaamaan revision 2 tilaa. Tämän jälkeen muutokset on vietävä vielä tietokantaan komennolla
bzr commit -m "Paltaan takaisin toimivaanversioon"
Revertin etu uncommit-toimintoon nähden on se, että tällöin mitään tietoa ei hävitetä, vaan "kumotut" muutokset löytyvät edelleen historiasta normaalisti.
Ulkoisen palvelimen käyttö
Tässä vaiheessa voisimme haluta siirtää muutoksemme palvelimelle, jotta muut kehittäjät voisivat osallistua kehitystyöhön. Tämä onnistuu lähettämällä varasto ulkoiselle palvelimelle komennolla bzr push:
$ bzr push --create-prefix sftp://tunnus@palvelin.com/~/public_html/rojekti 2 revision(s) pushed.
Tässä --create-prefix tarkoittaa sitä, että Bazaar luo projektihakemiston, jos se ei vielä ole olemassa. On syytä huomata, että Bazaar lähettää kaikki revisiot, jotka paikalliseen varastoon on tallennettu, ei vain uusinta. Huom: esim. Ubuntu vaatii paketin python-paramiko -asennuksen jotta Bazaarin käyttämä, pythonilla tehty ssh-yhteys onnistuu.
Palvelimella oleva projekti taas voidaan hakea komennolla bzr branch:
$ bzr branch http://osoite.fi/rojekti
Tällöinkin Bazaar hakee kaikki projektin revisiot.
Jos eri henkilöt muokkaavat projektia, käy helposti niin, että kehittäjien koneilla olevat varastot poikkeavat palvelimella olevasta. Versiot saa yhdistettyä komennolla
$ bzr merge
jolloin Bazaar yrittää automaattisesti yhdistää muutokset. Jos merge ilmoittaa 'All changes applied succesfully', on se automaattisesti osannut yhdistää versiot. Muutokset näkee komennolla
$ bzr diff
Jos merge ei kuitenkaan osaa yhdistää versioita, tiedostot, joissa on eroavaisuuksia versioiden välillä näkee komennolla
$ bzr conflicts
Tämän jälkeen ongelmat täytyy käydä ratkaisemassa koodista käsin. Kun tämä on tehty, vahvistetaan tiedostoon tehdyt muutokset komennolla
$ bzr resolve TIEDOSTONIMI
Lopuksi muutokset tallennetaan paikalliseen varastoon normaalisti komennolla
$ bzr commit -m "Yhdistetty Pekan version kanssa"
Launchpad
Bazaar-palvelimen asentamisen sijaan voidaan käyttää myös julkisia Bazaar-palvelimen tarjoavia palveluita. Suurin tällainen on mm. Ubuntun kehitysalustana käytettävä Launchpad. Jokainen käyttäjä voi vapaasti käyttää Launchpadin Bazaar-palvelua rekisteröitymällä palveluun.
Muutoksia lähetettäessä käyttäjä tunnistetaan SSH-avaimen avulla. Käyttäjän julkinen SSH-avain löytyy polusta ~/.ssh/id_dsa.pub tai ~/.ssh/id_rsa.pub. Jos tällaisia tiedostoa ei löydy, on SSH-avainpari luotava komennolla ssh-keygen. Tämän jälkeen kyseisen tiedoston sisältö on kerrottava Launchpadiin menemällä ensin omalle käyttäjäsivulle ja tämän jälkeen napsauttamalla Update SSH keys -linkkiä ja kopioimalla tiedoston sisältö sivun alareunassa olevaan tekstikenttään.
Tämän jälkeen versiot voi lähettää Launchpadiin komennolla
$ bzr push bzr+ssh://käyttäjätunnus@bazaar.launchpad.net/~käyttäjätunnus/+junk/projekti
missä käyttäjätunnus näkyy mm. käyttäjäsivun URL-osoitteessa. Vastaavasti tämä projekti voitaisiin kopioida komennolla
$ bzr branch http://bazaar.launchpad.net/~käyttäjätunnus/+junk/projekti