ตอนนี้เรามีสาขา "เพอร์มิง" ซึ่ง "staging" ดูเหมือนว่าจะมีความหมายที่ดีกว่ามาก กลยุทธ์ที่ดีในการจัดการสิ่งนี้คืออะไร?
ตอนนี้เรามีสาขา "เพอร์มิง" ซึ่ง "staging" ดูเหมือนว่าจะมีความหมายที่ดีกว่ามาก กลยุทธ์ที่ดีในการจัดการสิ่งนี้คืออะไร?
คำตอบ:
อัปเดตเป็นstiging
สาขาและสร้างสาขาใหม่ จากนั้นปิดสาขาเก่า
สรุป:
hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch
--force
ช่วยให้คุณสามารถนำมาใช้ชื่อสาขาปิดถ้าคุณใช้ ตัวอย่างเช่นhg branch --force v3
. สิ่งนี้จะส่งผลให้มีการhg update v3
อัพเดทไปยังv3
สาขาใหม่ตามที่คุณต้องการ
stiging
ก่อนที่จะแยกสาขาคุณจะไม่ได้รับ "
สำหรับผู้อ่านในอนาคต: ด้วยrebase
ส่วนขยายคุณสามารถสร้างสาขาใหม่ที่มีผู้ปกครองเดียวกับstiging
และย้ายประวัติสาขาทั้งหมดไปที่สาขานี้:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
สมมติว่าstiging
มีเพียงหนึ่งพาเรนต์ แน่นอนคุณสามารถใช้หมายเลขการแก้ไขที่ชัดเจนแทน
หมายเหตุ 1: ถ้าสาขาstiging
รวมถึงการผสานกับสาขาอื่น ๆ ผมคิดว่านี้จะรักษาพวกเขาตราบเท่าที่staging
และstiging
มีแม่เดียวกัน แต่ฉันจะตรวจสอบอีกครั้งอย่างแน่นอน
หมายเหตุ 2: ตั้งแต่การแก้ไขประวัติสาขาเก่าจะไม่หายไปจากที่เก็บโคลน (ดูrebase
เอกสารประกอบ) ถ้าทุกคนไม่สามารถโคลนได้อีกครั้งมันอาจไม่ใช่วิธีแก้ปัญหาที่ใช้งานได้จริงสำหรับกลุ่มใหญ่
Note3 / แก้ไข (ความอนุเคราะห์ของ @JasonRCoombs): ตอนนี้ขั้นตอนเป็นมาตรฐานในแบบ mercurial แล้วrebase
จะปฏิเสธที่จะแก้ไขชุดการเปลี่ยนแปลงที่ถูกผลักไปแล้ว ไม่ว่าจะด้วยการเปลี่ยนเฟสกลับมาเป็นแบบร่าง (ด้วยhg phases
) หรือปล่อยให้สาขาเก่าอยู่ในตำแหน่งนั้นและทำสำเนาชื่อที่เหมาะสม (เช่นด้วย `hg rebase --keep ')
hg convert
แทน
--keep
ไปยังคำสั่ง rebase ซึ่งจะคัดลอกแทนที่จะย้ายการเปลี่ยนแปลง
abort: can't rebase immutable changeset 11b1e2b7dc4f
4: โปรดทราบว่าฉันได้ทำการต่อกิ่งเซ็ตการเปลี่ยนแปลงจากสาขาอื่นเข้าไปในอันนี้ นอกจากนั้นมันแยกและรวมเป็นอิสระ
.
ของคุณ--dest
และการรีบูตจะใช้ชื่อสาขาใหม่โดยอัตโนมัติ
หากคุณมีเซ็ตการแก้ไขคุณจะต้องใช้ส่วนขยายการแปลงด้วย branchmap เพื่อเปลี่ยนชื่อ จากนั้นทุกคนจะต้องลอกแบบ repo ใหม่หรือถอดกิ่งไม้เก่าออก
สร้างสาขาใหม่ที่เรียกว่า "การจัดเตรียม" และลืมอีกสาขา ...
นี่เป็นการแก้ไขประวัติและใช้สำหรับผู้ใช้ Mercurial ขั้นสูงเท่านั้น อย่าทำอย่างนี้ถ้าคุณไม่รู้ความหมาย
หาก stiging เป็นแบบโลคัลเท่านั้นคุณสามารถเปลี่ยนเป็นการ staging ด้วยการต่อกิ่งและสตริป เริ่มต้นด้วยการอัปเดตเป็นเซ็ตการแก้ไขที่บรรพบุรุษได้แยกไว้ด้วยกัน สร้างกิ่งก้านลำดับฉากและกราฟต์แต่ละการคอมมิทจากการ stiging ไปยังการจัดเตรียม การจัดเตรียมควรเป็นสำเนาของการตีตรา ในที่สุดทำลาย stiging โดยการลอกกระทำครั้งแรก
hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch
hg graft {first changeset in stiging}..{stiging head}