Newsgroup: it.comp.os.linux.development
Titolo: [CVS] non fare update di alcuni file e ignorare i file fuori-cvs

Salve,
spero sia il posto giusto, altrimenti impostate pure il follow-up su
software o su sys.
Brevemente la situazione: ho alcuni siti web in php gestiti in cvs da
diverse persone (programmatori, grafici, redattori, ecc.).
Quando mi danno l'OK per le modifiche, io vado sul server e faccio un
"cvs update" per scaricare tutte le modifiche che hanno fatto e metterle
online.
Ora il problema e` che qualche tempo fa sono stati inseriti nel cvs dei
file con alcune modifiche e dei file nuovi, ma il progetto non e' piu`
andato in porto, quindi non va messo online.
Io mi ritrovo ogni volta a controllare che file sono da mettere online e
a fare un 
cvs update file1 file2 file3 ...
per evitare di scaricare quei file "a meta`".
Prima domanda:
C'e` un modo per marcare quei file come "in sospeso" in modo che
l'update li ignori automaticamente?
Ho completo controllo sul cvs, anche a livello pserver (sono root).
Seconda domanda:
Online ci sono parecchi file che non vengono messi nel CVS per motivi di
spazio (filmati flash, mov, ...), e ogni volta che do` un update mi
appaiono con il "?" davanti (giustamente).
A parte redirigere lo stderr o usare -q, che un modo per dire al server
cvs "questi file ce li ho in locale, ignorali e basta"?
Grazie mille.

 per evitare di scaricare quei file "a meta`".
IMHO, state sbagliando approccio.
Sul server non ci deve essere una copia di lavoro (un checkout), ma un
export (cvs export) di tutte le revisioni dei file che hanno appiccicata
una certa etichetta (vedi cvs tag): solo questo garantisce che ci sia
coerenza tra le varie revisioni, e solo questo ti consente di tornare
indietro.
Gli sviluppatori dovrebbero poter lavorare sulla loro copia
di lavoro, fare tutti i checkin e i branch del caso, ed appiccicare la
stessa etichetta  (chessò, site_1_3_5) alle revisioni dei file che sono
coerenti tra loro, in modo che un'etichetta identifichi univocamente un
set di file coerenti tra loro.
Dopodiché ti comunicano "site_1_3_5 è pronto": allora vai sul server e
fai un "cvs export -r site_1_3_5 -d site-1.3.5 SITO" FUORI dalla document
root, mentre dentro la document root invece crei un link simbolico
alla versione del caso.
Risultato netto: cambi un link e cambi in un botto tutto il sito, se
qualcosa non va rimetti il link alla vecchia versione in un secondo, e
sei sicuro di non aver file/directory estranei in giro per la document
root. Quando sei sicuro che la nuova release funziona a dovere, puoi
rimuovere quella vecchia (che comunque puoi ri-estrarre dal CVS quando
vuoi, basta avere l'etichetta).
Come state lavorando adesso vi è praticamente impossibile tornare sui
vostri passi, dovete sempre lavorare sul ramo principale e avete roba
extra nella document root. In altre parole, state usando cvs come un
rsync un po' bizzarro.
Usando le etichette uno può rilasciare una versione coerente, mettersi
subito a lavorare sulle prossime feature, e fare un branch (etichettato ad
esempio site_1_3_5_1) se ci sono da fare correzioni veloci sulla versione
online prima che la prossima versione sia pronta).
-- 
  |   \    \  | ___|_  |_  |  ianezz a casa sua... :-)
  |  _ \  | \ | _|    /   /   Verba volant, scripta
 _|_/  _\_|  _|____|___|___|  manent, data corrupted

 IMHO, state sbagliando approccio.
Grazie mille dei consigli.
Purtroppo, se fossi solo io o tutti come me a usare il cvs, potrei anche
metterlo in pratica, ma e` gia` tanto che usino il cvs, non credo di
riuscire a convincerli anche a taggare le release. :)
Per il mio problema, ci ho pensato stanotte, e credo che mi mettero`
manualmente a fare cosi`:
Taggo il ramo attuale sul cvs come "VERSIONEAMETA". Cancello con cvs
remove i file in piu`. Rifaccio il checkout o provo l'update e vedo come
si comporta.
Non e` proprio bellissimo, ma l'alternativa e` creare un altro
repository con i file attualmente online, escludendo quelli gestiti
dinamicamente (immagini, sporattutto, uploadate da web) e rifare il
checkout, ma la prima soluzione e` la piu` semplice e veloce (sperando
che funzioni) e non mi rimette 1 Gb di roba nel repository...
Grazie ancora.
Bye