2010-06-03 36 views
24

Oggi mi sono abbastanza confuso su questo.Come clonare il repository su un server/repository remoto con Mercurial

Creo un repository vuoto localmente (hg init), lo ho clonato in copia funzionante, aggiunto del codice, inserito e spinto (al repository locale ovviamente).

Ora ho bisogno di condividere quel repository con gli altri. C'è un server che ha mercurio su di esso, come posso clonare il mio repository su uno remoto in modo che altri sviluppatori possano accedervi e tirare/spingere il codice da/a esso?

risposta

36

Ti consigliamo di controllare la pagina publishing repositories wiki per entrare in interfacce web e controlli di accesso, ma è più semplice che si può fare qualcosa di simile:

hg clone yourlocalrepo ssh://[email protected]//home/you/repo 

che i cloni tuo repo locale ad un posizione remota di tua scelta. Nota che ci sono due doppie barre in quell'URL.

Non è possibile creare un repository remoto come quello utilizzando http: //, solo ssh: //. Se tutto quello che hai è http su hgweb.cgi puoi 'hg init' un repository vuoto sul server e poi hg push su di esso.

+0

cool, grazie, ma come fanno le altre persone a clonarlo? –

+0

possono clonare da ssh: // tu @ server // home/tu/repo se gli è consentito leggere dal tuo homedir. Se non sei d'accordo, puoi creare un'area in cui puoi leggere e scrivere. –

7

Se i repository "ufficiali" sono serviti da un server HTTP e si desidera creare un repository nella posizione centrale in base al repository di un computer locale, ecco un modo. Per eseguire questa operazione sono necessari i diritti di amministratore sul server centrale.

ad es. Sto sviluppando su Windows e il mio repository centrale è in esecuzione su linux e servito da lighttpd per the official guide. La directory di repo centrale del server è /var/hg/repos/, di proprietà dell'utente/gruppo www-data. L'IP della mia macchina locale è 10.1.10.100 e il repository che voglio clonare si chiama foo.

  1. Sul computer locale, aprire un prompt dei comandi nella directory del repository e digitare hg serve. Questo esegue il server web hg locale, che consentirà al server di prelevare da esso.
  2. ssh nel server repo centrale, accesso come utente con diritti sudo su www-data.
  3. cd /var/hg/repos
  4. sudo -u www-data hg clone http://10.1.10.100 foo
+0

+1 per documentare la solita tecnica in questi giorni ... Sono stanco della solita tecnica, quindi ho in programma di scrivere un cgi (pagina web) in python per fare il comando hg clone per te, da qualsiasi host autorizzato. –

4

Per coloro che vengono dopo e non vogliono preoccuparsi i fastidi di ssh per spingere modifiche a un server costruita per ospitare i pronti contro termine, si può solo init sul server, e poi spingere come fai ogni altro repo.

# on server: 
cd repos/ 
mkdir myrepo 
cd myrepo 
hg init 
cd .. 
chown -R apache:apache myrepo 

cd .. 
vim hgweb.config 

# change [paths] 
[paths] 
myrepo = /path/to/myrepo 



# on your machine 

# make sure you've configured hgrc correctly 
[paths] 
default = http://server/hg/repos/myrepo 

hg push 

# ??? 

# profit 
+0

Non è una cattiva idea essere trasformato in una pagina web di helper cgi. Crea prima sul server, clona quello vuoto e sei pronto per un flusso di lavoro centralizzato. –

Problemi correlati