2010-04-19 6 views
50

Esiste un flusso di lavoro efficiente per il mirroring di un progetto che è principalmente ospitato su bitbucket utilizzando Hg, su github?Mirroring di un progetto HG da Bitbucket a Github

+0

Vedi anche http://stackoverflow.com/questions/883452/git-interoperability- with-a-mercurial-repository – wimh

risposta

36

È possibile utilizzare uno strumento come hg-git a:

  • impostare un repository Git da qualche parte che si ha accesso alla spinta,
  • e quindi eseguire hg push [path] all'interno del tuo progetto. Per esempio:
$ cd hg-git # (a Mercurial repository) 
$ hg bookmark -r default master # make a bookmark of master for default, so a ref gets created 
$ hg push git+ssh://[email protected]/schacon/hg-git.git 
$ hg push 

Questo convertirà tutti i nostri dati Mercurial in oggetti Git e spingerli fino al server Git.
È inoltre possibile inserire tale percorso nella sezione di .hg/hgrc e quindi premere per nome.

hg-git

+0

Grazie. Ho dato una breve occhiata a hg-git, ma vedo che è ancora in uno stato alfa. Ho provato a installarlo su cygwin, ma al momento sto avendo qualche problema di stabilità. Se questo funziona, è sicuramente uno strumento utile nel flusso di lavoro. – Santa

11

Se si utilizza Mercurial per un progetto si può rapidamente e facilmente fare uno specchio git del vostro progetto in modo che gli utenti git possono contribuire. Ho creato un tutorial sull'uso di hg-git per gestire i mirror Mercurial su GitHub.

Riguarda come iniziare con un account GitHub, come avviare un progetto da Mercurial a GitHub e come accettare i contributi (richieste pull) da GitHub. Ecco un collegamento al post del blog: http://hgtip.com/tips/advanced/2009-11-09-create-a-git-mirror/

6

A partire da luglio 2013 è disponibile lo BitSyncHub un servizio Web per automatizzare questo processo tramite un hook di post-ricezione BitBucket. Dovrai comunque concedere al servizio il permesso di scrittura per il tuo repository GitHub (aggiungi bitsynchub come contributore).

8

Aggiungi git-remote-hg al percorso bin. Quindi è possibile eseguire il mirroring come mentioned on github.

git clone --mirror hg::https://bitbucket_repo 

poi, entra nella tua repo clonato

git remote set-url --push origin https://github.com/exampleuser/mirrored 

infine, sincronizzare il tuo specchio

git fetch -p origin 
git push --mirror 
+1

Questa è molto meglio della risposta accettata in quanto il risultato sarà un vero mirror con tutti i tag e i rami. – Kentzo