Poistaminen, siirtäminen ja uudelleen nimeäminen

Subversion sallii tiedostojen ja kansioiden uudelleen nimeämisen ja siirtelyn. Tästä syystä TortoiseSVN-alivalikossa on komennot poistamista ja uudelleen nimeämistä varten.

Kuva 4.34. Resurssienhallinnan kontekstivalikko versioiduille tiedostoille

Resurssienhallinnan kontekstivalikko versioiduille tiedostoille


Tiedostojen ja kansioiden poisto

Käytä komentoa TortoiseSVNPoista poistaaksesi tiedostoja tai kansioita arkistosta.

Kun poistat tiedoston tai kansion komennolla TortoiseSVNPoista, se häviää heti työkopiostasi ja merkitään poistettavaksi arkistosta seuraavan toimituksen yhteydessä. Tiedoston sisältävä kansio näyttää muutettu -kuvakepäällystä. Aina arkistotoimitukseen saakka voit saada tiedoston takaisin suorittamalla komennon TortoiseSVNPalauta sen sisältävälle kansiolle.

Jos haluat poistaa kohteen arkistosta, mutta säilyttää sen paikallisesti versioimattomana tiedostona/kansiona, käytä komentoa Laajennettu kontekstivalikkoPoista (säilytä paikallinen). Nähdäksesi komennon sisältävän laajennetun kontekstivalikon, sinun on pidettävä Shift-näppäin painettuna, kun napsautat hiiren oikeaa näppäintä Resurssienhallinnan oikeassa paneelissa.

Jos tiedosto poistetaan Resurssienhallinnan avulla käyttämättä TortoiseSVN-kontekstivalikkoa, toimitusikkuna näyttää sen ja sallii poiston versiohallinnasta ennen toimitusta. Jos kuitenkin päivität työkopiotasi, Subversion havaitsee puuttuvan tiedoston ja korvaa sen viimeisimmällä arkistoversiolla. Jos joudut poistamaan versioidun tiedoston, käytä aina komentoa TortoiseSVNPoista jotta Subversionin ei tarvitse arvata, mitä todella haluat tehdä.

Poistetun tiedoston tai kansion palautus

Jos olet poistanut tiedoston tai kansion ja ehtinyt jo toimittaa muutokset arkistoon, niin tavallinen apukeino, TortoiseSVNPalauta ei enää toimi. Mutta ei tiedosto tai kansio tietenkään ole hävinnyt. Jos tiedät version, jossa tiedosto/kansio poistettiin (ja jollet tiedä, katso lokista), avaa arkistoselain ja vaihda siihen versioon. Valitse sitten poistamasi tiedosto/kansio, napsauta hiiren oikeaa näppäintä ja anna komento KontekstivalikkoKopioi.... Valitse kohteeksi kopioinnille työkopiosi.

Tiedostojen ja kansioiden siirto

Mikäli on tarpeen nimetä tiedosto tai kansio uudelleen, käytä komentoa KontekstivalikkoNimeä uudelleen.... Syötä kohteelle uusi nimi ja olet valmis.

Jos haluat siirtää tiedostoja työkopion sisällä, ehkäpä eri alikansioon, raahaa ne käyttäen hiiren oikeaa näppäintä:

  1. valitse siirrettävät tiedostot ja kansiot

  2. Oikea-raahaa ne uuteen paikkaan työkopion sisällä

  3. Vapauta hiiren oikea näppäin

  4. anna kontekstivalikossa komento KontekstivalikkoSVN siirrä versioidut tiedostot tähän

Toimita yläkansio

Koska uudelleennimeämiset ja siirrot tehdään komentoparina poista+lisää, sinun on toimitettava arkistoon uudelleen nimetyn/siirretyn tiedoston yläkansio, jotta siirron/uudelleennimeämisen poistettu osa näkyy toimitusikkunassa. Jos et toimita tätä poistettua osaa, se säilyy arkistossa, ja kun työtoverisi päivittävät työkopionsa, vanhaa tiedostoa ei poisteta. Toisin sanoen työkopiot sisältävät molemmat, sekä uuden että vanhan kopion.

Siniun täytyy toimittaa kansion uudellleennimeäminen arkistoon ennen kuin muutat kansion sisältämiä tiedostoja, muuten työkopiosi voi mennä todella sekaisin.

Toinen keino tiedostojen kopiointiin tai siirtämiseen on käyttää Windowsin kopioi/leikkaa -komentoja. Valitse haluamasi tiedostot, napsauta hiiren oikeata painiketta ja valitse komento KontekstivalikkoKopioi. Siirry sitten kohdehakemistoon, napsauta hiiren oikeata painiketta ja valitse komento TortoiseSVNLiitä. Jos haluat siirtää tiedostoja, käytä komentoa KontekstivalikkoLeikkaa komennon KontekstivalikkoKopioi sijaan.

Voit myös käyttää arkistoselainta kohteiden siirtelyyn. Lue lisää luvusta ”Arkistoselain”.

Älä siirrä tai uudelleennimeä ulkoisia projekteja

Ei ole hyvä ajatus käyttää Siirrä tai Nimeä uudelleen -komentoja kohteeseen, joka on luotu svn:externals-mekanismilla. Tämä poistaisi ulkoisen projektin sen omasta arkistosta, mikä luultavasti sotkisi muiden ihmisten työt. Jos joudut siirtämään ulkoista kohdetta, se kannattaa tehdä tavallisella Resurssienhallinnan siirtokomennolla ja sitten muokata lähde- ja kohdehakemistojen svn:externals-ominaisuudet kuntoon.

Tiedostonimien merkkitaso-ongelmien ratkaisu

Jos arkisto sisältää jo kaksi tiedostoa, joilla on sama nimi, mutta eri merkkitasot (esim. TEST.TXT ja test.txt), et pysty päivittämään tai hakemaan työkopiota tiedostot sisältävästä arkiston hakemistosta Windows-ympäristössä. Vaikka Subversion tukee merkkitasosta riippuvia tiedostonimiä, Windows ei sitä tee.

Tämä tilanne syntyy joskus, kun kaksi kehittäjää toimittaa muutokset arkistoon eri työkopioista, joissa on sama tiedosto eri tavoin nimettynä. Se voi myös sattua, kun tiedostot toimitetaan esim. Linux-työasemasta.

Tällaisessa tapauksessa sinun on päätettävä, kumman tiedoston haluat pitää, ja tuhota (tai nimetä uudelleen) toinen arkistosta.

Samojen tiedostonimien ongelman ennaltaehkäisy

Paikantimessa https://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ on saatavana palvelimen toimintokomento, joka estää toimitukset, joista seuraisi merkkitaso-ongelmia.

Tiedostojen uudelleen nimeämisten korjaaminen

Joskus käy niin, että ystävällinen kehitysympäristösi nimeää tiedostoja puolestasi uudestaan esim. osana ohjelman uudelleenjärjestelyä (refactoring), eikä tietenkään kerro tästä Subversionille. Jos päätät toimittaa muutoksesi arkistoon tässä tilanteessa, Subversion tulkitsee, että vanha tiedosto puuttuu ja uusi on versioimaton. Voisit tietenkin ruksata uuden tiedoston saadaksesi sen lisätyksi, mutta menettäisit silloin lokihistorian, koska Subversion ei tiedä, että tiedostot liittyvät toisiinsa.

Parempi keino ratkaista asia on kertoa Subversionille, että kyseessä on oikeastaan uudelleen nimeäminen. Voit tehdä tämän sekä Toimita että Tarkista muutokset -ikkunoista: valitse sekä vanha (puuttuva) ja uusi (versioimaton) nimi sekä anna komento KontekstivalikkoKorjaa siirto parittaaksesi tiedostot uudelleennimennäksi.

Versioimattomien tiedostojen poisto

Tavallisesti ohituslista kannattaa asettaa niin, että kaikki tuotetut tiedostot ohitetaan Subversionissa. Mutta entäpä jos haluat poistaa kaikki ohitetut kohteet esim. rakentaaksesi sovelluksen alusta uudelleen? Tavallisesti tällainen tehdään makefile-tiedostolla tai kehitysympäristön komennolla, mutta joskus tämä ei ole mahdollista, joten on hyödyllistä pystyä nollaamaan tilanne muutenkin.

TortoiseSVN sisältää komennon Laajennettu kontekstivalikkoPoista versioimattomat kohteet ... juuri tätä tarkoitusta varten. Sinun on pidettävä Shift-näppäin pohjassa oikea-napsauttaessasi hiirellä Resurssienhallinnan oikeassa paneelissa saadaksesi laajennetun kontekstivalikon näkyviin. Komento avaa ikkunan, jossa on lueteltu kaikki kansion sisältämät versioimattomat tiedostot. Voit sitten valita ne tiedostot, jotka haluat poistettavan.

Kun tällaiset kohteet poistetaan, ne siirretään Roskakoriin, joten virheen sattuessa voit yhä palauttaa alkuperäisen tilanteen.