Sim, você pode fazer o que você sugere. As versões modernas do Mercurial realmente não se importam onde as cópias de trabalho são armazenadas - elas podem ser armazenadas em um disco local ou em um sistema de arquivos em rede.
Tivemos alguns problemas no passado (antes da versão 1.7.1) em que o Mercurial não conseguiria quebrar hardlinks em repositórios armazenados em sistemas de arquivos da rede. O problema é que dois repositórios serão hardlinked no servidor se você fizer hg clone foo bar
. Se um usuário enviar um commit para bar
e acessar o repositório pelo compartilhamento de rede, é fundamental que o Mercurial descubra que os arquivos dentro de bar/.hg/store
estão com hardlink para foo/.hg/store
, de modo que ele possa quebrar os links. Devido a vários bugs do kernel no Windows e no Linux , isso pode falhar nas versões antigas do Mercurial.
Então, para recapitular: seu servidor não precisa do Mercurial instalado se você acabou de instalar o Mercurial em todos os clientes. Criar (espero lembrar-me dos caminhos UNC corretamente)
\server\share\main
como o repositório principal e cria clones para os desenvolvedores:
\server\share\alice
\server\share\bob
Alice e Bob vão trabalhar lá e modificar as cópias de trabalho de forma independente. Eles fazem commits normalmente e quando estão prontos, eles retornam ao main
repo. Os nomes de usuários são armazenados nos changesets, então eles serão retidos quando os changesets entrarem no repositório principal.