Mercurial Web programuotojams

Kadangi ubuntu.lt kodą buvo nuspręsta perkelti po Launchpad.net stogu, tai teko šiek tiek pasidomėti bazaar versijų kontrolės sistema. Radau įdomų dalyką – Publishing your branch! Bazaar gali siųsti pakeitimus tiesiai į SFTP serverį.

Tikriausiai daugelis Web programuotojų keičia kodą savo kompiuteryje, o vėliau tai kas pakeista siunčia per FTP į Web serverį. Aš darau būtent taip ir darau tai labai dažnai. Iki šiol pakeitimų į Web serverį siuntimui naudojau Makefile + lftp. Tačiau pasiskaitęs apie Bazaar nusprendžiau pasidomėti ar Mercurial turi kokias nors priemones „push'inti“ į FTP. Pasirodo turi! :)

Atradimas
Radau Mercurial FTPExtension, kuris daro būtent tai, ko reikia!

Trumpai aprašysiu kaip dirbu su kodu ir kaip jį siunčiu į Web serverį, per FTP.

1. Keičiu kodą:

  1. $ vim index.php

2. Fiksuoju tai ką keičiu:

  1. $ hg ci -m "Aprašymas ką ir kodėl keičiau."

3. Magija prasideda :) Siunčiu pakeistus failus į Web serverį, per FTP:

  1. $ hg ftp -u

hg ftp -u komanda surenka visus pakeitimus nuo paskutinio siuntimo į Web serverį ir siunčia naujus ir keistus failus, o taip pat ištrina tai, kas buvo ištrinta. Tačiau neliečia nei vieno failo Web serveryje, kurio nėra Mercurial repozitoriume. Tai reiškia, kad serveryje gali būti kokių tik nori failų, tačiau atnaujinama bus tik tai, kas konkrečiai keičiasi kode. Bent jau mano darbe tai yra labai naudingas dalykas.

Kaip įdiegti FTPExtension?
Labai paprastai:

  1. $ mkdir -p ~/.hgext
  2. $ cd ~/.hgext
  3. $ hg clone http://bitbucket.org/misery/hgftp/

Po šių veiksmų, galite įjungti šį praplėtimą globaliai (~/.hgrc), arba tik konkrečiam repozitoriumui (./.hg/hgrc) į nurodytą failą įrašydami:

  1. [extensions]
  2. hgext.ftp = ~/.hgext/hgftp/ftp.py

FTPExtension konfigūravimas
Kai jau turite veikiantį praplėtimą, konkrečiam Web projekto repozitoriumui galite nurodyti FTP prisijungimą, kur bus siunčiami duomenys. Tai galite padaryti repozitormiumo konfigūraciniame faile ./.hg/hgrc, nurodydami:

  1. [paths]
  2. ftp = ftp://[user[:pass]@]host[:port]/[path]
  3. myhost = ftp://andre@incubo.de/htdocs

Jei prisijungimo eilutę priskirsite specialią paskirtį turinčiam žodeliui 'ftp', tuomet šis FTP serveris bus naudojamas pagal nutylėjimą ir galėsite tiesiog naudoti hg ftp -u. Kitais atvejais, reikia nurodyti serverį taip: hg ftp -u myhost.

Toliau reikia nurodyti reviziją, nuo kurios bus siunčiami atnaujinimai. FTPExtension pakeitimus siunčia nuo revizijos, kuri pažymėta žyme 'uploaded@host'. Žinoma 'host', reikia pakeisti į konkretų hostą, tai myhost atveju, turėtų būti 'uploaded@incubo.de'. Einamajai revizijai lokalią žymę uždėsite taip:

  1. $ hg tag -l uploaded@host

Viskas, kai jau FTPExtension žino reviziją, nuo kurios siųsti pakeitimus, galite keisti kodą, fiksuoti pakeitimus ir siųsti juos per ftp labai paprastai ir labai greitai. Daugiau nereikės sukti galvos dėl to kas buvo keista, kada atnaujinta ir pan.

Pabaigai, siūlau pasiskaityti daugiau apie tai, kaip naudoti šį praplėtimą:

  1. $ hg help ftp

Daugiau informacijos praplėtimo svetainėje:

Komentarai

Anonymous portretas

O config failų į

O config failų į repozitorijas netalpini? Jie turėtų irgi persirašyti ant viršaus :-)

Aš kadangi daugiausia programuoju NetBeans'ais, tai naudoju šių upload funkciją. Galima projektui susikonfigūruoti FTP accountą ir uploadint failus (visus ar pasirinktus) tiesiai iš IDE. Žinoma, uploadint iš repozitorijos yra geriau, nes gaunasi, kad uploadini kažkokį konkretų buildą. Jei šis buildas neveiks, galima grįžti vienu buildu atgal. O priuploadinęs po vieną failą įprastai, jau paprastai nebeatrinksi dėl ko nebeveikia sistema.

sirex portretas

Kadangi config failuose

Kadangi config failuose saugoma labai nedaug informacijos, viena ar dvi eilutės, tai neverta jų talpinti į repozitorumą, čia kalbu apie lokalius repozitoriumo config failus. O globalūs, esantys mano namų kataloge tai žinoma, kad sėdi po versijų kontrolės sistemos stogu: bitbucket.org/sirex/home/.

Skelbti naują komentarą

Šio laukelio turinys bus laikomas privatus ir nerodomas viešai. If you have a Gravatar account, used to display your avatar.
  • Leidžiamos HTML žymės: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linijos ir paragrafai atskiriami automatiškai
  • Web puslapiu adresai ir el. pašto adresai automatiškai tampa nuorodomis.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

Daugiau informacijos apie teksto formatavimą

CAPTCHA
Šis klausimas skirtas patikrinti ar esi žmogus, taip apsisaugant nuo internetinių reklamos robotų.
Image CAPTCHA
Enter the characters (without spaces) shown in the image.
Surinktas turinys