Newsgroup: it.comp.lang.delphi
Titolo: [ot] - Un pò lungo: Uso dei cvs per file condivisi da più progetti

Scusate l'ot, ma forse puï¿œ essere utile anche ad altri programmatori.
Come vi regolate usando sistemi di controllo di versione per quei file 
che sono comuni a piï¿œ progetti?
Teoricamente ogni progetto dovrebbe essere completo e registrato nel cvs 
come una cartella unica comprensiva delle librerie generiche, quindi i 
file comuni (le unit piï¿œ generiche, per intenderci) dovrebbero essere 
presenti in piï¿œ copie, una per ogni progetto che ne fa uso.
Inizialmente perï¿œ avevo gestito la cosa in altro modo, cioï¿œ creando una 
cartella con tutte le librerie di file piï¿œ generiche come se fosse un 
unico progetto (quindi una sola copia).
Entrambi i sistemi hanno pro e contro:
Con il primo sistema ogni progetto ha la propria copia dei file 
generici, ï¿œ quindi piï¿œ facile da manutenere, ma se si fa un upgrade 
interessante su un file generico poi ti devi ricordare di riportarlo su 
tutte le altre copie.
Con il secondo sistema c'ï¿œ un'unica copia dei file generici, ma ï¿œ piï¿œ 
difficile manutenere i progetti che magari usano diverse versioni del 
singolo file.
Voi come vi regolate?
Roberto Casarini

 Voi come vi regolate?
Lo scenario che hai appena descritto ï¿œ quello che trovi nelle 
introduzioni all'uso di un CVS, e giustamente come hai fatto notare 
anche tu, ogni soluzione ha i pro e i contro.
Per quanto mi riguarda, ho lavorato in diverse realtï¿œ dove si utilizza 
un CVS ed in nessuna di queste ho mai visto la ridondanza degli stessi 
file in piï¿œ progetti.
Il mio consiglio quindi ï¿œ quello di usare il repository in modo da 
avere una sola istanza del file condiviso.(a meno che non fai qualche 
fork, ma in quel caso e' tutto il progetto a duplicarsi).
-- 
Morde

 Voi come vi regolate?
Entrambe le modalitï¿œ sono fattibili: un file puï¿œ essere sempre copiato, 
se occorre utilizzarlo come "modello" e modificarlo in base alle 
esigenze; altrimenti, se deve essere "condiviso" tra piï¿œ progetti, puï¿œ 
essere immagazzinato in una cartella unica che contiene questo tipo di 
"file comuni".
Non penso che vi sia una soluzione che affronta entrambe le strade, ma 
tutt'al piï¿œ una soluzione specifica in base - appunto - all'esigenza.
O forse non ho capito bene la domanda... :-|
Ciao!
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 O forse non ho capito bene la domanda... :-|
In effetti non sono stato molto chiaro.
Diciamo che ci sono varie librerie generiche tipo dbaccess, fileutils, 
ecc ognuna composta da piï¿œ file.
Inizialmente anch'io usavo (ed uso se non cambio idea) l'approccio della 
   copia unica, cioï¿œ gestivo queste librerie come se fossero progetti a 
se stanti, e quando da cvs facevo il check out di un progetto che ne 
faceva uso dovevo ovviamente fare il check out anche delle librerie.
A lungo andare, vista la quantitï¿œ dei progetti da seguire, mi succedeva 
di avere versioni diverse delle librerie per ogni progetto, per es:
Prog_prova1 usa dbaccess ver 1.0.0.1 e fileutils ver 1.2.0.1
Prog_prova2 usa dbaccess ver 1.2.0.0 e fileutils ver 1.0.0.1
e questo rendeva difficile gestire i progetti, dovevo per ogni progetto 
farmi una lista delle librerie e relative versioni usate, e poi 
ricordarmi di manutenere la lista altrimenti son problemi.
In alternativa ho pensato di gestire ogni progetto come uno "scatolone"
unico contenente tutte le librerie.
Il vantaggio ï¿œ che:
1) faccio il check out solo del progetto
2) se quando avevo fatto il commit l'ultima volta il progetto girava, 
sono sicuro che gira anche adesso, indipendentemente dal fatto che le 
librerie possono essere obsolete.
Cosï¿œ perï¿œ ho piï¿œ copie delle librerie.
La soluzione ottimale dovrebbe essere di gestire le librerie come muduli 
a se stanti e dai progetti usare sempre la versione head delle librerie,
ma quando hai i clienti che ti alitano sul collo non ï¿œ sempre possibile 
apportare le opportune modifiche ai progetti.
Spero di essere ststo chiaro ma soprattutto volevo conoscere la vostra 
esperienza al riguardo
Grazie a tutti

 esperienza al riguardo
Ora sei stato piï¿œ chiaro, o forse io non ti ho capito subito :)
Ti suggerisco di fare una cosa di questo tipo: quando devi usare una 
unit condivisa e la devi modificare, creati un subfolder con il numero 
di versione. In questo modo ogni progetto puo' includere il subfolder 
della versione desiderata senza perdere il significato della uses che 
si riferisce a quella libreria specifica.
ES:
LIBRERIE
   DBACCESS
       VER1001
       VER1020
       VER2000
   FILEUTILS
       VER1001
       VER2000
e cosï¿œ via..
ciao
In altre parole, versiona ogni libreria e tieniti un trunk per ognuna.
Ciao
-- 
Morde

 In altre parole, versiona ogni libreria e tieniti un trunk per ognuna.
Il motivo del mio suggerimento e' che temo come la peste i file 
duplicati, perchï¿œ generano inevitabilmente disordine e confusione.
-- 
Morde

 e cosï¿œ via..
Furbo.
Credo che seguirï¿œ il consiglio.
Grazie e ciao

 Furbo.
Mordo.
-- 
Morde