Questi post sembrano correlati, ma il mio cervello sta iniziando a sciogliersi, provando a riflettere su questo: P
Il mio datore di lavoro ha appena iniziato a utilizzare il controllo del codice sorgente, principalmente perché prima che assumessero più sviluppatori, il "repository" era il disco rigido dello sviluppatore solitario, che lavora principalmente da casa. Tutto il codice .NET che aveva scritto è stato verificato in massa , e ci sono molte funzionalità duplicate (leggi: copia-incolla). In questo momento, il nostro sistema SCM è un backup glorificato.
Vorrei inserire parte del codice duplicato nelle librerie condivise. Lascio da solo il repository originale in modo da non rompere nulla: possiamo spostare e / o refactificare il codice esistente come e quando necessario. Quindi ho creato un repository solo per il nuovo codice, comprese le librerie.
Il mio problema ruota attorno al controllo delle versioni delle librerie senza farci mirare in un processo eccessivo: avendo riconosciuto che abbiamo bisogno di un approccio più coerente, con più sviluppatori che scrivono tutti codice molto simile, la gestione e gli altri sviluppatori sono aperti a riorganizzare le cose, ma probabilmente non lo farà andare bene se la soluzione inizia a influire sulla produttività.
La soluzione ideale nella mia mente ossessiva è quella di costruire le librerie separatamente, con ogni progetto dipendente costruito contro versioni deliberatamente scelte e compatibili. In questo modo, sappiamo esattamente quali client dispongono di quali versioni di quali librerie, possono riprodurre in modo più affidabile i bug, mantenere rami di rilascio indipendenti per prodotti e librerie e non interrompere i progetti reciproci quando cambiano il codice condiviso.
Questo rende comunque complicato l'aggiornamento delle librerie, in particolare per lo sviluppatore che lavora da casa. Mi aspetto che le librerie cambino rapidamente, almeno inizialmente mentre (finalmente) mettiamo insieme i bit comuni. È del tutto possibile che stia pensando troppo a tutto ciò e staremmo bene solo costruendo tutto contro gli impegni della libreria più recenti, ma mi piacerebbe almeno essere preparato per il giorno in cui decidiamo che alcuni componenti devono essere sottoposti a versione indipendente e distribuito. Il fatto che alcune librerie debbano essere installate nel GAC rende il controllo delle versioni particolarmente importante.
Quindi la mia domanda è: cosa mi sto perdendo? Mi sento come se avessi risolto una soluzione e ora sto cercando di trovare variazioni che rendano le modifiche più fluide. Che tipo di strategie hai usato per risolvere questo tipo di problema prima? Mi rendo conto che questa domanda è ovunque; Farò del mio meglio per ripulire e chiarire eventuali punti di incertezza.
E per quanto mi piacerebbe usare Mercurial, abbiamo già speso soldi per un SCM commerciale centralizzato (Vault) e il passaggio non è un'opzione. Inoltre, penso che il problema qui sia più profondo della scelta dello strumento di controllo della versione.