The Dark Side of Hardware Upgrade Forum

...bringing out the worst in you since 2003...
Oggi è gio ott 01, 2026 11:36 pm

Tutti gli orari sono UTC +1 ora


-->
-->

Apri un nuovo argomento Rispondi all’argomento  [ 11 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: Versioning del software: HOW TO
MessaggioInviato: sab gen 14, 2012 12:21 pm 
Schiavo
Avatar utente
Iscritto il: mer lug 14, 2010 7:00 pm
Messaggi: 1397
Come da titolo: aziendalmente o anche in privato qualche sistema di versioning del software usate? CVS, SVN, GIT, Mercurial, Stocazzo?

Solitamente come siete soliti usarlo in base al progetto o prodotto che dovete sviluppare?

TRUNK come mainline con il codice sempre più aggiornato che sia "stable" o "unstable"? Tag per le release e Branch per il bug fixing delle stesse?

Oppure "Branchate" anche per lo sviluppo di funzionalità aggiuntive al software già rilasciato?

Thanks
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Versioning del software: HOW TO
MessaggioInviato: sab gen 14, 2012 12:39 pm 
Schiavo
Avatar utente
Iscritto il: gio lug 22, 2010 3:58 pm
Messaggi: 8404
noi git su github

più repo, una per ogni parte del progetto (c'è la repo per il server, per il client desktop, per il client android)

teniamo il master come "buono", per l'aggiunta di funzionalità branchiamo, sviluppiamo, testiamo, e poi rimergiamo nel master.



(non siamo un'azienda vera eh (anche se il progetto poi verrà preso da un'azienda completamente aggratis :pua: ))
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Versioning del software: HOW TO
MessaggioInviato: sab gen 14, 2012 12:49 pm 
Schiavo
Avatar utente
Iscritto il: ven feb 03, 2006 10:50 pm
Messaggi: 5164
Località: Reggio Calabria --> London
toyo @ ha scritto:
noi git su github

più repo, una per ogni parte del progetto (c'è la repo per il server, per il client desktop, per il client android)

teniamo il master come "buono", per l'aggiunta di funzionalità branchiamo, sviluppiamo, testiamo, e poi rimergiamo nel master.

:cereal:

Cita:
(non siamo un'azienda vera eh (anche se il progetto poi verrà preso da un'azienda completamente aggratis :pua: ))

ah ecco. :better:

Noi cmq SVN per tutta l'azienda con innumerevoli progetti e usiamo il trunk come trunk ovviamente, per ogni release facciamo un branch su cui fare bug-fixing only e per ogni versione usiamo i tag.
_________________
:scongiuri:
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Versioning del software: HOW TO
MessaggioInviato: sab gen 14, 2012 3:55 pm 
Schiavo
Avatar utente
Iscritto il: gio lug 22, 2010 3:58 pm
Messaggi: 8404
tigercoso non cerealare e imparami le best practices :sisi:
_________________
Working Vibes - L'Informazione | Controllo delle masse | Citizen Berlusconi | Storia del periodo berlusconiano | La mafia in politica | L'Ombra Oscura Della P2 | Promemoria | Borsellino: Lezione sulla mafia | Videocracy | Draquila
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Versioning del software: HOW TO
MessaggioInviato: sab gen 14, 2012 5:09 pm 
Schiavo
Avatar utente
Iscritto il: mer lug 14, 2010 7:00 pm
Messaggi: 1397
toyo @ ha scritto:
tigercoso non cerealare e imparami le best practices :sisi:


Lasciate stare, buttate tutto su Dropbox.

:trollface:
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Versioning del software: HOW TO
MessaggioInviato: sab gen 14, 2012 5:11 pm 
Schiavo
Avatar utente
Iscritto il: gio lug 15, 2010 12:37 am
Messaggi: 3489
Sgurbat @ ha scritto:
toyo @ ha scritto:
tigercoso non cerealare e imparami le best practices :sisi:


Lasciate stare, buttate tutto


fixed ;)
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Versioning del software: HOW TO
MessaggioInviato: sab gen 14, 2012 5:19 pm 
Schiavo
Avatar utente
Iscritto il: ven feb 03, 2006 10:50 pm
Messaggi: 5164
Località: Reggio Calabria --> London
toyo @ ha scritto:
tigercoso non cerealare e imparami le best practices :sisi:

quello che facciamo da me e da sgurbacoso e' la cosa migliore.
Se il trunk viene usato per fare sviluppo attivo come facciamo noi, e' possibile lavorare in contemporanea sia per finire una release sul branch appena fatto, che per le nuove features direttamente sul trunk.
Per gruppi di lavoro non piccoli e' assolutamente indispensabile.
Invece lavorare parallelamente nel tuo caso e' impossibile dato che il trunk deve essere sempre stabile e non e' possibile lavorare su due branch per volta pena ATROCI dolori anali durante il merging.
In alcuni casi e' ovviamente necessario creare un branch che non sia direttamente collegato ad una release anche nel nostro workflow lavorativo, ma e' *estremamente* raro ed e' usato solo per delle feature "sperimentali" o che comunque richiedono molto lavoro e sono completamente slegate dal normale ciclo di release.
_________________
:scongiuri:
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Versioning del software: HOW TO
MessaggioInviato: dom gen 15, 2012 7:20 am 
Schiavo
Avatar utente
Iscritto il: sab lug 17, 2010 11:22 am
Messaggi: 3498
Località: London SE1
Il progetto piu' complesso che seguo ha repository su perforce.
E' un progetto multi gruppo, nel senso che ci sono piu' gruppi di lavoro che lavorano contemporaneamente per lo stesso sofwtare, con deadline diverse.
Esistono 2 Trunk sempre validi e potenzialmente rilasciabili in produzione in qualsiasi istante, uno per la parte server Java + script di Database, e uno per la parte Client GUI C#.
e infatti il software viene rilasciato in produzione con cadenza mensile.
All'inizio di ogni ciclo di ciascuno dei gruppi di lavoro, evento che puo' capitare capitare (e talvolta capita) in modo asincrono ai rilasci in produzione, viene creato dal trunk (dai 2 trunk, ma da qui in poi come se fosse uno solo) un branch privato per il gruppo, che lavorera' su questo branch.
Al termine del ciclo di lavoro, di durata anch'esso tipicamente mensile viene effettuato il merge del branch nel trunk.
Nella realizzazione di sotto-progetti parecchio complessi alcuni gruppi di lavoro hanno anche lavorato per 3 mesi, non quindi strettamente un mese solo.

Quando mancano 2 settimane dal rilascio in produzione, in maniera appunto asincrona con quello che i gruppi di lavoro fanno, viene preso un nuovo branch dal trunk che sara' il codice "frozen" per il rilascio in questione.
Su questo codice verranno effettuati i test pre-rilascio.
Una prima fase di regression test effettuata dai test server (2-3 giorni),
seguito da una seconda fase di test effettuata dal gruppo Quality Assurance (tipicamente 1 settimana)
poi una terza fase di User Acceptance Test effettuata dai clienti, di 3-4 giorni.
Nel frattempo il gruppo avra' gia' preso un nuovo branch ed avra' gia' iniziato un ciclo. Durante le prime fasi del nuovo ciclo puo' capitare che i test del ciclo precedente elevino un errore e qualcuno del gruppo dovra' switchare sul branch pre-rilascio per correggerli, e poi riportare le correzioni sia sul trunk che sul branch su cui sta' lavorando, e notificare gli altri gruppi di lavoro di integrare tale integrazione dal trunk nei loro rispettivi branch di lavoro.
Ogni gruppo di lavoro e' responsabile per la scrittura dei test automatici (Unit test + Functional Test) relativi al codice che hanno appena scritto. Tali test vengono considerati parte del codice, la certificazione che il codice che e' stato scritto esegue effetivamente le operazioni richieste.
Ogni volta che viene effettuato un commit su qualsiasi branch o sul trunk, tutti i test vengono eseguiti e se c'e' un problema da qualche parte il gruppo (o i gruppi nel caso del trunk) viene notificato relativamente al problema, nel giro di 10 -20 minuti.
Quando il gruppo di Quality Assurance termina la settimana di test manuali, inizia a scrivere i test automatici per coprire i nuovi test che ha appena dovuto effettuare, che andranno ad aggiungersi ai regression test automatici che vengono effettuati dalle macchine all'inizio ciclo di test

Questo relativo al progetto piu' complesso che seguo, che e' di circa 50-60 persone, 4-6 sottogruppi di lavoro a seconda del momento.
Gli altri progetti che seguo sono invece tipicamente costruiti da un unico singolo gruppo di lavoro, e quindi di organizzazione piu' semplice.
Non riesco ad immaginare problemi piu' complessi non coperti, che richiedano quindi un'organizzazione piu' complessa.
Forse per la stesura di grossi framework o sistemi operativi potrebbe essere necessario qualche passo in piu', dato che e' necessario il mantenimento di vecchie versioni di software che invece a noi non e' richiesto, ma le modifiche necessarie al processo non dovrebbero essere troppo invasive.
_________________
In regime di libera concorrenza esiste una sola regola per l'imprenditore: fare il miglior prodotto possibile al minor costo possibile, pagando i massimi stipendi possibili. (Henry Ford)
Top
 Profilo E-mail Non connesso  
 
 Oggetto del messaggio: Re: Versioning del software: HOW TO
MessaggioInviato: dom gen 15, 2012 10:15 am 
Schiavo
Avatar utente
Iscritto il: mer lug 14, 2010 7:00 pm
Messaggi: 1397
gugoXX @ ha scritto:
Il progetto piu' complesso che seguo ha repository su perforce.
E' un progetto multi gruppo, nel senso che ci sono piu' gruppi di lavoro che lavorano contemporaneamente per lo stesso sofwtare, con deadline diverse.
Esistono 2 Trunk sempre validi e potenzialmente rilasciabili in produzione in qualsiasi istante, uno per la parte server Java + script di Database, e uno per la parte Client GUI C#.
e infatti il software viene rilasciato in produzione con cadenza mensile.
All'inizio di ogni ciclo di ciascuno dei gruppi di lavoro, evento che puo' capitare capitare (e talvolta capita) in modo asincrono ai rilasci in produzione, viene creato dal trunk (dai 2 trunk, ma da qui in poi come se fosse uno solo) un branch privato per il gruppo, che lavorera' su questo branch.
Al termine del ciclo di lavoro, di durata anch'esso tipicamente mensile viene effettuato il merge del branch nel trunk.
Nella realizzazione di sotto-progetti parecchio complessi alcuni gruppi di lavoro hanno anche lavorato per 3 mesi, non quindi strettamente un mese solo.

Quando mancano 2 settimane dal rilascio in produzione, in maniera appunto asincrona con quello che i gruppi di lavoro fanno, viene preso un nuovo branch dal trunk che sara' il codice "frozen" per il rilascio in questione.
Su questo codice verranno effettuati i test pre-rilascio.
Una prima fase di regression test effettuata dai test server (2-3 giorni),
seguito da una seconda fase di test effettuata dal gruppo Quality Assurance (tipicamente 1 settimana)
poi una terza fase di User Acceptance Test effettuata dai clienti, di 3-4 giorni.
Nel frattempo il gruppo avra' gia' preso un nuovo branch ed avra' gia' iniziato un ciclo. Durante le prime fasi del nuovo ciclo puo' capitare che i test del ciclo precedente elevino un errore e qualcuno del gruppo dovra' switchare sul branch pre-rilascio per correggerli, e poi riportare le correzioni sia sul trunk che sul branch su cui sta' lavorando, e notificare gli altri gruppi di lavoro di integrare tale integrazione dal trunk nei loro rispettivi branch di lavoro.
Ogni gruppo di lavoro e' responsabile per la scrittura dei test automatici (Unit test + Functional Test) relativi al codice che hanno appena scritto. Tali test vengono considerati parte del codice, la certificazione che il codice che e' stato scritto esegue effetivamente le operazioni richieste.
Ogni volta che viene effettuato un commit su qualsiasi branch o sul trunk, tutti i test vengono eseguiti e se c'e' un problema da qualche parte il gruppo (o i gruppi nel caso del trunk) viene notificato relativamente al problema, nel giro di 10 -20 minuti.
Quando il gruppo di Quality Assurance termina la settimana di test manuali, inizia a scrivere i test automatici per coprire i nuovi test che ha appena dovuto effettuare, che andranno ad aggiungersi ai regression test automatici che vengono effettuati dalle macchine all'inizio ciclo di test

Questo relativo al progetto piu' complesso che seguo, che e' di circa 50-60 persone, 4-6 sottogruppi di lavoro a seconda del momento.
Gli altri progetti che seguo sono invece tipicamente costruiti da un unico singolo gruppo di lavoro, e quindi di organizzazione piu' semplice.
Non riesco ad immaginare problemi piu' complessi non coperti, che richiedano quindi un'organizzazione piu' complessa.
Forse per la stesura di grossi framework o sistemi operativi potrebbe essere necessario qualche passo in piu', dato che e' necessario il mantenimento di vecchie versioni di software che invece a noi non e' richiesto, ma le modifiche necessarie al processo non dovrebbero essere troppo invasive.


Ti ringrazio, esempio notevole.

Tuttavia per noi in azienda si tratta di progetti (anche quelli più grandi) molto più piccoli di quello da te esposto quindi credo, infine, di aver già individuato il flusso più appropriato per gestire il software su CVS/SVN.

Un'altra cosa: come vi comportate con il versioning dello schema del o dei DB? Mi sono accorto che questo può essere un problema se non integrato nello stesso modulo sul repository.
Lavoro da solo o in team su progetti Web/Server in Java (Spring framework) e solitamente usiamo MyBatis (ex IBatis) come data mapper, ho visto che ci sono le "migrations" come in Ruby on Rails che permetterebbero di tenere "versionizzati" anche i file di update (la singola migration) dello schema.

Esperienza vostra?

Thanks.
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Versioning del software: HOW TO
MessaggioInviato: dom gen 15, 2012 10:38 am 
Schiavo
Avatar utente
Iscritto il: ven feb 03, 2006 10:50 pm
Messaggi: 5164
Località: Reggio Calabria --> London
da noi usiamo liquibase per mettere sul repository tutte le informazioni relative allo schema del DB
_________________
:scongiuri:
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: Versioning del software: HOW TO
MessaggioInviato: dom gen 15, 2012 11:01 am 
Schiavo
Avatar utente
Iscritto il: lun lug 19, 2010 6:08 pm
Messaggi: 7370
Località: Smileland (già Crucconia)
bzr

Woks like a charm :megusta:
_________________
Se nel forum sono attivo vuol dire che al lavoro sto facendo documentazione.
Top
 Profilo E-mail Non connesso  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 11 messaggi ] 
-->

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Vai a:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it