ฉันจะเพิ่มที่เก็บระยะไกลใน Mercurial ได้อย่างไร


100

ฉันกำลังทำงานกับที่เก็บ Git ด้วยวิธีต่อไปนี้:

  • ฉันมีที่เก็บข้อมูลหลักและรีโมทหลายตัวในเครื่องผลิตที่แตกต่างกัน
  • ฉันกำลังส่งรหัสการผลิตไปยังรีโมทและเริ่มบริการใหม่เพื่อให้การเปลี่ยนแปลงมีผล

ฉันกำลังจะเปลี่ยนจาก Git เป็น Mercurial และฉันอยากจะรู้ล่วงหน้าว่าฉันจะบรรลุอะไรแบบนั้นได้อย่างไร

คำตอบ:


130

คุณเพิ่มรายการใน[paths]ส่วนของ.hg/hgrcไฟล์โคลนในเครื่องของคุณ นี่คือตัวอย่างของส่วนที่จะอยู่ใน.hg/hgrcไฟล์:

[paths]
remote1 = http://path/to/remote1
remote2 = http://path/to/remote2

จากนั้นคุณสามารถใช้คำสั่งเช่นhg push remote1ส่งชุดการเปลี่ยนแปลงไปยัง repo นั้น หากคุณต้องการให้ repo ระยะไกลนั้นอัปเดตเป็นไดเร็กทอรีที่ใช้งานได้คุณจะต้องวางchangegrouphook ไว้ที่ตำแหน่งระยะไกลที่ทำการอัปเดต จะมีลักษณะดังนี้:

[hooks]
changegroup = hg update 2>&1 > /dev/null && path/to/script/restart-server.sh

ไม่ใช่ทุกคนที่เป็นแฟนตัวยงของการมี repos ระยะไกลจะอัปเดตไดเร็กทอรีการทำงานของตนโดยอัตโนมัติเมื่อกดและไม่ใช่ค่าเริ่มต้นอย่างแน่นอน


23
สำหรับใครก็ตามที่ต้องการดูรีโมทใช้งานhg pathsซึ่งเทียบเท่ากับgit remote -v.
Keyo

5
default-push (แทนเช่น remote1) ทำให้สามารถพิมพ์ "hg push" ได้ จากนั้นใช้ที่เก็บเริ่มต้นพุช เป็นประโยชน์มาก
Christian

6
@Christian default-pushเป็นสิ่งที่จำเป็น / มีประโยชน์หากเป้าหมายการกดปกติของคุณแตกต่างจากแหล่งดึงปกติ ถ้ามันเหมือนกัน (หรือคุณไม่เคยดึง) ก็defaultเพียงพอแล้ว
Ry4an Brase

2
เพียงเพื่อเพิ่มสิ่งนี้ให้มากขึ้น: ถ้าคุณมีทั้งสองอย่างdefault-pushและdefaultในไฟล์ config ของคุณไฟล์แรกจะถูกใช้ในการพุชและไฟล์หลังเพื่อดึง หากคุณต้องการผลักและดึงจาก repo ระยะไกลเดียวกัน (ซึ่งคุณอาจทำได้หากคุณใช้ Mercurial ในลักษณะรวมศูนย์) ให้ใส่เฉพาะdefaultไฟล์ มันจะดีมากถ้าพวกเขาเพิ่มตัวเลือกบรรทัดคำสั่งเล็กน้อยเพื่อทำสิ่งนั้นในการกดครั้งแรก ... (หรือบางทีฉันอาจเป็นคน CVS มากเกินไป ;-))
tiktak

ฉันติดตั้ง Mercurial v2.6.2 บน Mac ของฉันแล้วและไฟล์ที่จะกำหนดพา ธ อยู่ใน.hg/hgrc(ไม่มี DOT นำหน้าชื่อไฟล์)
Regis Zaleman

9

หากคุณต้องการเพิ่มเส้นทางเริ่มต้นคุณต้องทำงานกับไฟล์defaultของคุณ ~project/.hg/hgrcดังต่อไปนี้:

[paths]
default = https://path/to/your/repo

โชคดี.


5

คุณสามารถดูปลั๊กอิน hg-git GitHub :

ความคิดทั่วไปของ hg-git

เพิ่มความสามารถในการพุชและดึงจากที่เก็บเซิร์ฟเวอร์ Git จาก Mercurial
ซึ่งหมายความว่าคุณสามารถทำงานร่วมกันในโครงการที่ใช้ Git จาก Mercurial หรือใช้เซิร์ฟเวอร์ Git เป็นจุดทำงานร่วมกันสำหรับทีมกับนักพัฒนาโดยใช้ทั้ง Git และ Mercurial

หมายเหตุ: ฉันยังไม่ได้ทดสอบเครื่องมือนั้นกับ Mercurial เวอร์ชันล่าสุด


1
ฉันมีความสามารถในการโอนทุกอย่างไปยัง Mercurial ฉันต้องการใช้เครื่องมือเดียวในการจัดการแหล่งที่มาของฉัน แปลงเมื่อที่เก็บสร้างโครงสร้างที่เหมาะสมและจากนั้นเฉพาะคำสั่ง mercurial สำหรับการผลิต ฉันตระหนักดีว่าทั้ง git และ mercurial สามารถทำงานร่วมกันได้ แต่ไม่เคยลอง
เปลือย

2
^ คริส: คำถามของคุณคือฉันจะแปลง Git repos เป็น Mercurial ได้อย่างไร "หรือ" จะประกาศ / ตั้งค่า Hg repo ระยะไกลได้อย่างไร "(เช่นในsuperuser.com/questions/43686/… ) หรือ" โดยที่ a remote ประกาศเป็น Hg? "( crazythinking.wordpress.com/2009/03/07/… )
VonC

0

หากคุณใช้ Unix และติดตั้ง Git แล้วคุณสามารถใช้ฟังก์ชันทุบตีนี้เพื่อเพิ่มเส้นทางไปยังรีโมทโดยไม่ต้องใช้โปรแกรมแก้ไขข้อความ:

add-hg-path() {
    git config -f $(hg root)/.hg/hgrc --add paths.$1 $2
    awk '{$1=$1}1' $(hg root)/.hg/hgrc > /tmp/hgrc.tmp
    mv /tmp/hgrc.tmp $(hg root)/.hg/hgrc
}

จากนั้นเรียกใช้ด้วย:

$ add-hg-path remote1 https://path.to/remote1

หากมีคนต้องการสร้างเทียบเท่ากับ Powershell ฉันก็ต้องการรวมสิ่งนั้นด้วยเช่นกัน การปรับปรุงศักยภาพอื่น ๆ $(hg root)รวมถึงการตรวจสอบข้อผิดพลาดในพารามิเตอร์และแฟออกมาเรียกร้องให้

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