ฉันจะแปลงที่เก็บ git เป็น Mercurial ได้อย่างไร


104

ฉันได้พัฒนาแอปพลิเคชัน java โดยใช้ git เป็นที่เก็บซอร์สโค้ด ฉันต้องการแชร์โครงการกับนักพัฒนา java คนอื่น ๆ และดูเหมือนว่า hg จะถูกใช้มากที่สุด

คำถามของฉันคือฉันจะแปลง git repository เป็น hg ได้อย่างไร

ถ้าฉันลองใช้ googling "แปลง git เป็น hg" และทุก ๆ การค้นหาจะเกี่ยวกับการแปลงจาก hg เป็น git ฉันยังใช้TortoiseHg


16
หากคุณต้องการเปลี่ยนจาก mercurial เป็น git แทน: stackoverflow.com/questions/883452/…
Christian Oudard

ย่อหน้าสุดท้ายนั้นไม่สมเหตุสมผล พิมพ์ผิด?
tshepang

1
@Tshepang: ฉันต้องการ "git -> hg" แต่ได้ "hg -> git" ฉันจะแก้ไขคำถามนี้ แต่ฉันเดาว่ามีคนเข้าใจอยู่ดีเพราะมีคำตอบแล้ว
Spoike

คำตอบ:


79

hg convertยูทิลิตี้ไม่ได้เป็นตามค่าเริ่มต้นหลังจากการติดตั้ง ในการตั้งค่าให้เพิ่มสิ่งต่อไปนี้ใน.hgrcไฟล์ของคุณ

[extensions]
hgext.convert=

หากคุณใช้TortoiseHgบน Windows ไฟล์นี้จะอยู่ในโฮมไดเร็กทอรีของคุณในชื่อไฟล์mercurial.ini. หลังจากเปลี่ยนการตั้งค่านี้คุณจะสามารถใช้hg convertยูทิลิตี้ได้


5
บน Ubuntu การเปลี่ยนแปลงทั้งระบบสามารถทำได้ที่ / etc / mercurial / hgrc
Sentient

1
ใน Windows โดยใช้ TortoiseHg สามารถเปิดใช้งานได้โดยใช้รายการเมนูการตั้งค่าส่วนกลางจากเมนูส่วนขยายของเชลล์ TortoiseHg ในส่วนส่วนขยายภายใต้การตั้งค่าส่วนกลาง
Umar Farooq Khawaja

คำอธิบายค่อนข้างไม่สมบูรณ์เนื่องจากไม่ได้ระบุว่า hg จะต้องเข้าถึง git สำหรับการแปลงหรือมิฉะนั้นคุณจะได้รับข้อผิดพลาด "ไม่พบเครื่องมือ" git "ที่ต้องการ"
jmd

41

โดยใช้ส่วนขยาย Mercurial Convert

เพิ่มบรรทัดต่อไปนี้ในของคุณ.hgrcหรือเพื่อเปิดใช้งานส่วนขยาย:

[extensions]
hgext.convert=

และพิมพ์ก

cd src
hg convert --datesort . dst

(แม้ว่าจะนำไปสู่ปัญหาบางอย่าง ... )

หมายเหตุ :: metrixรายงานว่าสิ่งนี้อาจใช้ไม่ได้:

     hg convert --datesort src dst

หมายเหตุ:จะมีข้อผิดพลาดเกิดขึ้นhg convertหากคุณใช้คำสั่งนี้จากไดเร็กทอรีอื่นที่ไม่ใช่ไดเร็กทอรีต้นทาง
คุณจะได้รับข้อผิดพลาดต่อไปนี้:

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

ยืนยันด้วย git 1.7.9 และ Mercurial 2.6.2 บน Windows XP


หากคำตอบนั้นรวมการ.hgrcตั้งค่าแทนที่จะเชื่อมโยงกับคำตอบนั้นก็จะครอบคลุม
fbmd

17

คุณอาจต้องการดูที่http://hg-git.github.com/ยูทิลิตี้: ปลั๊กอิน Git สำหรับ Mercurial

ปลั๊กอินนี้พัฒนาโดยพวกของ GitHub และอนุญาตให้แปลงจาก git <-> อย่างไร้ความปราณี ตามทฤษฎีแล้วคุณยังสามารถโคลนที่เก็บ hg ได้


2
นี่เป็นทางออกที่ดีกว่าการแปลงที่เก็บ มันจะเป็นคำตอบที่ดีกว่าหากมีรายละเอียดมากกว่านี้ คำตอบหนึ่งบรรทัดถัดจากไร้ประโยชน์
naught101

1
@ naught101 ขอบคุณสำหรับข้อเสนอแนะฉันได้เพิ่มข้อมูลเพิ่มเติมที่นี่เพื่ออ่านโดยตรง
vdboor

หลังจากที่คุณติดตั้งและตั้งค่า hg-git แล้วให้ใช้ hg gexport & hg gimport เพื่อแปลงระหว่างกัน
CAD bloke

9

การควบคุมการแก้ไขแบบกระจายด้วยสถานะMercurial :

เครื่องมือควบคุมการแก้ไขที่สนับสนุนโดยการแปลงมีดังนี้:

  • การโค่นล้ม
  • CVS
  • Git
  • ดาร์ค

คุณอาจไม่ต้องการเครื่องมือเพิ่มเติมหรือไม่


1
น่าเสียดายที่ "hg convert" ไม่มีใน tortoisehg
Spoike

6

ส่วนขยายการแปลงอาจใช้งานได้สำหรับคุณ แต่ถ้าไม่เป็นเช่นนั้นคุณอาจต้องการตรวจสอบตัวปรับแต่งซึ่งเป็นเครื่องมือวัตถุประสงค์ทั่วไปสำหรับการแปลงระหว่าง SCM แบบกระจายต่างๆ



2

ผู้เล่นใหม่ในเมือง: git-remote-hgคอมไพล์ระยะไกล-hgให้การสนับสนุนการเชื่อมต่อแบบเนทีฟในคอมไพล์

แค่:

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

1

ในGitโฟลเดอร์ที่มีที่เก็บ Git ทั้งหมดของฉันฉันสร้างGit2Hg.cmdไฟล์ด้วยเนื้อหาต่อไปนี้:

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

ตอนนี้ฉันสามารถแปลงที่เก็บ Git เป็น Hg ได้โดยพิมพ์สิ่งนี้ใน CMD:

Git2Hg "Folder Name"

0

ปลั๊กอิน Hg-Git หรือถ้าคุณใช้สำหรับ windows หรือการโยกย้ายจากที่หนึ่งไปยังอีกที่หนึ่งไปที่นี่2 [Windows GIT]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.