ตอนนี้เรามีสาขา "เพอร์มิง" ซึ่ง "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 11b1e2b7dc4f4: โปรดทราบว่าฉันได้ทำการต่อกิ่งเซ็ตการเปลี่ยนแปลงจากสาขาอื่นเข้าไปในอันนี้ นอกจากนั้นมันแยกและรวมเป็นอิสระ
.ของคุณ--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}