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.