Lavoro di Gruppo

Mi sto chiedendo se c’è qualche italiano che ha fatto uso di strumenti come GIT o direttametne github per coordinare un progetto di media complessitá insieme ad altre “due o tre teste”.

Ammetto di essere a digiuno di "lavoro di gruppo" ma per due o tre progetti che ho per le mani non posso e non ha senso fare "tutto da solo".

Pero vorrei iniziare con qualcosa di gia BEN organizzato.

Sugggerimenti e commenti sono piu che benvenuti

noi in ufficio usiamo git, e mediamente lavoriamo in team di 12 persone a progetto, ma niente github: teniamo tutto suoi nostri server interni di devel.

Eclipse + xdebug + subversion …siamo in 10…Git mai usato.SVN ha compatibilità con molti client.

Sto per iniziare un progetto con altre persone ed useremo github. Git è supportato da Netbeans, che tra l’altro reputo un ottimo editor per php. Colgo l’occasione per dire che netbeans nella sua ultima versione mostra il versioning di tutti i files che stai editando, mantenendo le modifiche fatte negli ultimi giorni. Ad ora mi sta salvando parecchio. Git dovrebbe essere nato per gestire meglio la concorrenza. Io non ho mai usato subversion, e git mi è sempre sembrato un ottimo prodotto. Basta guardare la rapidità con cui è possibile creare un repository con git:


$ git init

Linus Torvald ha fatto un ottimo lavoro direi =).

io ho usato entrambi e la gestione dei merge e del branching di git è anni luce sopra quella di subversion.

se sono costretto ad usare svn, va bene, ma se posso scegliere sempre e comunque git.

Ciao io in uffico uso svn ma so che GIT è l’evoluzione.

Personalmente uso il versioning anche sui file personali in locale, mi salva parecchio poter modificare senza paura tranquillo di poter ripristinare all’ultima release stabile.

Questo si può fare anche su GIT… cioè creare un repository in locale su una cartella senza configurare websever?

su git lavori su un repository locale, i commit pertanto li fai sulla tua stessa macchina.

Poi, se vuoi e hai anche una versione su server del suddetto repository, puoi allinearli quando vuoi facendo un push dei branch che ti interessano verso il repository remoto (solitamente noto come origin).

il più ovvio vantaggio di questo approccio è che ogni utente ha una replica del repository remoto, pertanto se succede qualcosa al repository remoto si può continuare a lavorare come se nulla fosse ed è possibile ripristinare lo stesso da uno dei repository locali degli utenti, operando poi i vari merge in maniera tale da riallineare il tutto tra tutti.

E’ anni luce sopra svn.

mi hai incuriosito…ci darò un occhio…GIT

In verità per il lavoro di gruppo ci sarebbe da aprire una parentesi enorme. Io sto iniziando ad usare Scrum. Quindi Metodi Agili. Tecnica del pomodoro, XP, Kanban. Continuos Integration e così via. E’ un mondo fantastico che serve molto a “salvare” la vita di noi programmatori. Gestire meglio il team, il cliente. Io e degli altri ragazzi abbiamo deciso di investire i prossimi mesi in un grande progetto. Con vostro grande dispiacere useremo Symfony2. Però useremo tecniche come il TDD, il code coverage, … Insomma … sono certo che impareremo un sacco di cose sul lavoro di squadra, e sugli strumenti che ci sono per gestirlo.

non volermene sensorario, ma onestamente a volte ho la sensazione che i tuoi post siano un pò troppo autocelebrativi.

sono contento per te che inizi ora ad approcciare nuove metodologie di lavoro, ma non vedo in che modo il tuo post contribuisca alla conversazione.

in bocca al lupo col tuo progetto comunque :D

Noi, in azienda usiamo dropbox, che è una vera figata.

Sostanzialmente ognuno dei programmatori ha una cartella sincronizzata sul proprio pc con quella di tutti gli altri.

Quindi tutti lavoriamo in locale, ottenendo così delle belle performance. Ed il salvataggio viene replicato nel giro di 1 secondo.

L’abbiamo usato anche per delle collaborazioni remote e i file vengono sincronizzati automaticamente in meno di 10 secondi.

Possiamo così lavorare automaticamente sia da casa che dall’ufficio. E ha anche un piccolo versioning per salvarci da salvataggi errati.

Poi un bel giorno è arrivato l’addetto alla sicurezza iso27000 e ha detto che è meglio non usare programmi che facciano uso di cloud computing in azienda.

E così siamo alla ricerca di un repository che possa funzionare in intranet, ma che sia comodo come dropbox.

Abbiamo provato SVN, ma lo troviamo scomodo. Ogni volta dobbiamo ricordarci di dirgli: invia la modifica agli altri.

E gli altri devono dire, sincronizza la cartella. Non è automatico.

Poi se ad esempio sposti una cartella, non puoi usare cut/paste di windows, ma devi usare i comandi dedicati.

Dropbox viceversa è molto più user friendly.

Secondo voi qual’è il miglior repository, che si avvicini alle nostre esigenze?

Dropbox serve per avere cartelle condivise ma non gestisce il versioning.

Sono due cose completamente diverse.

Dopbox e pratico per scambiare i file… pero non sono sicuro cosa accade se due utenti editano lo steso documento in dropbox…

per esempio… il primo utente fa delle modifice e salva il file… questo file viene sincronizato a tutti… .pero l’altro utente ha gia aperto lo stesso file da prima e ha il vecchio contenuto nel editor… fa le sue modifice e salva il file… il file viene automaticamente sincronizato a tutti… pero le modifice del primo utente vengono smarite.

Ed e perquesto che SVN o GIT sono utili perche ti fano nottare che il file che vuoi mandare nel ripositorio e statto modificato nel fratempo… e ti da l’opzione di decidere cosa vuoi fare… usare la copia fata nel fratempo, usare la tua copia oppute editralo e addatare entrambi le modificazioni.

GIT e molto piu avanzato e come e gia statto detto… ogni utente ha il completo ripositorio locale… SVN usa un ripositorio generale che se viene smaritio si e perso tutto… questo non puo succedere con GIT.

Ce l’ha, ce l’ha.

Infatti ho precisato un mini revisioning.

Se clicchi col tasto dx, vedrai la voce Recently Changed Files in cui visionare le versioni precedenti dello stesso file.

E’ ovvio che non sia potente come SVN, lo capisco. E quindi capisco che dovrò cercare un programma più potente.

Però in fatto di usabilità non ho trovato ancora niente di altrettanto comodo.

(automatico: come salvo, la modifica arriva anche agli altri senza doversi ricordare di dare l’esplicito comando ogni volta)

Probabilmente dato che noi siamo 4 gatti, non sentiamo ancora questa esigenza. Ognuno lavora su file differenti allo stesso progetto, e quelle poche volte che ci capita, è l’editor che ci avvisa: “ho notato una nuova versione del file salvata, che vuoi fare? La carichi o la sovrascrivi”

Da quello che dite mi pare che GIT sia meglio di SVN e penso che lo proveremo.

Ma voi quando lavorate come fate?

Lavorate ad esempio in locale tutto il giorno e a fine giornata dite al repository di sincronizzarsi o come?

il vantaggio di lavorare con svn o git è anche quello di avere branch.

metti che stai lavorando ad una nuova feature per un progetto, apri un branch a riguardo sulla quale lavori.

se arriva un ticket di un bug fix importantissimo da effettuare sul trunk ti basta spostarti di nuovo di branch, fare le correzioni che servono per poi tornare sull’altro branch di sviluppo senza colpo ferire.

ad ogni modo noi lavoriamo ognuno nella sua versione locale, con il repository settato sul branch della milestone sulla quale stiamo lavorando.

Ogni commit che facciamo in automatico genera una nuova build nell’ambiente di devel della intranet, nel quale i tester testano.

Quando ci sono abbastanza modifiche e c’è bisogno di testare realmente le cose viene fatta una build dell’attuale ambiente di devel in collaudo, che è una replica fedele al 100% dell’ambiente di produzione.

quando tutti gli obbiettivi della milestone sono stati raggiunti e tutto è stato testato a pieno collaudo viene spostato in produzione.

noi utilizziamo inoltre redmine per gestire ticket e milestone.

per i bugfix invece utilizziamo un altro ambiente definito maintanance che è fuori dalle milestone.

Per tanto se si verifica un bug importante si committa su maintanance, che viene testato e poi portato in devel.

ovviamente maintanance deve essere sempre allineato con il trunk.

io utilizzo assembla.com per la gestione dei progetti ed è il più completo che abbia mai provato, ogni spazio che crei ha: repository svn/git/mercurial, wiki, ticketing integrato con i commit del VCS, visualizzazione dei ticket tramite Kanban board, Wallet, milestone, spazio per allegare file, chat, standup, e altro.

versione free base, oltre a quella premium

http://www.assembla.com/features

Per quanto riguarda GIT vs SVN:

  • svn solo dalla release 1.7 permette di avere una sola cartella .svn nella root del progetto (tutte quelle cartelle .svn le odio)

  • svn devi prima creare un repository vuoto poi importare i file (se non è cambiato con le ultime release), mentre git ha una sola cartella .git e crei progetto dalla cartella con dentro i file.

git (forse anche svn) hanno dei meccanismi di trigger per cui quando avviene un certo evento viene eseguita una certa operazione (ad esempio il push, cioè l’invio delle modifiche effettuare sul repository server).

GIT è nato per avere più repository distribuiti e gestirli in modo semplice (posso avere anche un solo repository locale), mentre SVN è più adatto quando si ha un solo repository centrale (soluzione molto poco flessibile per mia esperienza).

concordo con nickcv: "se sono costretto ad usare svn, va bene, ma se posso scegliere sempre e comunque git. "

oddio questa è una delle cose che meno sopporto pure io… dover ogni volta fare un export per avere il progetto pulito è una rottura di scatole epocale.

per non parlare poi del fatto che svn ogni volta che fai un commit replica tutti i file, compresi quelli non modificati, mentre git si limita ad usare link simbolici verso gli stessi, riducendo in maniera drastica le dimensioni del repository (almeno che non sia cambiato anche questo nelle ultime versioni di svn)

Comunque markux assembla sembra molto carino… hanno anche pacchetti per l’installazione sul tuo server o devi per forza utilizzare il loro servizio sul loro server?

in effettti c’era una pagina di richiesta prezzo per avere il software da installare in locale, ora non la trovo più ed ho vissto che c’è questa opzione

http://private.assembla.com/

altrimenti le migliori alternative opensource sono:

http://www.mantisbt.org/wiki/doku.php/mantisbt:features

http://trac.edgewall.org/

http://www.redmine.org/