Funziona correttamente il mercurial con più utenti utilizzando una singola copia di lavoro su una condivisione

Sto cercando una soluzione in cui posso installare il controllo delle versioni in un ambiente aziendale nel modo less intrusivo ansible. Una ansible soluzione che stavo pensando stava diventando mercurial impostato su ciascuno dei desktop di Windows e solo impostando copie di lavoro di repos sul share. Quindi non ci sarebbe installazione di server di mercurial. Ovviamente questo non risolve più utenti nello stesso file contemporaneamente ma questo non è un problema che stiamo cercando di risolvere. E questo non è il backup, ma poi il controllo della versione non dovrebbe essere il backup. Inoltre abbiamo un sacco di backup.

Questa installazione potrebbe funzionare? I nomi utente nei registri di commit saranno registrati correttamente. Oppure sembra che tutto sia commesso dallo stesso utente? Chiunque abbia esperienza con questa configuration?

  • ZFS come alternative in Windows
  • Le scorciatoie di MS Office nel menu di avvio non funzionano in Vista
  • Qual è il modo migliore per le unità esterne RAID?
  • Qualsiasi cosa condividere una printingnte da Windows a 32 bit a 64 bit?
  • Fare confronti logici OR con findstr.exe
  • Non è ansible aggiungere un server 2012 a un dominio 2003 poiché si dice che il livello di funzionalità forrest è 2003 ma i domini e le trust visualizzano come 2003
  • 2 Solutions collect form web for “Funziona correttamente il mercurial con più utenti utilizzando una singola copia di lavoro su una condivisione”

    Sì, puoi fare quello che ti suggerisce. Le versioni moderne di Mercurial non sono molto interessate delle copie di lavoro che possono essere memorizzate su un disco locale o su un filesystem di networking.

    Abbiamo avuto alcuni problemi in passato (prima della versione 1.7.1) in cui Mercurial non avrebbe potuto interrompere i collegamenti in repository memorizzati nei file system di networking. Il problema è che due repository saranno collegati al server sul server se fai hg clone foo bar . Se un utente spinge un commit alla bar e accede al repository sulla condivisione di networking, allora è fondamentale che Mercurial scopri che i file all'interno della bar/.hg/store sono collegati a foo/.hg/store modo che possano rompere i collegamenti . A causa di vari bug di kernel in Windows e Linux , questo potrebbe non riuscire con le vecchie versioni di Mercurial.

    Quindi ricapitola: il tuo server non ha bisogno di installare Mercurial se installi solo Mercurial su tutti i client. Crea (spero di ricordare correttamente i routes UNC)

     \\server\share\main 

    come repository principale e fare cloni per gli sviluppatori:

     \\server\share\alice \\server\share\bob 

    Alice e Bob lavoreranno qui e modificano le copie di lavoro in modo indipendente. Essi si impegnano come normalmente e quando sono pronti, spingono di nuovo al repo main . I nomi utente vengono memorizzati nei cambietti, pertanto saranno mantenuti quando i cambiamenti entrano nel repo principale.

    Creare un repository basilare condiviso in una condivisione di networking. Assicurati che tutti gli utenti fanno 'clone hg' per get una copia locale di quel repository e lasciarli funzionare (compilare, modificare, 'hg add / … / commit') sulla copia locale. Ogni volta che qualcuno è pronto a spingere le modifiche locali al repository condiviso, farli fare 'hg push'. Ogni volta che qualcuno vuole get modifiche spinte nel repository condiviso da altri, lasciate che fanno 'hg pull' e 'hg update'. Ecco in poche parole.

    Un paio di note:

    • L'accesso contemporaneo di lettura / scrittura al repository condiviso non è un problema. Come altri sisthemes simili, Mercurial è stato esplicitamente progettato per far fronte a questo.

    • Le copie locali del repository condiviso sono i tuoi backup.

    • I nomi utente associati agli impegni devono essere configurati manualmente nei file 'mercurial.ini' in each installazione locale di Mercurial. Non so se esiste un modo per utilizzare qualcosa di% USERNAME% in quel file, che si espande al nome del login corrente, potrebbe esserci.

    • Una pratica comune è evitare più teste nel repository condiviso (basta ignorare questo proiettile per ora se non sai ancora cosa sta parlando). Per aiutare a farlo, gli utenti che stanno per spingere i loro cambiamenti preferiscono normalmente fare i cambiamenti apportti da altri e assicurarsi che i loro cambiamenti locali siano compatibili con quelli fatti da altri. La parte di risoluzione dei conflitti è fatta da 'hg merge'. La maggior parte dei conflitti viene risolta automaticamente, ma alcuni richiedono l'intervento dell'utente (ad esempio, se tu e me modifichi la stessa row nello stesso file, ci sarà un conflitto e il più lento di noi dovrà farlo e modificare la finale linea manualmente).

    • Poiché abbiamo a che fare con Windows, suggerisco di forzare tutti i nomi di file in minuscolo (o in maiuscolo, se ti piace gridare). Questo potrebbe non essere assolutamente necessario con le versioni più recenti di Mercurial, ma lo facciamo ancora solo per essere sul sicuro (e, sì, quando qualcosa si rompe perché Mercurial pensa che 'a.txt' non sia lo stesso file di 'A. txt 'su un sistema basato su Windows, si rompe brutto).

    In bocca al lupo.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.