Come si converte un repository git in mercurial?


104

Ho sviluppato un'applicazione java utilizzando git come repository di codice sorgente. Mi piacerebbe condividere il progetto con altri sviluppatori java e hg sembra essere il più utilizzato da loro.

La mia domanda è come posso convertire un repository git in hg?

Se provassi a cercare su Google "converti git in hg" e ogni risultato di ricerca riguarda la conversione da hg a git. Sto anche usando TortoiseHg .


16
Se avete bisogno di convertire da Mercurial a git invece: stackoverflow.com/questions/883452/...
Christian Oudard

Quest'ultimo paragrafo non ha senso. Un errore di battitura?
tshepang

1
@Tshepang: volevo "git -> hg" ma ho ottenuto "hg -> git". Modificherò questa domanda ma immagino che le persone l'abbiano comunque capito poiché ora ci sono risposte.
Spoike

Risposte:


79

L' hg convertutilità non è attiva per impostazione predefinita dopo l'installazione. Per impostarlo come tale aggiungi quanto segue al tuo .hgrcfile.

[extensions]
hgext.convert=

Se stai usando TortoiseHg su Windows, questo file risiede nella tua home directory come mercurial.ini. Dopo questa modifica alle impostazioni sarai in grado di utilizzare l' hg convertutilità.


5
Su Ubuntu la modifica a livello di sistema può essere effettuata in / etc / mercurial / hgrc
Sentient

1
Su Windows, utilizzando TortoiseHg, può essere abilitato utilizzando la voce di menu Impostazioni globali dal menu di estensione della shell TortoiseHg nella sezione Estensioni in Impostazioni globali.
Umar Farooq Khawaja

La descrizione è alquanto incompleta in quanto non specifica che hg avrà bisogno dell'accesso a git per la conversione, altrimenti si ottiene l'errore "impossibile trovare lo strumento" git "richiesto".
jmd

41

Utilizzando l' estensione Mercurial Convert

Aggiungi le seguenti righe al tuo .hgrco per abilitare l'estensione:

[extensions]
hgext.convert=

E digitando a

cd src
hg convert --datesort . dst

(anche se può portare ad alcuni problemi ...)

Nota :: metrix segnala che questo potrebbe non funzionare:

     hg convert --datesort src dst

Nota: potrebbe esserci un bug hg convertse si esegue questo comando da una directory diversa dalla directory di origine.
Otterrai il seguente errore:

abort: cannot read tags from git-repo4/.git

Confermato con git 1.7.9 e Mercurial 2.6.2 su Windows XP


Se quella risposta includesse l' .hgrcimpostazione invece di collegarla ad essa, sarebbe completa.
fbmd

17

Potresti dare un'occhiata all'utilità http://hg-git.github.com/ : un plugin Git per Mercurial

Questo plugin è stato originariamente sviluppato dai ragazzi di GitHub e consente la conversione da git <-> mercurial senza perdite. In teoria, potresti persino essere in grado di clonare il repository hg.


2
Questa è una soluzione migliore rispetto alla conversione del repository. Sarebbe anche una risposta migliore, se avesse più dettagli. Le risposte di una riga sono quasi inutili.
nought101

1
@ naught101, grazie per il suggerimento, ho aggiunto qualche informazione in più qui da leggere direttamente.
vdboor

dopo aver installato e configurato hg-git, usa hg gexport e hg gimport per convertirli.
Tizio CAD


6

L'estensione di conversione potrebbe funzionare per te, ma in caso contrario, potresti voler controllare tailor che è uno strumento generico per la conversione tra i vari SCM distribuiti.


2

Potresti semplicemente non convertirlo affatto. Usa il plugin Hg-Git ! Nessuno saprà la differenza.


2

Nuovo giocatore in città: git-remote-hg . Fornisce supporto nativo per il bridging in git.

Appena:

hg init ../hgrepo
git push hg::$PWD/../hgrepo

1

Nella Gitcartella con tutti i miei repository Git ho creato il Git2Hg.cmdfile con il seguente contenuto:

set PATH=%PATH%;C:\Program Files\TortoiseHg
set PATH=%PATH%;C:\Program Files\Git\bin
hg convert %1

Ora posso convertire un repository Git in Hg digitando questo in un CMD:

Git2Hg "Folder Name"

0

Plugin Hg-Git o se utilizzi per Windows o per la migrazione da uno all'altro, visita qui 2 [Windows GIT]

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.