ฉันใช้ capistrano เพื่อปรับใช้แอปพลิเคชัน RoR โค้ดเบสอยู่ในที่เก็บ git และมีการใช้การแยกย่อยในการพัฒนา Capistrano ใช้deploy.rb
ไฟล์สำหรับการตั้งค่าซึ่งหนึ่งในนั้นเป็นสาขาที่จะปรับใช้
ปัญหาของฉันคือ: สมมติว่าฉันจะสร้างสาขาใหม่จากต้นแบบ ไฟล์ปรับใช้จะอ้างอิงสาขาหลัก ฉันแก้ไขเพื่อให้สามารถปรับใช้Aเพื่อทดสอบสภาพแวดล้อม ฉันเสร็จสิ้นการทำงานเกี่ยวกับคุณลักษณะและผสานสาขาเข้าต้นแบบ ตั้งแต่ไฟล์จากคือสดจะได้รับการรวมอยู่ในและตอนนี้ในโทสาขาการอ้างอิง ได้เวลาแก้ไขอีกครั้ง.deploy.rb
deploy.rb
นั่นเป็นการแก้ไขด้วยตนเองที่ดูเหมือนไม่จำเป็นจำนวนมาก - พารามิเตอร์ควรตรงกับชื่อสาขาปัจจุบันเสมอ ยิ่งไปกว่านั้นมันเป็นเรื่องง่ายที่จะลืมแก้ไขการตั้งค่าทุกครั้ง
อะไรคือวิธีที่ดีที่สุดในการทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ
แก้ไข:ปรากฎว่ามีคนทำสิ่งที่ฉันต้องการแล้ว :
เช้านี้ฉันมีโอกาสปรับใช้สาขาของที่เก็บ git ไปยังเซิร์ฟเวอร์การจัดเตรียม แต่ไม่ได้มีความคิดที่ชัดเจนที่สุดว่าจะทำอย่างไร การค้นหาอย่างรวดเร็วผ่านซอร์สโค้ด capistrano พบว่าฉันสามารถใช้ set
:branch "branch_name"
ในสคริปต์ปรับใช้ของฉันได้ ฉันลองแล้วและได้ผล จากนั้นฉันก็คิดว่าฉันจะต้องทำการเปลี่ยนแปลงที่คล้ายกันในทุกสาขาของฉัน แน่นอนว่าฉันเป็นคนขี้เกียจและสงสัยว่าไม่มีวิธีที่ดีกว่านี้หากคุณไม่คุ้นเคยกับ git ผลลัพธ์ของคำสั่ง git branch คือรายการของสาขาที่มีเครื่องหมายดอกจันซึ่งทำเครื่องหมายรายการที่เช็คเอาต์ในเครื่องของคุณ ตัวอย่างเช่น:
> git branch * drupal_authentication fragment_caching master
ดังนั้นฉันคิดว่าถ้าฉันเพิ่งแยกวิเคราะห์ผลลัพธ์และค้นหาสาขาที่ทำเครื่องหมายว่าเป็นปัจจุบัน:
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
ตอนนี้ฉันสามารถปรับใช้สาขาใดก็ได้ที่เป็นปัจจุบันบนเครื่องท้องถิ่นของฉันจากสคริปต์เดียวที่แชร์และปรับใช้