Controllo del codice sorgente: ruoli e responsabilità: best practice

10

Sto cercando le "Best Practices" relative ai ruoli e alle responsabilità, in particolare chi è responsabile per le fusioni dai rami di sviluppo a trunk (o main). Fondamentalmente sto cercando munizioni per aiutare la mia causa.

Lasciami descrivere cosa sto affrontando. Sono lo sviluppatore principale (proprietario) di una particolare applicazione. La nostra azienda si è recentemente trasferita da VSS (dove ero l'amministratore del database VSS in cui è stata archiviata la mia applicazione) a TFS (dove ho solo le autorizzazioni sui rami di sviluppo creati dal nostro team "operations"). Nei precedenti lavori, ero un amministratore TFS, quindi conosco il mio modo di intendere TFS e MSBuild.

Non ho alcun problema con la strategia di ramificazione e fusione utilizzata (ramo principale, con rami di sviluppo di bug / progetto creati secondo necessità, uniti al main e poi promossi a un ramo di release). I problemi che ho sono:

  1. Non riesco a creare i miei rami. Devo creare un'attività TFS affinché un membro del team "operazioni" possa creare il ramo per me.

  2. Non riesco a unire da Main al mio ramo di sviluppo. Devo creare un'attività TFS per far eseguire l'unione a un membro del team "operazioni", quindi sperare che non "esegua" alcuna modifica ai miei team poiché il "tipo di operatore" può o non può essere uno sviluppatore e ha sicuramente poca o nessuna conoscenza del codice che sta unendo.

  3. Non riesco a unire dallo sviluppo a Principale. Ancora una volta devo creare un task TFS per fare in modo che il "tipo ops" esegua l'unione, sperando che lo faccia correttamente. Quindi devo creare un'altra attività TFS per unirmi di nuovo al mio ramo in modo da poter risolvere qualsiasi problema che si è verificato avendo un'unione non-sviluppatore in Main.

  4. Non riesco a creare o modificare script MSBuild. Ancora una volta devo lavorare con il team "ops", che è nuovo a MSBuild, quindi solo le attività di build più elementari possono essere eseguite. (Dimentica qualsiasi cosa complessa, o proibisci un compito personalizzato).

  5. Non riesco a eseguire uno script MSBuild. Di nuovo solo il team "ops" può farlo.

  6. Per eliminare tutto, tipicamente si tratta di una risorsa "off-shore" che esegue le attività richieste, quindi anche se creo l'attività su (branch / merge / build) al mattino presto, probabilmente non sarà completato fino a quella sera.

Ora non ho alcun problema con il team "operations" che mantiene i rami di rilascio. Come tutto quello che stanno facendo è (fondamentalmente) prendere l'ultima versione da Main e promuoverla nel ramo di rilascio; fino a quando "Main" è stabile e pronto, il ramo di rilascio sarà buono.

La mia opinione è che i lead tecnici (come I) dovrebbero essere responsabili della manutenzione del trunk ("Main") e di qualsiasi fusione da / verso i rami di sviluppo. Il team leader dovrebbe anche avere la possibilità di generare script MS Build per creare e distribuire nell'ambiente di test di integrazione.

Qualcuno può indirizzarmi a un documento sulle best practice che mi aiuterà a dimostrare il mio caso? Tutte le mie ricerche hanno rivelato solo le Best Practices relative alle tecniche di branching e merging, e nessuna menzione dell'OMS dovrebbe essere in grado di eseguire detti branching / merging.

    
posta Michael Chatfield 31.01.2012 - 20:30
fonte

3 risposte

8

La mia visione generale delle migliori pratiche è che ogni membro del team di sviluppo dovrebbe essere in grado di eseguire qualsiasi azione sull'albero presumendo che quelle azioni non facciano come dare il via a un'implementazione di produzione. Nei casi in cui un ramo / tag / repository specifico agisce come una fonte per le distribuzioni automatizzate mettendo in qualche ragionevole controllo il cambiamento o le barriere all'entrata hanno senso, più da errori di mantenimento si limitano a sbagliare la prospettiva rispetto ad un certo angolo di controllo. Vorrei incoraggiare gli sviluppatori a creare filiali e migliorare gli script di compilazione. Troverò dei modi per consentire agli sviluppatori di accedere alla produzione, se necessario. Parte del punto di controllo della sorgente è che si tratta di un'efficace gomma da cancellare di errori: la cosa peggiore che devi fare è eseguire il rollback di un giro o due e staccare quello.

Sfortunatamente questo non sembra l'approccio che hanno preso qui. Per sconfiggere questo penso che devi coprire alcuni angoli:

a) Dimostra che queste politiche sono dannose per lo sviluppo. Registra tutto il tempo che passi in attesa di operazioni per lavorare su qualcosa. Questo da solo dovrebbe vendere una gestione ragionevole sul perché questa è una cattiva politica.

b) Fai amicizia con Ops - forse c'è un motivo per questa politica. Forse questo ragionamento potrebbe essere affrontato in maniera più efficace.

Spero che questo aiuti.

    
risposta data 31.01.2012 - 21:14
fonte
2

Le pratiche che ho visto sono:

  1. Chiunque può creare rami di lavoro a proprio piacimento. Uno sviluppatore deve essere in grado di creare un ramo di funzionalità nel secondo in cui trova che è necessario archiviare il proprio lavoro corrente in corso. Perché vogliono / dovrebbero eseguire il backup alla fine della giornata, vogliono condividerli con un altro membro del team, devono essere protetti dai cambiamenti principali o simili.

  2. Chiunque può fare assolutamente qualsiasi cosa per i rami di sviluppo. Lo sviluppatore deve essere in grado di unirsi dal momento in cui un altro sviluppatore dice loro che qualcosa di cui hanno bisogno è stato integrato in main.

  3. Per unire a main (integrazione), ci sono tre opzioni:

    • Gli sviluppatori lo fanno da soli. Discutono solo i rischi con lo sviluppatore principale e testano le funzionalità in modo appropriato. Ciò implica che qualcuno ha i permessi; se qualcuno infrange le regole, viene semplicemente sgridato e viene ripristinata la modifica sbagliata.
    • Un altro sviluppatore lo fa dopo aver esaminato le modifiche. Richiede ancora che tutti abbiano i permessi per farlo; le regole sono ancora applicate dallo sviluppatore principale.
    • C'è un integratore designato che rivede e si fonde in main. Ma l'integratore fa parte del team e ha bisogno di capire il codice. Su una squadra più piccola sarebbe la stessa persona dell'architetto, più grandi sarebbero separati, ma avrebbero bisogno di cooperare strettamente.
  4. Chiunque prepari una caratteristica dovrebbe adattare lo script di costruzione. Ma non sono sicuro di come funzioni con TFS; nei sistemi che ho usato lo script build era sempre solo un file con versione, quindi gli sviluppatori lo hanno modificato come qualsiasi altro ed è stato integrato insieme a tutto il resto.

  5. Se c'è un integratore designato, di solito si occupano di definire (quale script eseguire) e di iniziare le build. In caso contrario, il responsabile del team lo fa, il membro del team designato lo fa o chiunque ha i permessi e il team guida i delegati che configurano e avviano particolari build caso per caso.

  6. In nessun caso le operazioni sopra indicate richiedono l'operatore al di fuori del team. L'operatore è necessario solo per impostare le autorizzazioni, creare repliche e così.

risposta data 01.02.2012 - 10:54
fonte
2

Non preoccuparti delle "migliori pratiche" (abbi cura di me) questo è un problema di gestione: fondamentalmente non sei in grado di svolgere il tuo lavoro correttamente a causa dei vincoli che ti pongono.

In realtà non importa quale sia la "migliore pratica" - si tratta di un problema semplice e dimostrabile che influirà sulla produttività di te e del tuo team e su questa base devi prenderlo in carico con la tua gestione della linea.

Vedo che brandire un documento di buone pratiche potrebbe essere (ma solo potrebbe ) essere un aiuto nel tentare di persuaderli, ma molto meglio è l'idea che dovrete avere membri del team di sviluppo seduti su le loro mani mentre aspettano qualcuno in un fuso orario diverso per ottenere il loro atto insieme a meno che i processi non siano migliorati / razionalizzati.

E non essere troppo conflittuale - tanto quanto vuoi sapere perché esistono le restrizioni, qual è la giustificazione ...

    
risposta data 01.02.2012 - 13:55
fonte

Leggi altre domande sui tag