Ero sivun ”Bazaar” versioiden välillä
Siirry navigaatioon
Siirry hakuun
ei muokkausyhteenvetoa
(laajennusta) |
Ei muokkausyhteenvetoa |
||
(7 välissä olevaa versiota 4 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
{{Ohjelma | {{Ohjelma | ||
| nimi=Bazaar | | nimi=Bazaar | ||
Rivi 7: | Rivi 5: | ||
| lisenssi=[[GPL]] | | lisenssi=[[GPL]] | ||
| käyttöliittymä=teksti | | käyttöliittymä=teksti | ||
| kotisivu=[http://bazaar-vcs.org bazaar-vcs.org]}} | | kotisivu=[http://bazaar-vcs.org bazaar-vcs.org] | ||
}} | |||
'''Bazaar''' on vapaa, hajautettu [[versionhallintaohjelma]] joka on saatavissa Linuxin lisäksi myös Windowsille ja Mac OS:lle. | |||
== Yleistä == | == Yleistä == | ||
Rivi 15: | Rivi 16: | ||
== Asennus == | == Asennus == | ||
Bazaar | {{Asenna|Bazaar|bazaar</tt> tai <tt>bzr}} | ||
== Käyttö == | == Käyttö == | ||
Rivi 24: | Rivi 25: | ||
$ bzr whoami "Erkki Esimerkki <erkki@linux.fi>" | $ bzr whoami "Erkki Esimerkki <erkki@linux.fi>" | ||
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. | 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 56: | Rivi 56: | ||
<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. | <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. | ||
=== | === Revisiohistoria === | ||
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 105: | Rivi 105: | ||
bzr diff tiedosto1 tiedosto2 | 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: | 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 commit -m "Parantelua" | ||
Rivi 129: | Rivi 129: | ||
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. | 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. | ||
=== Tagit === | |||
Bazaar mahdollistaa tiettyjen revisioiden nimeämisen ''tageilla''. Esimerkiksi kun ohjelmasta julkaistaan tietty versio (esimerkiksi 1.0), voitaisiin tälle versiolle antaa tagi "versio-1.0". Tällöin on esimerkiksi tarvittaessa helppo palata tähän versioon tai tarkastella, mitä muutoksia tämän version jälkeen on tehty. | |||
Nykyiselle revisiolle asetetaan tagi komennolla | |||
bzr tag "nimi" | |||
esimerkiksi | |||
bzr tag "versio-1.0" | |||
Tagi voidaan asettaa myös jollekin tietylle revisiolle komennolla | |||
bzr tag -r REVSISIO "nimi" | |||
esimerkiksi | |||
bzr tag -r 2 "versio-0.1" | |||
Nyt tageja voidaan käyttää revisioiden sijaan esim. vertailtaessa ohjelmaan tehtyjä muutoksia. Tällöin <tt>bzr</tt>:n <tt>-r</tt>-parametrille annetaan revision sijasta tagi muodossa <tt>tag:nimi</tt>. Esimerkiksi tagilla "versio-1.0" nimetyn revision ja nykyisen revision välillä tapahtuneet muutokset näkee komennolla | |||
bzr diff -r tag:versio-1.0 | |||
Ja vastaavasti versioon 1.0 voitaisiin palata komennolla | |||
bzr revert -r tag:versio-1.0 | |||
Tageja on myös mahdollista poistaa komennolla | |||
bzr tag --delete tagi | |||
Kaikki tagit näkee komennolla | |||
bzr tags | |||
Komennon tulosteena on lista, jossa näkyy tagi ja sitä vastaava revisio. | |||
=== Ulkoisen palvelimen käyttö === | === Ulkoisen palvelimen käyttö === | ||
Rivi 134: | Rivi 158: | ||
$ bzr push --create-prefix sftp://tunnus@palvelin.com/~/public_html/rojekti | $ bzr push --create-prefix sftp://tunnus@palvelin.com/~/public_html/rojekti | ||
2 revision(s) pushed. | 2 revision(s) pushed. | ||
Tässä <tt>--create-prefix</tt> tarkoittaa sitä, että Bazaar luo projektihakemiston, jos se ei vielä ole olemassa. On syytä huomata, että Bazaar lähettää kaikki | Tässä <tt>--create-prefix</tt> 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.'' | ''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 <tt>bzr branch</tt>: | Palvelimella oleva projekti taas voidaan hakea komennolla <tt>bzr branch</tt>: | ||
$ bzr branch http://osoite.fi/rojekti | $ bzr branch http://osoite.fi/rojekti | ||
Tällöinkin Bazaar hakee kaikki projektin '' | Tällöinkin Bazaar hakee kaikki projektin revisiot. Osoite on yksinkertaisesti jokin hakemisto, josta löytyy <tt>.bzr</tt>-niminen Bazaarin oman tietokannan sisältävä hakemisto. | ||
=== Kehityshaarat === | |||
Bazaar mahdollistaa useiden kehityshaarojen luomisen ja hallinnoinnin. Esimerkiksi ohjelmaa kehitettäessä ohjelman sen hetkisestä tilasta voitaisiin uusi kehityshaara, ''branch'', joka on alkuperäisen ohjelman kopio. Tähän haaraan voidaan sitten tehdä rauhassa suuria muutoksia esimerkiksi uuden ominaisuuden lisäämiseksi ilman pelkoa siitä, että alkuperäistä ohjelman kehitystä häiritään. Esimerkkitilanne voisi olla vaikka graafisen käyttöliittymän lisääminen ohjelmaan. Pienessä mittakaavassa sama asia on se, että useampi henkilö muokkaa ohjelmaa erikseen omalla koneellaan ja lopulta haluaa siirtää muutoksensa takaisin palvelimelle. | |||
Kun kehityshaaraan on tehty halutut muutokset, ne voidaan tuoda takaisin "päähaaraan" (Bazaarissa sinänsä mikään haara ei ole toista tärkeämpi, mutta tässä päähaaralla tarkoitetaan esimerkiksi projektin virallista Bazaar-versionhallintaa). Tätä kahden haaran yhdistämistä kutsutaan nimellä ''merge''. | |||
Toiseen haaraan tehdyt muutokset tuodaan omaan kehityshaaraan komennolla | |||
bzr merge http://projekti.fi/kehityshaara | |||
Jos osoitetta ei anneta, bzr hakee siihen kehityshaaraan, josta koneella oleva haara on kopio, tehdyt muutokset ja yhdistää ne koneella olevaan paikalliseen haaraan. | |||
Bazaar yrittää automaattisesti yhdistää muutokset. Jos merge ilmoittaa "All changes applied succesfully", on se automaattisesti osannut yhdistämään versiot. Muutokset näkee komennolla | |||
$ bzr diff | $ bzr diff | ||
Joskus merge ei kuitenkaan osaa yhdistää versioita kokonaan automaattisesti. Näin tapahtuu silloin, kun samaa osaa tiedostosta on muokattu molemmissa haaroissa. Tällöin syntyy ristiriita (''conflict'') joka on ratkaistava käsin. Tiedostot, joita ristiriidat koskevat, näkee komennolla | |||
$ bzr conflicts | $ bzr conflicts | ||
Tämän jälkeen ongelmat täytyy käydä ratkaisemassa koodista käsin. Kun tämä on tehty, | Tämän jälkeen ongelmat täytyy käydä ratkaisemassa koodista käsin. Kun tämä on tehty, poistetaan ristiriita Bazaarin tietokannasta komennolla | ||
$ bzr resolve TIEDOSTONIMI | $ bzr resolve TIEDOSTONIMI | ||
Lopuksi muutokset tallennetaan paikalliseen varastoon normaalisti komennolla | Lopuksi muutokset tallennetaan paikalliseen varastoon normaalisti komennolla | ||
Rivi 153: | Rivi 185: | ||
== Launchpad == | == Launchpad == | ||
Bazaar-palvelimen asentamisen sijaan voidaan käyttää myös julkisia Bazaar-palvelimen tarjoavia palveluita. Suurin tällainen on mm. [[Ubuntu]]n kehitysalustana käytettävä [ | Bazaar-palvelimen asentamisen sijaan voidaan käyttää myös julkisia Bazaar-palvelimen tarjoavia palveluita. Suurin tällainen on mm. [[Ubuntu]]n 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 <tt>~/.ssh/id_dsa.pub</tt> tai <tt>~/.ssh/id_rsa.pub</tt>. Jos tällaisia tiedostoa ei löydy, on SSH-avainpari luotava komennolla <tt>ssh-keygen</tt>. 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. | Muutoksia lähetettäessä käyttäjä tunnistetaan [[SSH]]-avaimen avulla. Käyttäjän julkinen SSH-avain löytyy polusta <tt>~/.ssh/id_dsa.pub</tt> tai <tt>~/.ssh/id_rsa.pub</tt>. Jos tällaisia tiedostoa ei löydy, on SSH-avainpari luotava komennolla <tt>ssh-keygen</tt>. 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. |