Da almeno un paio d’anni mi sono deciso ad utilizzare sistemi di controllo versione per i miei piccoli progetti (sviluppo software win32 in Delphi e siti web). Lo scopo non è tanto quello di avere un (ulteriore) backup, quanto capire quando e perché ho fatto determinate scelte a distanza di mesi o anni.

Forte dell’esperienza legata ai lavori di traduzione con Mozilla, la mia prima scelta è stata Subversion (SVN): inizialmente ho utilizzato il servizio SVN su DreamHost, poi ho riciclato il vecchio Mac Mini come server locale da affiancare al repository online. Come client la scelta naturale su sistemi Windows è TortoiseSVN. Su Mac, dopo qualche esperimento insoddisfacente con SCPlugin, ho deciso di passare all’ottimo Versions (a pagamento).

Premesso che lo sviluppo web lo seguo esclusivamente su Mac con TextMate e Mamp, nel corso del tempo è nato un problema non indifferente: per una mia forma mentis preferisco non lavorare direttamente sulla copia locale del repository. Periodicamente copio la cartella di lavoro (ad esempio la cartella di un tema WordPress presente nella httpdocs di Apache) all’interno della cartella svn del progetto specifico e gestisco da lì i commit.

Il problema è che, su Mac, sostituire una cartella significa di fatto eliminare l’originale e copiare al suo posto la nuova cartella. Di colpo tutta la cartella diventa “non revisionata” e ingestibile con SVN!

Da qualche tempo Mozilla è passata per la localizzazione dei software a Mercurial (Hg), mantenendo SVN solo per il settore web. Quando ho sostituito l’iMac a dicembre mi sono posto il problema di aggiornare i repository direttamente da OS X (finora avevo sempre usato TortoiseHg su Windows) ed ho scoperto l’ottimo MacHg. A questo punto il dubbio: perché non usare Mercurial anche per le mie esigenze? Presto fatto: ho acquistato la licenza di VMWare Fusion, installato Ubuntu Server e creato un server Mercurial seguendo questa guida (il server è locale, non ho bisogno di autenticazione o sicurezza).

Due vantaggi immediati:

  • Mercurial è un sistema di controllo distribuito, per cui posso fare i commit in locale, avviare periodicamente la macchina virtuale e fare un push per sincronizzare;
  • Mercurial non salva le informazioni in una cartella nascosta in ogni sottocartella ma solo nella root del repository, per cui sostituendo una sottocartella non si hanno problemi analoghi a quelli con SVN.

A proposito di VMWare Fusion: in passato ho sempre usato Parallels, approfittando di un’offerta sono passato a Fusion acquistando la licenza per 19.99$. Non riuscendo a registrare la licenza online, ho scritto una e-mail al supporto: nel giro di poche ore avevo una risposta in grado di risolvere il mio problema nella mail, non contenti il giorno dopo mi hanno anche telefono dagli Stati Uniti per capire se il problema era stato risolto. Piacevolmente stupito 🙂


8 commenti/trackback a “VCS (controllo versione) e affini”

  1. miki64 scrive:

    Bellissimo post, utilissimo, non so come ringraziarti, grande!

    in realtà non ci ho capito una cippa…. 😛

  2. Marco scrive:

    Tanto per restare in tema, l’ho visto stamattina: http://googlesystem.blogspot.com/2011/01/google-project-hosting-adds-file.html
    Certo che per ora è troppo grezzo ed improponibile, ma chissà che in futuro non possa finire tra le apps.

  3. Sergio scrive:

    Una curiosità: perché “complicarsi la vita” creando un server Mercurial per uso personale?

    Io mi limito ad una copia locale di lavoro e ad una copia sul file server dove effettuo i Push.

  4. flod scrive:

    Io mi limito ad una copia locale di lavoro e ad una copia sul file server dove effettuo i Push.

    Forse non ho capito ma non sono due anche nel tuo caso (macchina su cui lavori, file server su cui effettui i push)?

  5. Sergio scrive:

    Si sono due repository/cartelle, ma non uso un server (o almeno non una cosa complessa come quella descritta nella guida) si tratta semplicemente di un’altra cartella sotto il controllo di Mercurial.

    Giusto per intenderci, non si tratta neanche di una seconda macchina, ma semplicemente un NAS.

  6. flod scrive:

    Onestamente non avevo mai pensato a quel tipo di setup 😕

    Riesci a vedere grafi, cronologia, ecc. ecc.?

  7. Paolo Ferretti scrive:

    Su Bitbucket si possono avere repository mercurial privati illimitati. E’ un modo per semplificarsi ulteriormente la vita 😉

  8. flod scrive:

    Buono a sapersi, anche se personalmente preferisco rimanere in locale 😉

Trackback e pingback

  1. Nessun trackback o pingback disponibile per questo articolo

Non è possibile inserire nuovi commenti. I commenti vengono disattivati automaticamente dopo 60 giorni.