สาขาใน BitBucket คืออะไร และจะจัดการได้อย่างไร

ฉันมีปัญหาดังต่อไปนี้ ฉันมี repo ซึ่งเดิมทีฉันโคลนจาก GitHub โดยใช้ hg-git แต่เนื่องจากฉันได้พัฒนามันแบบ Mercurial dev ดั้งเดิมยังอัปเดต repo อย่างต่อเนื่อง ดังนั้นเราจึงมีหลายหัว และฉันรวมทุกอย่างที่ฉันต้องการโดยใช้ TortoiseHg มันทำงานได้ดีมาก (ฉันคิดว่า hg-git ไม่ได้สร้างความแตกต่างที่นี่) อย่างไรก็ตาม ฉันมีปัญหาดังต่อไปนี้: ตอนนี้ฉันได้ผลักดันเวอร์ชันของฉันไปที่ BitBucket แล้ว และมีสามสาขา

3 ค่าเริ่มต้น

ฉันสับสนมากกับสิ่งนี้ สาขาใน git ไม่ควรเป็นที่คั่นหน้าใน Hg ใช่ไหม แล้วทำไม BitBucket ถึงรองรับสาขาไม่ใช่บุ๊กมาร์ก? ฉันไม่เข้าใจจริงๆ ว่าสาขาใน Hg คืออะไร และทำไมฉันถึงมี 3 ในเมื่อ hg branch แสดงรายการเดียวเท่านั้น: default หรือจริงๆ แล้วไม่ใช่สาขา แต่เป็นบุ๊กมาร์ก แค่ BitBucket ตั้งชื่อมันแบบนี้เพื่อไม่ให้ผู้ใช้ git สับสน แต่นี่คือ Hg repo (ตั้งค่าเป็น Hg เมื่อฉันสร้างครั้งแรก) และฉันไม่ได้ใช้ git!

เมื่อฉันลอง hg heads -q ฉันได้ผลลัพธ์เดียวกันทุกประการ:

235:03d08bcf3144
233:d7fbd581b9e1
227:abda0dc38b93

จริงๆ แล้วมันเป็นหัวหน้าอย่างที่ BitBucket เรียกว่าสาขาหรือเปล่า? เป็นเช่นนั้น ฉันจะตั้งชื่อพวกมันเหมือนสาขาใน Git ได้อย่างไร เช่น ค่าเริ่มต้น, ทางแยกจาก ฯลฯ ?

ความคิดหนึ่งที่ฉันคิดไว้คือสร้างที่คั่นหนังสือไว้ในแต่ละหัว ฉันรู้วิธี push -B แต่ละรายการไปยัง BitBucket ตอนนี้ดูเหมือนว่านี้:

6 สาขา

ตอนนี้มันเริ่มเข้าท่าแล้ว แต่ฉันจะทำอะไรกับค่าเริ่มต้น 3 รายการได้? ทำไมพวกเขาถึงอยู่ที่นั่น และจริงๆ แล้วพวกเขาคืออะไร? กิ่งก้าน หัว หรือบุ๊กมาร์กปรอท?

แล้วทำไมฉันถึงมีอันเดียวในการตั้งค่า BitBucket?

1 ในการตั้งค่า


person hyperknot    schedule 31.12.2012    source แหล่งที่มา


คำตอบ (2)


คุณมีสามหัวในสาขา ชื่อ เดียว "ค่าเริ่มต้น" และหัวทั้งสามนี้ เป็นสาขา - ไม่ระบุชื่อ สาขา

หากคุณต้องการกำจัดสาขาเหล่านี้ภายใน "ค่าเริ่มต้น" คุณเพียงแค่รวมหัว (สองหัว - เส้นของตัวเองและดึงมาจากอัปสตรีม: ฉันไม่รู้หากไม่มีประวัติ คุณจะได้อันดับที่สามได้อย่างไร) ในพื้นที่เก็บข้อมูลในเครื่องก่อนที่จะพุชไปที่ BitBucket

person Lazy Badger    schedule 01.01.2013
comment
ประการที่สามเป็นเพราะนักพัฒนาใช้ repos สองอันที่แตกต่างกัน ปัญหาของฉันคือฉันไม่ต้องการใช้สาขาที่มีชื่อในการแตกสาขา แต่เป็นเพียงบุ๊กมาร์ก ในระหว่างนี้ ฉันได้แก้ไขด้วยวิธีต่อไปนี้: 1. สิ่งสำคัญที่สุดคือฉันตระหนักว่าปัญหาของฉันคือ Mercurial พุชสาขา ทั้งหมด ตามค่าเริ่มต้น ฉันแก้ไขด้วย push --rev . หรือ TortoiseHg's defaultpush = revision 2. สำหรับการแก้ไข repo จริง ฉันปิดส่วนหัวด้วย --close-branch ผลักไปที่ bitbucket และ hg strip-ed local 3 ตอนนี้การพุชสาขาเดียวแก้ไขมัน วิธีที่ bitbucket UI จัดการสิ่งนี้ยังคงสับสนมาก - person hyperknot; 01.01.2013
comment
ประเด็นก็คือสาขาเหล่านี้เป็นสาขาที่เหมาะสม (ไม่ระบุชื่อ) และไม่ควรรวมเข้าด้วยกันก่อนที่จะพุชไปที่ bitbucket การจัดการบุ๊กมาร์กบน bitbucket นั้นยังไม่สมบูรณ์มากนัก (ดูคำตอบของฉัน) - person JonnyJD; 11.10.2013

คุณคงได้อ่าน คำแนะนำเกี่ยวกับการแตกแขนงใน Mercurial. นั่นเป็นภาพรวมที่ดีเกี่ยวกับ "กิ่งก้านปรอท" ที่แตกต่างกัน

ดังนั้นสาขา git มักจะถูกแปลเป็นบุ๊กมาร์ก hg นั่นคือคุณใช้ที่เก็บ hg หนึ่งแห่งต่อไปโดยมีสาขาหนึ่ง (un-) ชื่อ "ค่าเริ่มต้น" ในสาขาเริ่มต้นนี้ คุณจะมีบุ๊กมาร์กหนึ่งรายการสำหรับ "สาขา git" ทุกแห่ง

ตอนนี้ปัญหาของ bitbucket คือการสนับสนุน "hg bookmark" (ปัจจุบัน) ไม่สมบูรณ์เท่ากับการสนับสนุน "git Branch"

ดังนั้นในขณะที่คุณเขียน พวกเขาไม่รองรับบุ๊กมาร์กเลย และมีเพียงการรองรับส่วนหัว (ไม่ระบุชื่อ) เท่านั้น บุ๊กมาร์กส่วนใหญ่ก็เป็นส่วนหัวเช่นกัน ดังนั้นคุณจึงสามารถเห็นแฮชหนึ่งอันสำหรับทุกๆ หัว/บุ๊กมาร์ก อย่างไรก็ตาม บุ๊กมาร์กบางรายการไม่ได้อยู่บนหัว แต่การกระทำทั้งหมดจะรวมอยู่ในบุ๊กมาร์ก/หัวอื่น สิ่งเหล่านี้มองไม่เห็นเลยบน bitbucket

ณ ขณะนี้ บุ๊กมาร์กจะแสดง (พร้อมชื่อ) ในมุมมองคอมมิต และสามารถเลือกได้ในเมนูแบบเลื่อนลง จะไม่แสดงในแท็บ "สาขา" โดยทั่วไปแล้ว ยังไม่สามารถเปิดคำขอดึงบุ๊กมาร์กได้ อย่างไรก็ตาม สำหรับบุ๊กมาร์กที่เป็นส่วนหัว คุณสามารถเปิดคำขอดึงสำหรับส่วนหัวนั้นได้

ดูเพิ่มเติม: ปัญหา bitbucket: ไม่สามารถ สร้างคำขอดึงจากบุ๊กมาร์ก hg

person JonnyJD    schedule 11.10.2013