Gå til innhold

Synke et SVN repository til en FTP server?


Anbefalte innlegg

Hei,

 

Når eg utvikler webløsninger så bruker eg SVN/subversion for å holde kontrollen på versjoner osv og Mantis til å rapportere og holde orden på selve utviklingen. Disse to er koblet sammen.

 

Men nå har eg et prosjekt som skal publiseres på en webserver med shared hosting(Fastname). De støtter ikke SVN. Normalt sett så publiserer eg prosjektene på egne servere, jobbservere eller VPS servere fra servetheworld eller slicehost. Og da har eg tross alt full kontroll selv. Men nå har eg ikke det, og det virket ikke som om de ville legge til støtte for SVN.

 

Hva gjør eg da? :)

 

To mulige løsninger(som ikke er helt ideelle):

- Kjøre en checkout på den versjonen eg vil publisere mot ei lokal mappe, og så slette innholdet på ftp og laste opp alt på nytt. Tungvindt.

- Mappe opp webhotellet via FTP som en lokal nettverksdisk, og så kjøre en checkout direkte til denne mappen. Avhengig av en egen maskin til å gjøre det, og er fortsatt litt tungvindt.

 

En annen løsning eg har sett er at folk lager eget post-commit script som laster opp de endrede filene via FTP. Problemet her er at scriptet vil kjøre på hver enkelt commit, og det er ikke ønskelig.

 

Andre forslag eller innspill?

 

Arbeidsflyten eg bruker er som følger:

- hvert prosjekt har sitt eget repository.

- kontinuerlig arbeid mot mappen trunk i prosjektet.

- eget webhotell for utvikling som hele tiden gjenspeiler trunk mappen.

- ved lansering/publisering lager eg en kopi av trunk katalogen som en tag, med navn release-x.

 

Så gjenstår det å få til en god løsning for å kjøre release-x taggen mot det reelle webhotellet.

Lenke til kommentar
Videoannonse
Annonse

Er dette noe du kunne brukt Capistrano til? (Har ikke brukt det selv, men det er visst ganske velbrukt i rails-campen..)

 

Evt kunne du jo bare sjekket ut den revisjonen du vil publishe og benytte ftpsync? Litt manuellt men det funker vel. Tror ftpsync er inkludert på de fleste distroer (hvis du kjører linux).

 

-C-

Lenke til kommentar

Takker for forslag. Capistrano ser litt overkill ut, men ftpsync kan jo absolutt fungere.

 

Vurderer å gjøre det på følgende måte via et script:

- ta backup av mapper/filer som gjelder for løsningen som er live

- slette innholdet på serveren via SSH

- kjøre en svn checkout til ei lokal mappe av den endelige utgaven

- overføre alt via FTP

- legge tilbake mapper/filer som det ble tatt backup av(typisk konfigurasjonsfiler og bildemapper)

 

Et alternativ er at eg i stede for å slette innholdet tar en diff på hva som er endret mellom nåværende og forrige versjon, og kun overfører disse. Krever litt scripting men vil være den metoden som er mest effektiv mtp hvor mye som overføres og hvor lang tid det tar(uten å måtte overføre HELE webhotellet for hver gang).

Lenke til kommentar

Jo, om alt fungerer som det skal, og at tidsstempler o.l. ivaretas.

 

For eks, om eg kjører en checkout på den versjonen eg vil ha mot ei lokal mappe så vil i praksis alle filene være nyere lokalt enn på server, og alle filene blir overført uansett. Men om eg har ei lokal mappe som brukes som en "duplikat" av målmappen på serveren, og så bruke svn switch for å bytte versjon(og da oppdateres kun de endrede filene lokalt), så kan ftpsync overføre kun de endrede/nye filer.

 

Men, så er eg litt bekymret for hvor stabilt en slik løsning er. Dette er kanskje bare pirk i fra min side, men om ftpsync ikke klarer å overføre ei fil, så kan det i praksis ødelegge selve siten som kjører. Men dette gjelder også forslagene mine :)

 

Lurer nesten på om eg skal følge ordtaket "Fix your enviroment, not your code"? :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...