sabato 12 settembre 2009

CVS su Mac. Un esercizio di pazienza.

La questione CVS su piattaforma Mac è quantomeno problematica, sempre che facciate parte di coloro che desiderano un livello medio di personalizzazione e di scelta e occupiate il tempo a lavorare ( o divertirvi) invece di far funzionare gli strumenti che dovrebbero farvi lavorare (o divertirvi). Coloro che si divertono a smanettare per il gusto di smanettare non sono tra questi per cui è inutile che continuino la lettura di quanto segue.

Hi! I’m a Mac!
E devo installare un client CVS sul mio OS X 10.5 aka Leopard.
Dopo estenuante ricerca sono giunto ad un bivio consistente di due opzioni:
Supponiamo che un Mac Guy debba installare il client cvs su OS X.
Avrebbe due opzioni:


  1. Installare i Developers Tools

  2. Usare un client self contained



La prima opzione costringe alla installazione di un pacco dono di 1GB (versione personalizzata della installazione. Altrimenti sono 3GB e passa) con un mare di (in)utilities per testare la applicazione in Cocoa che non scriverete mai. Assieme al pacco dono di cui sopra, verranno installati anche il server ed il client cvs, certo.
Questa opzione, è palese, obbliga l’utente ad installare software, compilatori e strumentini vari di cui non avrà mai necessità.
Si obietta da più parti che ‘tanto con quello che costa un HD al giorno d’oggi…’ ma non è questo il problema. Non è infatti il costo il maggior deterrente a questa opzione. Non è la mera occupazione di spazio su disco che potrebbe essere usato chessò per la vostra libreria iTunes, I vostri progetti personali, le vostre foto, le immagini a 300dpi e quelle a 72dpi per lavorare, MySQL e I database con tanti bei files php in fila come piccoli indiani, il software che usate ogni santo giorno per lavorare, comunicare, divertirvi insomma tutte queste cosucce inutili. No, non è questo.
Costringere l’utente ad installare un mare di inutilità per 3mb (tanto ‘pesa’ cvs) che gli occorrono è non dare scelta. Non avere scelta. O il pacco dono, o il nulla. Questo è qui che fa problema.
Se optate per la via maestra come Apple ve la indica, allora installate il pacco dono e morta là. Avrete il vostro client cvs.

Potreste optare, si fa per dire, anche per darwinport, macports oppure fink ma, guarda caso, tutte e tre le opzioni richiedono I Dev Tools installati quindi tanto vale ignorarli ed installare cvs direttamente con I Dev Tools.

A questo punto della nostra storia dobbiamo introdurre altri due personaggi:
La Differenza e La Unione.
Dovrete settare il vostro client per discorrere amichevolmente con il server cvs, fare una working copy sul vostro HD (si, sempre quello pieno di 3GB di roba inutile per voi). Come farlo senza aprire il santo terminale?
Cercate su macupdate quello che fa per voi.
Trovate su macupdate 5 software di cui:


  1. 3 PPC

  2. 1 Universal

  3. 1 versione freeware/pro a pagamento



Scartiamo, essendo come siamo avvezzi alla potenza di rosetta che più che stele è supplizio, I software ppc e ci dirottiamo sugli unici 2 (due) universal.
Il primo, richiede cvs già installato e vi permette le più comuni operazioni. Almeno sembra ad una prima occhiata.
Ad un uso più articolato, diciamo di 5 minuti, troviamo che non è possibile usare un diff-merge software di nostra scelta, quello che già di norma usiamo. O usiamo filemerge (contenuto nel pacco dono di cui sopra) oppure il vecchio e santo diff. Bene. E se volessi usare TextWrangler o qualsiasi altro? L’help tace e noi con lui.

Spendiamo due parole sul tanto decantato filemerge. Due parole di nome e di fatto. Non serve. Chiunque abbia usato winmerge (freeware) si ritroverà con volto basito di fronte a questa finestra dalla quale non si può fare direttamente alcuna operazione sui file in comparazione, i quali comandi sono messi in un comodissimo menu a tendina perché, ci hanno comunicato, gli icon designer di apple erano al momento in vacanza e non hanno avuto il tempo di preparare alcunché da pigiare ed i programmatori, per protesta contro le vacanze, a loro dire, inique di questi ultimi, hanno scioperato proprio nel momento in cui dovevano implementare il menu contestuale.

Insomma, non tiriamo neppure in ballo nomi illustri come Araxis e quant’altro in compagnia di filemerge. Lasciamo laddove si trova (nella cartella Dev/Application) e non ci pensiamo più.
Il secondo, di cui parleremo meglio dopo, va già molto meglio (dopo filemerge il mondo pare sorriderci e gli augelli far festa).
Che non vi venga in mente però di usare spaces con smartcvs. Che non vi venga in mente di usare la keyboard per switchare applicazioni. Un bug nel software lo rende inutilizzabile ogni volta che lo richiamate dal command+tab a partire da uno space diverso da quello ove lui si trovi.
Quindi, in summa, o non usate spaces oppure vi preparate a spostarvi di volta in volta da uno spazio all’alto alla ricerca del nostro (NonTanto)SmartCVS.
Dimenticavamo di aggiungere che la versione pro costa $80 (bug incluso, of course. E’ terminato il tempo nel quale acquistando un software avevi diritto all’uso normale di quest’ultimo).

Seconda opzione: usare un self contained client
Quali sono I candidati?


  1. Eclipse (e parentela)

  2. Il già visto (NonTanto)SmartCVS.




Entrambi in java per cui non attendetevi UI spettacolari, effetti speciali, riflessioni, eyecandy, yadayada (questo non è per forza di cose un male) e prestazioni al fulmicotone (questo è male).

Eclipse: download base con cvs client, diff e merge integrato. Nulla di più. 134MB e vi togliete il pensiero.
Affrontate le bizze del workspace (idiosincrasia di eclipse), fate il setup del repo, procedete al check out, attendete nel mentre che i vari dialoghi di eclipse si susseguono informandovi che sta presentandosi al server cvs e facendo I convenevoli del caso e, infine, molto in fine, avrete la vostra working copy.
A questo punto mica vorreste lavorare al vostro progetto con eclipse? Naaaaaa!
Fate partire il vostro fido TextMate ed iniziate a lavorare.
Dopo modifiche intensive vorreste procedere al commit. Ignari dello splendido isolamento nel quale eclipse vive e vegeta pensando che tutto ciò che non accade nel suo workspace semplicemente non è mai esistito e mai esisterà, vi accingete alla operazione tranne poi notare che eclipse non ha rilevato alcuna modifica effettuata nei files del progetto dato che sono state effettuate non con il suo editor.
Niente paura. Dovrete solo svegliare eclipse con un bel command+r perché si accorga di quanto è accaduto. Dopodiché, switchate modulo e procedete al commit. Andate a questo punto a prepararvi un bel caffè perché di tempo eclipse, tra connessione, recupero dell’indice dal repo e quant’altro, ce ne mette per questa operazione.

Hi! I’m a PC.
Equivalente di tutto ciò in Windows?
Installare TortoiseCVS (Freeware) 15MB
Installate Winmerge (Freeware) 2.90MB
Indicate a Tortoisecvs, con segno di spunta nelle preferenze, che volete usare winmerge per le operazioni di diff/merge.
Lavorate.

Windows, in questi contesti, è lontano. Altrove. Quasi nelle sfere celesti.