Git deposunu mercurial'a nasıl dönüştürebilirim?


104

Git'i kaynak kod deposu olarak kullanan bir java uygulaması geliştiriyorum. Projeyi diğer java geliştiricileriyle paylaşmak istiyorum ve hg en çok onlar tarafından kullanılıyor gibi görünüyor.

Sorum şu: git deposunu hg'ye nasıl dönüştürebilirim?

Google'da "git'i hg'ye dönüştür" denedim ve her arama isabeti hg'den git'e dönüştürmekle ilgili. Ben de TortoiseHg kullanıyorum .


16
Bunun yerine mercurial'den
git'e

Bu son paragraf bir anlam ifade etmiyor. Bir yazım hatası?
tshepang

1
@Tshepang: "git -> hg" istedim ama "hg -> git" aldım. Bu soruyu düzenleyeceğim ama sanırım insanlar yine de aldı çünkü şimdi cevaplar var.
Spoike

Yanıtlar:


79

Yardımcı hg convertprogram kurulumdan sonra varsayılan olarak açık değildir. Bu şekilde ayarlamak için aşağıdakileri .hgrcdosyanıza ekleyin .

[extensions]
hgext.convert=

Windows'ta TortoiseHg kullanıyorsanız , bu dosya ana dizininizde mercurial.ini. Bu ayar değişikliğinden sonra hg convertyardımcı programı kullanabileceksiniz .


5
Ubuntu'da sistem genelinde değişiklik / etc / mercurial / hgrc adresinde yapılabilir
Sentient

1
Windows'ta, TortoiseHg kullanılarak, Global Ayarlar altındaki Uzantılar bölümündeki TortoiseHg kabuk uzantısı menüsünden Global Ayarlar menü öğesi kullanılarak etkinleştirilebilir.
Umar Farooq Khawaja

Açıklama, hg'nin dönüşüm için git'e erişmesi gerekeceğini belirtmediğinden veya "gerekli" git "aracını bulamıyorum" hatasını aldığınız için eksiktir.
jmd

41

Mercurial Convert uzantısını kullanarak

.hgrcUzantıyı etkinleştirmek için veya hesabınıza aşağıdaki satırları ekleyin :

[extensions]
hgext.convert=

Ve yazarak

cd src
hg convert --datesort . dst

( bazı sorunlara yol açabilse bile ...)

Note :: metrix bunun işe yaramayabileceğini bildiriyor:

     hg convert --datesort src dst

Not:hg convert Bu komutu kaynak dizinden farklı bir dizinden uygularsanız bir hata oluşur .
Aşağıdaki hatayı alacaksınız:

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

Windows XP'de git 1.7.9 ve Mercurial 2.6.2 ile onaylandı


Bu yanıt .hgrc, ona bağlanmak yerine kurulumu içeriyorsa, kapsamlı olacaktır.
fbmd

17

Http://hg-git.github.com/ adresine bakmak isteyebilirsiniz. yardımcı programına : Mercurial için bir Git eklentisi

Bu eklenti başlangıçta GitHub çalışanları tarafından geliştirilmiştir ve git <-> mercurial'den kayıpsız bir şekilde dönüştürmeye izin verir. Teorik olarak, hg deposunu bile klonlayabilirsiniz.


2
Bu, depoyu dönüştürmekten daha iyi bir çözümdür. Daha fazla detayı olsaydı daha iyi bir cevap olurdu. Bir satır cevaplar hemen hemen işe yaramaz.
naught101

1
@ naught101, öneri için teşekkürler, doğrudan okumak için buraya biraz daha bilgi ekledim.
vdboor

hg-git'i kurup kurduktan sonra aralarında dönüştürmek için hg gexport & hg gimport'u kullanın.
CAD adam


6

Dönüştürme uzantısı sizin için işe yarayabilir, ancak işe yaramazsa , çeşitli dağıtılmış SCM'ler arasında dönüştürme yapmak için genel amaçlı bir araç olan terziye göz atmak isteyebilirsiniz .



2

Kasabadaki yeni oyuncu: git-remote-hg . Git'te yerel köprüleme desteği sağlar.

Sadece:

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

1

GitTüm Git depolarımın bulunduğu klasörde Git2Hg.cmdaşağıdaki içeriğe sahip dosyayı oluşturdum :

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

Şimdi bunu bir CMD'ye yazarak bir Git deposunu Hg'ye dönüştürebilirim:

Git2Hg "Folder Name"

0

Hg-Git Eklentisi veya pencereler veya birinden diğerine geçiş için kullanıyorsanız burayı ziyaret edin 2 [Windows GIT]

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.