Siamo una società di consulenza software con una moltitudine di progetti per clienti diversi. Tradizionalmente utilizziamo Subversion, ma al momento stiamo valutando la possibilità di passare a Git.
Una parte significativa dei documenti che produciamo sono condivisi con i nostri clienti (requisiti, progetti globali, specifiche di prova, ecc.) E utilizziamo MS Office per produrli. In Subversion, potremmo usare la sua funzione "Blocca" per assicurarci che nessuno stesse modificando lo stesso documento contemporaneamente. In Git, non puoi farlo poiché per sua natura distribuita, git non ha i blocchi.
Le serrature sono in realtà poco più che un meccanismo di comunicazione, ma sono molto efficaci.
Attualmente, il nostro codice e i documenti rivolti al cliente sono in genere in diverse sottocartelle di un repository svn diverso. Quando passi a Git, cosa consiglieresti di fare? Vedo una serie di opzioni:
Spostiamo i repository svn su git 1-on-1. Invece di usare i blocchi sui file di Office, facciamo ciò che le persone git suggeriscono e in qualche modo proviamo a cambiare il nostro flusso di lavoro per risolverlo. Questo potrebbe funzionare in una succursale su qualsiasi modifica del documento e unire la revisione. Questo approccio interrompe, ad esempio, i fogli Excel che contengono informazioni sulla gestione del progetto; sono facilmente modificabili dai membri del team (e lo incoraggiamo a farlo), ma non sono soggetti a alcun processo di revisione formale
Usiamo git per il codice e svn per i documenti e la gestione dei progetti. Questo ha lo svantaggio che certi documenti più designati non saranno "vicini" al codice specificato, aumentando la possibilità che le persone dimentichino di aggiornarli. Inoltre, tutti devono usare e comprendere due set di strumenti. Detto questo, forse questa è una grande opportunità per passare a strumenti per documenti basati su testo (latex, markdown, HTML, qualunque cosa) per documenti di progettazione non rivolti al cliente.
Come 1, ma hackeriamo un
git lock
comando che fa ciò che fa svn lock per noi (attiva il flag di sola lettura in modo appropriato e sincronizzalo con un server in qualche modo).
Non compro l'argomento secondo cui i blocchi non funzionano in un DVCS perché il sistema dovrebbe funzionare anche quando sei completamente offline. Anche i blocchi Svn possono essere ignorati; sono un meccanismo di comunicazione . Senza una sorta di connessione di rete, il tuo computer non comunicherà molto.
Non possiamo essere l'unico negozio a essere molto soddisfatto di come si svn lock
adatta al nostro flusso di lavoro, giusto?
Qualche idea o consiglio?
Ho trovato /programming/119444/locking-binary-files-using-git-version-control-system ma la discussione è piuttosto tecnica; sto cercando modi per risolvere o evitare il problema pratico di due membri del team che modificano lo stesso file binario allo stesso tempo.