Bagaimana cara mengubah repositori git menjadi mercurial?


104

Saya telah mengembangkan aplikasi java menggunakan git sebagai repositori kode sumber. Saya ingin berbagi proyek dengan pengembang java lainnya dan hg tampaknya paling banyak digunakan oleh mereka.

Pertanyaan saya adalah bagaimana cara mengubah repositori git menjadi hg?

Jika saya mencoba googling "convert git to hg" dan setiap pencarian hit adalah tentang mengkonversi dari hg ke git. Saya juga menggunakan TortoiseHg .


16
Jika Anda perlu mengonversi dari mercurial ke git sebagai gantinya: stackoverflow.com/questions/883452/…
Christian Oudard

Paragraf terakhir itu tidak masuk akal. Salah ketik?
tshepang

1
@Tshepang: Saya ingin "git -> hg" tapi mendapatkan "hg -> git". Saya akan mengedit pertanyaan ini tetapi saya rasa orang-orang tetap mendapatkannya karena ada jawaban sekarang.
Spoike

Jawaban:


79

The hg convertutilitas tidak secara default setelah instalasi. Untuk mengaturnya seperti itu tambahkan yang berikut ini ke .hgrcfile Anda .

[extensions]
hgext.convert=

Jika Anda menggunakan TortoiseHg pada Windows maka file ini berada di direktori home Anda sebagai mercurial.ini. Setelah pengaturan ini berubah, Anda akan dapat menggunakan hg convertutilitas tersebut.


5
Di Ubuntu, perubahan luas sistem dapat dilakukan di / etc / mercurial / hgrc
Sentient

1
Pada Windows, menggunakan TortoiseHg, itu bisa diaktifkan dengan menggunakan item menu Pengaturan Global dari menu ekstensi shell TortoiseHg di bagian Ekstensi di bawah Pengaturan Global.
Umar Farooq Khawaja

Deskripsi ini agak tidak lengkap karena tidak menentukan bahwa hg akan memerlukan akses ke git untuk konversi atau Anda akan mendapatkan pesan kesalahan "tidak dapat menemukan alat" git "yang diperlukan".
jmd

41

Dengan menggunakan extension Mercurial Convert

Tambahkan baris berikut ke Anda .hgrcatau untuk mengaktifkan ekstensi:

[extensions]
hgext.convert=

Dan mengetik a

cd src
hg convert --datesort . dst

(meskipun itu dapat menyebabkan beberapa masalah ...)

Catatan :: Metrix melaporkan bahwa ini mungkin tidak berfungsi:

     hg convert --datesort src dst

Catatan: kebetulan ada bug hg convertjika Anda menjalankan perintah ini dari direktori selain direktori sumber.
Anda akan mendapatkan kesalahan berikut:

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

Dikonfirmasi dengan git 1.7.9 dan Mercurial 2.6.2 di Windows XP


Jika jawaban itu termasuk .hgrcpengaturan daripada menautkannya, itu akan komprehensif.
fbmd

17

Anda mungkin ingin melihat http://hg-git.github.com/ utility: plugin Git untuk Mercurial

Plugin ini pada awalnya dikembangkan oleh orang-orang di GitHub, dan memungkinkan konversi dari git <-> tanpa henti. Secara teori, Anda bahkan dapat mengkloning repositori hg.


2
Ini adalah solusi yang lebih baik daripada mengonversi repositori. Ini akan menjadi jawaban yang lebih baik juga, jika lebih detail. Jawaban satu baris tidak berguna.
n nothing101

1
@ naught101, terima kasih atas sarannya, saya telah menambahkan beberapa info lebih lanjut di sini untuk dibaca langsung.
vdboor

setelah Anda menginstal & mengatur hg-git, gunakan hg gexport & hg gimport untuk mengonversi di antara keduanya.
Pria CAD pada


6

Ekstensi convert mungkin bekerja untuk Anda, tetapi jika tidak, Anda mungkin ingin memeriksa tailor yang merupakan alat tujuan umum untuk mengkonversi di antara berbagai SCM terdistribusi.


2

Anda tidak bisa mengubahnya sama sekali. Cukup gunakan plugin Hg-Git ! Tidak ada yang akan tahu bedanya.


2

Pemain baru di kota: git-remote-hg . Ini memberikan dukungan penghubung asli di git.

Hanya:

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

1

Di Gitfolder dengan semua repositori Git saya, saya membuat Git2Hg.cmdfile dengan konten berikut:

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

Sekarang saya dapat mengonversi repositori Git ke Hg dengan mengetik ini di CMD:

Git2Hg "Folder Name"

0

Plugin Hg-Git atau jika Anda menggunakan untuk windows atau migrasi dari satu ke yang lain kunjungi di sini 2 [Windows GIT]

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.