Newsgroup: it.comp.os.linux.sys
Titolo: [OT] Differenza tra repository/directory

Scrivo qui, perchè c'è sicuramente più gente esperta che in
qualche altro gruppo semi-deserto.
 
Ho due repository GIT, per intenderci quello in produzione e quello di sviluppo.
 
Ho preso il repository di produzione, ho aggiunto come "remote" il repository
di sviluppo, fatto il pull, fatto checkout del branch di sviluppo e, da li,
fatto un bel merge tra sviluppo e "master" in produzione.
 
Operazione fatta decine di volte, ma sempre su history piccole, al massimo
una decina di commit, in questo caso, invece, ci sono quasi 9 mesi di lavoro
di 4 persone. (di conseguenza è impensabile controllare tutto)
 
Lui ha pareggiato tutto creando un gigantesco commit. Quando mi ha chiesto come
risolvere i conflitti (che erano presenti, questo me lo aspettavo), ho detto
di tenere la versione remota, ovvero quella di sviluppo.
 
Ora mi trovo i due repository apparentemente aggiornati ed identici.
Ho assoluta necessità di conoscere se è realmente così, per evitare di 
committare file, la prossima volta, che sono rimasti alla versione precedente
per qualche arcano motivo.
 
Con "git diff" ho fatto il confronto tra i due repository, ovvero tra il master
in produzione ed il master in sviluppo (che teoricamente ora corrispondono) ma
mi tira fuori un totale di differenze sopratutto nella history, visto che lui
confronta anche quella.
 
Il che è normale, i due repository hanno avuto due sviluppi differenti, 
la history non potrà mai corrispondere (e nemmeno mi interessa)
 
Troppo casino, sono quindi passato ad un più comune "diff", ignorando tutta la
"vendor" di composer (è normale che differisca e non mi interessa) ed anche la
".git" di git, che come scritto prima, non può che essere differente.
 
$ diff -rq produzione/ sviluppo/ -x 'vendor' -x '.git'
Solo in produzione/app/Http/Controllers: UserController.php~
Solo in produzione/app: Order.php~
Solo in produzione/app: Restaurant.php~
Solo in produzione/config: constants.php~
Solo in produzione/config: internal_error_codes.php~
Solo in produzione/resources/views/emails: order-debug.blade.php~
 
Mi rimangono solo questi file temporanei di "vi".
Posso quindi assumere che il mega-merge sia andato a buon fine e che entrambi
i repository (su entrambi sono nel branch "master") abbiano tutti i file
identici.
 
Dico bene ? Altri controlli da fare ?
 
Per non sapere ne leggere ne scrivere, ho rimosso i file in questione:
$ find -name "*~" -type f -delete produzione/
$ diff -rq produzione/ sviluppo/ -x 'vendor' -x '.git'
$
 
nessuna differenza trovata.
 
Per farla breve, ho necessità di capire se i file presenti in "produzione"
siano identici a quelli in "sviluppo" e che non ci siano file mancanti da
qualche parte. Tutto ciò che riguarda git può anche essere differente non
mi interessa. Mi interessa solo sapere che se modifico un file qualunque
ad esempio "produzione/mio/path/file_bello" quel file in origine era 
*identico* a "sviluppo/mio/path/file_bello" e che non sto lavorando su
versioni obsolete.
 
Per le prossime volte, c'è una soluzione migliore per fare il merge tra
il repository di sviluppo e quello in produzione ? Di unire le history non
mi interessa, mi basta avere un gigantesco commit del tipo:
 
"Messa in produzione v2.0", sapendo che quel commit li contiene tutto ciò
che è stato fatto in sviluppo negli ultimi mesi.
 
Tnx


checkout di "produzione"
checkout di "sviluppo"
cancelli _tutti_ i file in "produzione" (non .git ovviamente)
copi i file da "sviluppo" a "produzione"
commit di "produzione"
=> "produzione" identico a "sviluppo"
 
Ciao Jack

 => "produzione" identico a "sviluppo"
 
Vero, avevo pensato di fare anche così, ma credevo che la soluzione
con un merge nativo di GIT fosse più "elegante".
 
Dato che ora ho già sistemato il repository, la verifica fatta come scritto
sopra, può essere considerata veritiera ?