Versionhallinta. Matti Paksula ja Esko Luontola Syksy Tietojenkäsittelytieteen laitos Kuje Research Group

Samankaltaiset tiedostot
Versionhallinta MIKSI?

Versionhallinta MIKSI?

Versiohallinta ja Subversion Maunu Tuomainen

Versionhallintaa. Versionhallinnan käyttöönotto SAS ympäristössä

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

Hajautettu versionhallinta Gitillä

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

Convergence of messaging

Työkalut ohjelmistokehityksen tukena

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Projektityö

Korpusten käsittely clt131, P Luento 4

Luento 5. Timo Savola. 28. huhtikuuta 2006

Kieliteknologian ATK-ympäristö Kolmas luento

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

erasmartcardkortinlukijaohjelmiston

Ohjeita LINDOn ja LINGOn käyttöön

Ensimmäisessä vaiheessa ladataan KGU tietokanta Hallitse tietokantoja toiminnon avulla.

XML tehtävien työnkulku

Valppaan asennus- ja käyttöohje

CLT131: Tekstityökalut 2011, viides luento

Visma.net Approval. Versiosaate 1.40

MixW ja Dx-vihjeet (ohje) oh3htu

TIE Ohjelmistojen suunnittelu

Zeon PDF Driver Trial

Luento 4. Timo Savola. 21. huhtikuuta 2006

Ohjelmointi 1 / syksy /20: IDE

5. HelloWorld-ohjelma 5.1

NORDEAN WEB SERVICES YHTEYDEN KÄYTTÖÖNOTTO

Maventa Connector Käyttöohje

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

Ohjelmistoprojektien johtaminen Projektissa käytettävät työkalut

Tiedostonhallinta. Yleistä

Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria

SCI- A0000: Tutustuminen Linuxiin, syksy 2015

Suoritusten kirjaaminen WinOodissa: Opintoneuvojan ohje

Käytin tehtävän tekemiseen Xubuntu käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Komentotulkki. Kysymyksiä

NOVAPOINT Soundings Editor 3.3

Visma Avendon asennusohje

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

[Jnix näyttökoe. o ei ole sallittua käyttää mitään verkkolevyjakoa tai mitään siihen rinnastettavaa järjestelmdä.

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Alustavia käyttökokemuksia SAS Studiosta. Timo Hurme Maa- ja elintarviketalouden tutkimuskeskus MTT (v alusta Luonnonvarakeskus / Luke)

Network Video Recorder. Pika-asennusohje

Ohjelmistojen testaus ja hallinta. Gradle

LUENTO II O365 JA VERKKO- OPISKELU

Linux ylläpitäjän opas. Tärkeimmät komennot, logit ja muuta hömppä *^_^* by Hannu Laitinen ETA14KT

13. Hyvä ohjelmointitapa (osa 1) 13.1

Käyttöohje. Energent MagiCAD plugin

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Jypelin käyttöohjeet» Ruutukentän luominen

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

Fixcom Webmail ohje. Allekirjoitus. Voit lisätä yhden tai useamman allekirjoituksen.

2017/11/21 17:28 1/2 Tilitapahtumat. Tilitapahtumat... 1 Käyttö:... 1 Asiakirjan kentät:... 1

Linux - käyttöoikeudet

Käytin tehtävän tekemiseen Xubuntu käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Discendum Oy

Kieliteknologian ATK-ympäristö Toinen luento

Microsoft Outlook Web Access. Pikaohje sähköpostin peruskäyttöön

1 www-sivujen teko opetuksessa

Tekstieditorin käyttö ja kuvien käsittely

F-Secure virustorjuntaohjelmiston käyttö

Ubuntu - tiedostohallinta

Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Digikoulu Pilviteknologiat - Tunti 1001: Tiedon varastointi Amazon Simple Storage Service (Amazon S3) palveluun

WordPress Multisiten varmuuskopiointi

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Lakki. Lisää ot sik k o osoit t am alla. Nöyrästi vain lakki kourassa... Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi 2010

Helsingin yliopisto WebOodi 1 Opiskelijarekisteri Versio 3.2. Tenttityökalu

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

erasmartcard-kortinlukijaohjelmiston asennusohje (mpollux jää toiseksi kortinlukijaohjelmistoksi)

TOOLS KÄYTTÖOHJEET OPETTAJALLE

Skosmos 0.6 esittely. Osma Suominen ONKI-projektin laajennetun projektiryhmän kokous

2 Konekieli, aliohjelmat, keskeytykset

ASENNUS- JA KÄYTTÖOHJE

Käyttöohje Planeetta Internet Oy

HELSINGIN YLIOPISTO SÄHKÖISESTI VARMENNETTUJEN RAPORTTIEN OTTAMINEN WINOODISTA

Mitä Uutta - SURFCAM V5.1 Sisällysluettelo

Eclipse, SVN ja HelloWorld

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

ASTERI OSTORESKONTRA. Vuosipäivitys

DI Studion käyttökokemuksia. Kaisu Ikonen, Tilastokeskus

Opus SMS tekstiviestipalvelu

Salasanojen turvallinen tallentaminen KeePass ohjelmalla

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Ohjelmoinnin perusteet Y Python


Julkinen. Suomen Pankin ja Finanssivalvonnan suojattu sähköposti: ulkoisen käyttäjän ohje

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Office365 Tampereen yliopiston normaalikoulussa

PRINTER DRIVER PÄÄKÄYTTÄJÄN OPAS

Artikkelien muokkaaminen sekä sisältöeditorin peruskäyttö

Coolselector Asennusohje

Ohje kehitysympäristöstä. Dokumentti: Ohje kehitysympäristöstä.doc Päiväys: Projekti : AgileElephant

Transkriptio:

Versionhallinta Matti Paksula ja Esko Luontola Syksy 2009 Tietojenkäsittelytieteen laitos Kuje Research Group

Kurssin rakenne 2 luentoa Versionhallinta ja keskitetty malli (Subversion) Hajautettu malli (Git) 2 harjoitukset Ensimmäisissä teemana Subversion Toisella kerralla Git Alkavat ensi viikolla Harjoitustyö Kaksi osaa: Subversion ja Git Tällä pääsee kurssin läpi, ei siis tenttiä

Versionhallinta Mikä kurssi on? Katsaus versionhallintaan tekniikkana, jossa opetellaan hieman enemmän, kuin pelkkä commit ja update Kurssi järjestetään nyt ensimmäisen ja viimeisen kerran - Materiaali sulautetaan jossain muodossa Ohjelmistotuotanto -kurssiin Miksi Git ja Subversion? Miksei Mercurial, Bazaar, CVS, Darcs

Kieli checkout reposta ja trunkin branchaus vs työkopion hakeminen tietovarastosta ja trunk -hakemiston haarauttaminen Koska yleisesti ei puhuta tietovarastosta ja haarasta, vaan repositorystä ja branchistä, kurssin materiaalit käyttävät tätä kamalahkoa kieltä.

Palautetta, kiitos! Kurssisivulla on palautelaatikko Normaalia kurssipalautetta arvostetaan tietysti myös

Versionhallinnan käyttötarkoituksia Versiointi (d'oh) Tiimityö Tiedostojen jakaminen hankalaa, projektista on useita samanaikaisia versioita Varmuuskopiointi, tilan tallettaminen Ilman versionhallintaa: Historia - backup-gradu-20090804/ - tomiva_versio_harjoitustyo.php - toimiva_versio2_harjoitustyo.php - Kokeilu2.java Tiedetään kuka teki muutoksen, milloin (aika) ja miksi (muutoksen kommentti)

SVN historiaa Tarkoituksena korvata CVS Kehitetty 2000 lähtien Subversion - CVS done right. There is no way to do CVS right. Linus Torvalds Kuitenkin hyvin yleisesti käytetty ja ihan ok

Käsitteitä repository keskitetty paikka projektin tiedostoille hyvä suomennos voisi olla tietovarasto.. revision Tietty tila repositoryssä pidetyssä projektissa r1 r2 r3 - Mikä tahansa tila voidaan palauttaa tai vertailla kahden eri tilan välisiä muutoksia checkout Haetaan repositorystä (yleensä viimeinen) tila omaan....working copy, työkopio Paikallinen kopio projektin tiedostoista

A:n joukko tiedostoja muodostaa revision 1, jonka B hakee itselleen. B 1 2 3 4 A

A tekee muutoksia ja lähettää tämän repositoryyn. Joukko muodostaa repositoryssä revision 2 B 1 2 3 4 A

B päivittää oman työkopionsa hakemalla A:n muutokset revisiosta 2 B 1 2 3 4 A

B lähettää omat muutoksensa (johon on yhdistetty myös revisio 2:n tila) revisioksi 3 B 1 2 3 4 A

A tekee omassa työkopiossaan muutoksia, jotka ovat ristiriidassa revision 3 kanssa B 1 2 3 4 A

A yrittää luoda revision 3, mutta repository hylkää muutokset, sillä huomaa, ettei A ole ajantasalla B 1 2 3 4 A A päivittää oman työkopionsa 3, selvittää ristiriidat

Ristiriidaton joukko tiedostoja hyväksytään revisioksi 4 B 1 2 3 4 A

Asiakasohjelmat svn -komentorivityökalu Tällä kurssilla kaikki tehdään tällä. On tärkeää oppia perusteet ilman hiirtä ja dialogeja. Elämää helpottavat graafset työkalut, kuten: TortoiseSVN (windows) SmartSVN (kaikki) Subclipse (Eclipsen plugin)

HELP Luennolla ja harjoituksissa ei millään ehditä kaikkea $ svn <komento> --help Hyvä on-line kirja: http://svnbook.red-bean.com/

Repositoryn perustaminen Useimmissa tapauksissa repository on jo olemassa svnadmin $ svnadmin create <nimi> Luo sisäisen repositoryn hakemistorakenteen, jota ei kannata muokata suoraan (vaan käyttää työkaluja) Tämän jälkeen on hyvä vielä miettiä, miten tämä on varmuuskopioitu (mutta siihen ei mennä tällä kurssila)

Käyttö SVN käsittelee repositoryä aina URL:n kautta fle:// -protokolla jos pääsy paikallisesti svn:// -protokolla http:llä (WebDAV), mutta tähän tarvitaan jokin web-serveri, kuten Apache. svn+ssh:// -protokollalla, tällöin tarvitaan pääsy koneeseen, jossa repository sijaitsee.

Työkopion hakeminen Checkout, eli työkopion hakeminen paikallisesti $ svn checkout fle:///koko/polku/repositoryyn kohde Hakee viimeisimmän version työkopioksi (working copy) hakemistoon kohde Hakemistossa kohde on tällöin.svn -hakemisto, jossa pidetään kirjaa muutoksista ym. checkout etänä omalle koneelle $ svn checkout svn+ssh://kohdekone/polku/repo Tekee saman kuin edellinen, mutta käyttäen SSH:ta. Tarvitaan siis pääsy SSH:lla kohdekoneeseen, ei muuta.

Lyhenteet svn checkout co svn update up svn status st $ svn help kaikki kommennot ja lyhenteet.. HEAD, PREV.. Lyhenteitä revisionumeroille - HEAD: uusin revisio repositoryssä - PREV: edellinen

Repositoryn rakenne Työkopio, working copy Kaikki muutokset, mitä tehdään paikallisesti ovat paikallisia, kunnes ne päivitetään repositoryyn (commit) Repository järjestetään yleensä kolmeen hakemistoon: trunk, branches ja tags trunk - viimeisin versio, päähaara branches tags - kokonaisia kopioita repositoryn tilasta, jonka tila on osittain eri, kuin esim. trunk -haara. yksittäisiä repositoryn tiloja, kuten 1.0 tai julkaisu

Ensimmäinen commit tehdään muutoksia $ svn mkdir trunk branches tags hakemistojen luontiin ja muut tiedosto-operaatiot on hyvä tehdä svn -komennon kautta A trunk A branches A tags SVN kertoo meille, että työkopion seurantaan on lisätty (Added) nyt hakemistot Muutokset saadaan repositoryyn commitilla $ svn commit -m Hakemistorakenne SVN näyttää mitä repositoryyn lisättiin ja kertoo, millä revisionumerolla muutokset ovat repositoryssä.

Jatketaan lisäilyä editoidaan tiedostoa trunk/kokeilu.txt Kysytään SVN:ltä mikä on työkopion tila: $ svn st? trunk/kokeilu.txt Tiedostoa kokeilu.txt ei ole vielä lisätty seurantaan Lisätään tiedosto versionhallinnan seurattavaksi $ svn add trunk/kokeilu.txt SVN kertoo, että tiedosto on lisätty työkopion seurantaan. (ja saman sanoo $ svn st) $ svn ci -m Kokeilu Commited revision edellinen+1 viestillä Kokeilu

Muokkaaminen ja commit Jos tiedostoa nyt muokataan $ svn st M trunk/kokeilu.txt SVN kertoo tiedoston muuttuneen työkopiossa. - (ja tiedosto on seurannassa) $ svn ci Koska viestiä ei aseteta komentorivillä, aukeaa $SVN_EDITOR, $EDITOR tai $VISUAL ympäristömuuttujissa määritelty editori....tai virhe: ympäristömuuttujaa ei ole asetettu.

Commit Muista hyvät kommentit Kerro lyhyesti ja ytimekkäästi mikä muuttui ja miksi. Bugfx, korjaus ei kerro mitään. Muiden on helpompi lukea commit, kuin 200 riviä koodia. On parempi tehdä paljon pieniä committeja, kuin muutama iso / koko päivän työt kerralla. Jokaisen commitin tulisi käsitellä vain yhtä asiaa

Muiden tekemät muutokset Muiden tekemät muutokset saadaan päivitettäy omaan työkopioon updatella. $ svn update SVN hakee uusimman tilan repositorystä ja kertoo mitä muutoksia tapahtui Mahdollisia muutoksia Added : tiedosto listättiin Deleted : tiedosto poistettiin MerGed : tiedoston sisältö yhdistettin automaattisesti Confict : sisällön muokkaaminen ei onnistunut, sillä riveissä on ristiriita. Updated : Tiedosto päivitettiin

Confict - Ristiriita Jos SVN ei osaa yhdistää kahta muutosta toisiinsa (muutokset koskevat samoja rivejä), syntyy ristiriita, joka pitää ratkaista käsin. Avataan tiedosto jossa ristiriita on: rivi, jolla ei ole konfiktia <<<<<<<.mine omassa työkopiossa oleva rivi ======= revisiossa r3 oleva rivi >>>>>>>.r3 rivi, jolla ei ole konfiktia Muokkaa konfikti siten, että lopputulos on haluttu ja poista siis <<<.., ===.. ja >>>.. -rivit

Ristiriidan merkitseminen selvitetyksi $ svn st Tiedostoa ei seurata versionhallinnassa? trunk/kokeilu.txt.r2 # revision 2 tila? trunk/kokeilu.txt.r3 # revision 3 tila? trunk/kokeilu.txt.mine # työkopion tila C trunk/kokeilu.txt # yhdistetty tila $ svn resolve --accept working trunk/kokeilu.txt Poistaa ylimääräiset tiedostot ja asettaa yhdistetyn työkopiossa tilan lopulliseksi tilaksi Vanha $ svn resolved on deprekoitu (!)

Eclipsen SVN-plugin & Confict edit

diff - eroavaisuudet $ svn diff Tätä riviä ei ole työkopiossa Eli se poistuu. Index: trunk/kokeilu.txt ======================================= --- trunk/kokeilu.txt (revision 4) +++ trunk/kokeilu.txt (working copy) @@ -1,3 +1,6 @@ 1 rivi 2 rivi -3 rivi +2.1 alarivi +2.2 alarivi +2.3 alarivi Näitä kolmea riviä ei ole revision 4:ssä, joten ne tulevat uuteen versioon. difflle voi antaa useita parametrejä, kuten: -r 3:23, vertaile revisioita 3 ja 23 -r 23 vertaile työkopiota revision 23 kanssa

Revert (ja Merge) hups, muutosten kumoaminen Jos muutoksia ei ole vielä viety repositoryyn $ svn revert tiedosto.txt Kumotaan työkopion muutokset Jos taas muutokset on jo viety pitää luoda uusi revisio mergen avulla, jotta historia olisi yhtenäinen kaikille. $ svn diff -r HEAD:haluttu tiedosto.txt Vertaillaan uusinta (HEAD) ja haluttua, näytettään - ja + merkeillä, mitä poistetaan ja lisätään $ svn merge -r HEAD:haluttu tiedosto.txt tiedosto.txt:n sisältö on nyt revisiossa haluttu Merge toteuttaa siis diffn muutokset.

Log Repositoryn tai tiedoston historia: kuka, aika, muuttuneet rivimäärät, kommentti.. $ svn log hakemisto Repositoryn historia Optio -v antaa enemmän tietoa $ svn log tiedosto.txt Yksittäiset tiedoston historia

Tiedostojen poisto ja uudelleennimeäminen Tiedosto-operaatiot Jotta versionhallinta tietää, mitä työkopiossa tapahtuu, on turvallista tehdä tiedostojen poistot, uudelleennimeämiset ym. versionhallinnan kautta: $ svn mv tiedosto.txt uusinimi.txt Lisää tiedoston uusinimi.txt, poistaa tiedoston tiedosto.txt Säilyttää silti historian, uusinimi.txt:llä on tiedosto.txt:n historia!

Ignore kaikkea ei haluta pitää versionhallinnassa Osa tiedostoista on työtiedostoja tai muuta, jota ei tarvitse jakaa muille. Global ignore jättää tiedostot aina huomiotta ~/.subversion/confg [miscellany] global-ignores = *.tmp.ds_store Yleensä tieto halutaan kuitenkin säilyttää repositoryssä, repositoryn tulee kertoa, mitkä tiedostot jätetään huomiotta. Tästä lisää kohta.

Properties SVN:n voidaan tallettaa propertyjä, eräänlaista metatietoa. Propertyt ovat avain-arvo -pareja, jossa avain voi olla mitä tahansa. Muutamat varatut avaimet, kuten svn:ignore vaikuttavat SVN:n toimintaan. Propertyt asetetaan aina johonkin hakemistoon, johon ne vaikuttavat. Vaikutus ei ole rekursiivinen.

Ignore $ svn propset svn:ignore "*.log" logs Asettaa kaikki *.log -tiedostot logs -hakemistossa ignoreen $ svn propget svn:ignore logs Näyttää logs -hakemiston svn:ignore -propertyn sisällön propertyn asetus pitää lisätä versionhallintaan, tällöin muutos näkyy hakemistossa, johon property on asetettu. Huom! Jos tiedosto on jo lisätty versionhallintaan, niin svn:ignore ei vaikuta niihin. Tiedosto tulee ensin poistaa versionhallinnasta.

Branches & tags Ohjelmistoa kehitetään jatkuvasti ja ajoittain kehitys haarautuu Uusi ominaisuus Kokeilut Toinen versio ohjelmasta Branch Erillinen kehityshaara Tag Repositoryn tietyn hetken tila versio-2.2

Tagit Tila muuttuu jatkuvasti kehityksen aikana, miten tiedetään mikä tila oli mikäkin? Revisio 273 :n sijasta voidaan käyttää tagia julkaisu_1.0 Tagi luodaan käyttämällä copy -komentoa. SVN luo tällöin linkin hakemiston tai tiedoston revisioon. $ svn copy trunk tags/julkaisu_1.0 Tämänhetkinen trunk -hakemiston tila on nyt tägätty hakemistoon tags/julkaisu_1.0 Jos kopio halutaan luoda jostain aikaisemmasta revisiosta, voidaan se määritellä -r # -parametrillä.

Branch Joskus ohjelman kehitys on järkevää hajauttaa omaan haaraan Branch luodaan käyttämällä copy -komentoa. SVN luo tällöin linkin hakemiston tai tiedoston revisioon. $ svn copy trunk branches/uusi_ominaisuus Tämänhetkinen trunk -hakemiston tila on nyt branchattu hakemistoon branches/uusi_ominaisuus Jos kopio halutaan luoda aikaisemmasta revisiosta, voidaan se määritellä -r # -parametrillä. Huom: branches hakemiston tulee olla seurannassa

Havaitaan SVN:ssä on vain käsitteet tag ja branch. Yhtä oikea käsite olisi heppa. Tämäkin voitaisiin luoda käyttäen copy -komentoa. Molemmat ovat vain hakemistoja. Kuitenkin tag ja branch ovat hyviä ratkaisuja oikeisiin ongelmiin.

Switch Työkopion sijaintia repositoryssä voi vaihtaa. Tämä on kätevää esim. branchien kanssa työskennellessä. $ svn switch <REPO-URL> Vaihtaa työkopion käyttämän hakemiston repositoryssä $ svn switch svn+ssh://.../branches/uusi_branch Koko työkopio on nyt vaihdettu $ svn switch svn+ssh://.../trunk Takaisin trunk -hakemistossa

Merge muutosten yhdistäminen Merge yhdistää kaksi hakemistoa (tai tiedostoa) Ajaa diffn ja tuottaa yhdistetyn tilan työkopioon. $ svn diff -r $ svn merge <REPO_URL> <kohde> Branchin yhdistäminen trunk -hakemistoon: $ cd trunk $ svn merge -r ##:HEAD../branches/haara Jossa ## on revisio, jossa on ensimmäinen yhdistettävä muutostila (esim branchin luonti) Luontirevision saa selville: $ svn log stop-on-copy branches/haara - Eli pysäytetään logi kun copy suoritetaan

Branch merge - best practices Luo branch Commitoi branch heti - Ota revisionumero ylös (tai katso svn log -kommennolla) Tee muutoksia branchiin Commit, kun valmista Vaihda trunk -hakemistoon Aja merge -r <revisio-jossa-branch-luotiin>:head Tällöin mergeen tulee kaikki branchiin tehdyt muutokset. $ svn diff -r ##:HEAD --new=branches/haara old=trunk Eroavaisuudet haaran ja trunk välillä

Muuta Versionhallinnan versio-ongelmat $ svn --version Joskus asennettu versio SVN:stä saattaa olla uudempi tai vanhempi eri koneilla (erityisesti yliopiston eri palvelimilla) Jos näin käy, on helpointa ottaa uusi työkopio uudella versiolla.. Laitoksella on SVN:stä asennettuna 1.4.x ja 1.5.x riippuen koneesta :(

Hooks SVN osaa reagoida tapahtumiin, nämä on listattu hakemistossa <repository>/hooks Yksi tapahtuma on post-commit, joka ajetaan jokaisen commitin jälkeen repositoryssä. Tätä voi hyödyntää esim: - Yksikkötestien ajamisessa automaattisesti - Päivittämään www-sivut repositorystä - Sähköposti-ilmoitukset, RSS-syöte..