2012-04-27 12 views
7

Uno dei motivi per l'utilizzo di scaffali TFS è per la revisione del codice che non sono d'accordo, ma questa è la pratica seguita nel mio progetto corrente. Il motivo per cui vedo usare gli scaffali TFS non è una buona idea per la revisione del codice:TFS Librerie e revisione del codice

  • Le mensole non hanno un ordinamento naturale come i set di modifiche hanno. Questo può causare numerosi conflitti di unione.
  • Se sviluppatore non può check-in codice fino a quando non viene recensione, si mette una dipendenza dal revisore, e se il recensore non fa revisione entro un breve periodo queste shelvesets possono interferire con altri compiti.
  • La collaborazione con altri sviluppatori diventa dolorosa dato che ora è necessario passare scaffali in giro anziché codice di accesso che può causare conflitti di fusione in futuro.

Qualcuno mi può fornire alcune indicazioni che possono essere sia per o contro approccio TFS shelveset per le recensioni così o ho convinto circa l'approccio o posso presentare un caso per non usare questo approccio?

+0

Hai guardato con ramificazione e la fusione invece di cambiamenti accantonato? – cordialgerm

+0

@pickles, branching e merging sarebbero overkill solo a scopo di revisione. La ramificazione e la fusione vengono principalmente eseguite per supportare la versione del prodotto, i team di sviluppo ma non ho sentito parlare di ramificazioni per la revisione del codice. – Chandermani

+0

@Chandermani è stato discusso nel corso del Summit ALM 2011, c'erano team che utilizzavano rami per-Developer sui rami del team su feature branch. Sembrava eccessivo, ma i loro progetti complessi ne hanno davvero beneficiato. integrazione inversa bi-giornaliera bi-giornaliera fino al ramo sviluppatori per mantenere l'unione-abilità. – jessehouwing

risposta

11

Penso che Microsoft non è d'accordo con voi molto su questo, come la nuova funzionalità di Code Review in TFS 11 e Visual Studio 11 è costruito intorno shelvesets. Il vero problema riguarda probabilmente il modo in cui il team opera e il modo in cui i compiti vengono suddivisi in tutto il prodotto.

Se le attività sono state suddivise in modo da avere poche dipendenze e in modo che le persone che lavorano nella stessa area lavorino a stretto contatto, non si avranno problemi di unione e controllo. Se le attività richiedono più tempo, allora prendi regolarmente l'ultima versione dal ramo di sviluppo in modo da essere sempre aggiornato.

Se si vede che il Revisore è troppo lento e che i ripiani sono in coda, tutti in attesa di essere rivisti, allora è qui che possono verificarsi altri problemi reali. Quando un compito è finito, dovrebbe essere riesaminato il prima possibile e non gironzolare in attesa di essere riesaminato. Se le recensioni impiegano più di 24 ore, questo può diventare un problema reale. Potresti alleviarlo eseguendo una peer review da qualcun altro o ottenendo più revisori nel team.

Se tutto il resto fallisce, è possibile effettuare revisioni post-mortem (rivedere i changeset invece degli scaffali), TFS 11 e Visual Studio 11 supportano anche questo scenario.

La mia preferenza personale è quella di fidarsi degli sviluppatori dei miei team e pertanto effettuiamo per lo più revisioni post-controllo. Se abbiamo membri nuovi o molto giovani, allora farò in modo che uno sviluppatore più anziano sia disponibile a fare una prima revisione prima del check-in.

Consulta anche:

+1

Spot on !! Ho affrontato di volta in volta il problema con gli shelve impostati su una larghezza di banda limitata del revisore. C'è un tempo in cui i membri del team lavorano su funzionalità correlate e poi devono passare i set di scaffali. Posso illustrare più istanze in cui questo meccanismo fallirebbe. Penso che dovrei scrivere un post sul blog su questo :) Solo il modo in cui vedo questo può avere successo è se la revisione avviene entro un periodo di tempo limitato. – Chandermani

+1

Si potrebbe anche prendere in considerazione l'uso di una build Checked Gated, se necessario, combinata con l'analisi del codice e l'esecuzione di tutti i test unitari per ottenere una qualità minima per il codice archiviato. In questo modo potresti non dover rivedere ogni check-in individualmente. – jessehouwing

+0

Esistono 2 componenti aggiuntivi del processo di processo open source per tfs che offrono un'esperienza di revisione simile a vs2010. Controlla la presentazione per i link a loro. – jessehouwing

2

Non è tanto il racket che è il problema. Se sei bloccato in attesa di un peer per rivedere il tuo codice, il modo in cui viene memorizzato il codice non farà molta differenza. Detto questo, il magazzino viene salvato al sicuro dal tuo computer in una posizione accessibile dai revisori, quindi penso che sia una buona soluzione come qualsiasi. L'alternativa sarebbe quella di effettuare il check-in, passare attorno al changeset e ripristinare se non supera il raduno o passa attorno a una zip? Entrambi hanno degli svantaggi significativi.

Quindi, è la vera domanda se dovresti aver richiesto o meno le revisioni del codice prima del check-in?

+0

Perché il codice non può essere rivisto dopo il check-in. Se posso assicurarmi che il codice non si integri con alcun flusso esistente, dovrei essere in grado di effettuare il check-in e dare una recensione. – Chandermani

+1

Quello che non capisco è che a quanto pare si preoccupa molto di unire i problemi, quindi se si esegue la revisione dopo il check-in, molto probabilmente aumenterà il conteggio del changeset di una determinata attività. Più changeset equivale a unione più difficile ... – Nock

6

Le mensole non hanno un ordinamento naturale come i set di modifiche hanno. Questo può portare a molti conflitti di unione.

Non riesco a vedere il tuo punto qui, che cos'è un "ordinamento naturale" per te? La cronologia dei changeset non segue un determinato ordine quando inizi a lavorare in una squadra.

Se sviluppatore non può check-in codice fino a che non viene recensione, mette una dipendenza sul recensore e se il revisore non fa recensione all'interno di una breve durata queste shelvesets possono interferire con altri compiti.

Di nuovo, si ha la stessa situazione con lo "sviluppo regolare delle attività" che non è perché si avvia un'attività A prima di un'attività B che si esegue il check-in dell'attività A prima di B (a meno che B non dipenda da A, ma non è questo il punto qui). Considerare la revisione come il passaggio finale del flusso di lavoro dello sviluppo delle attività. La dipendenza dal revisore rende le cose un po 'più complesse, ma è nell'interesse di una build stabile e di un codice conforme agli standard dell'azienda.

La collaborazione con altri sviluppatori diventa dolore come ora è necessario passare shelveset intorno piuttosto che checkin codice, che può ancora causare unire conflitti in futuro.

Sai qualcosa di più semplice dei set di scaffali?Preferisci inviare un'e-mail con il codice modificato in un file zip? Gli scaffali sono di gran lunga il modo più semplice per condividere il codice tra gli sviluppatori quando non si vuole influenzare il referenziale. Anche in questo caso, non riesco a vedere il problema dei conflitti di fusione che menzioni.

Ecco alcuni consigli:

  1. Quando qualcuno sta ottenendo indietro lo shelveset di un altro dev, dire Dev Un creato uno shelveset e Dev B vuole di rivederlo, assicurarsi Dev B ha un separato pulito e spazio di lavoro dedicato a unshelve. Non vuoi sgomberare le cose nel normale spazio di lavoro "dev". Uno spazio di lavoro dedicato per la revisione del codice facilita il problema di conflitto di merge che hai menzionato.

  2. In teoria, tutto deve essere rivisto prima di essere integrato nel ramo di destinazione. Detto questo, è più difficile in realtà farlo, quindi non mirare a fare qualcosa di perfetto se la tua squadra non ha l'abitudine di tali processi. Un esperto senior che conosce bene l'applicazione a cui sta lavorando può essere autorizzato a fare il check-in prima di rivederlo. È tutta una questione di compromesso, in questo caso ottieni flessibilità e un'esperienza di sviluppo più fluida, ma i tuoi referenti possono soffrire in termini di qualità e stabilità. Non c'è un vero vincitore qui, è una tua scelta basata su ciò che è importante per te.

  3. Non utilizzare le filiali per la revisione del codice.

  4. Sono d'accordo che l'esperienza di revisione del codice tramite scaffale è alquanto incompleta in VS/TFS, ma è molto meglio per le alternative. Microsoft si è resa conto che avrebbero potuto fare di meglio in questo senso e si è tradotto nei miglioramenti apportati a VS11/TFS11. Con la versione successiva hai una esperienza di revisione del codice true, ancora basata su shelfet ma con un sistema di comunicazione più completo tra gli attori. Questo miglioramento è stato apportato nell'esperienza "Il mio lavoro" e ora le cose sono più agevoli. Fai un tentativo di tfspreview.com e VS11 beta o leggi alcuni post del blog (Brian Harry) per avere maggiori informazioni. Ecco a link sarete interessati.

+1

Grazie per la spiegazione dettagliata. Credo ancora che il check-in sia la strada giusta da fare. Finché il check-in può essere eseguito senza integrarsi in un flusso di lavoro, è molto meglio che usare la mensola. Gli scaffali sono buoni quando quello che sto lavorando su qualcosa che non ha dipendenze con altri sviluppatori. – Chandermani

Problemi correlati