เซสชัน bash ที่ทำงานต่อได้พร้อมการบำรุงรักษาสาขา


1

มียูทิลิตี้ที่ช่วยเพิ่มความคล่องตัวในการจัดเก็บและกู้คืนเซสชัน bash หรือไม่? ฉันต้องการทำ EG

$ KUNG=pao
$ foo commit  # saves the current environment
              # as an anonymous changeset from the previous savepoint
$ SCHNICKENS="What's up, doc?"
$ SCHNICKENS="$(echo Schmoove)"
$ unset KUNG
$ foo diff HEAD  # outputs a $(set) of commands
                 # which comprise the current changeset
unset KUNG;
SCHNICKENS="Schmoove"
$ foo branch edit-su-question  # creates a new branch with that name
$ foo merge master  # updates the current environment
                    # with any changes made to ~/.bashrc
                    # since it was branched or last merged
$ function fierce_fist_of_foo {
      cut -f 2 | xargs -I {} bash foo {} '>>' ffof.out;
  }
$ foo checkout master  # switches current branch
                       # to the one checked out by ~/.bashrc
$ foo commit -m "learned the fierce_fist_of_foo technique"
  # new interactive `bash` invocations now load that function

ให้ความคล้ายคลึงกับ git ชุดคำสั่งฉันถูกล่อลวงให้ใช้คำลามกหรือชื่ออัลบั้ม Smashing Pumpkins เป็นชื่อคำสั่งในตัวอย่างนี้ แต่ดีนะ foo มันคือ.

ฉันใช้ความเชื่อมั่นของฉันในความสามารถทำงานได้ของแนวคิดนี้ส่วนใหญ่เกี่ยวกับข้อสันนิษฐานที่ใช้ set จาก bash shell จะให้สคริปต์ที่สามารถเรียกคืนได้ซึ่งจะกู้คืนสภาพแวดล้อมนั้น ฉันไม่แน่ใจว่านี่เป็นเรื่องจริงทั้งหมดหรือไม่

อย่างไรก็ตาม มีบางอย่างที่ออกมาเป็นแบบนี้หรือเปล่า? คะแนนพิเศษหากใช้จริง git เป็นส่วนหนึ่งของการดำเนินการ เช่นฉันจะยอมรับคำตอบนั้น เนื่องจากคุณอยู่ในนั้นสำหรับจุดและทั้งหมด

คำตอบ:


1

ฉันแน่ใจว่าจะเกิดอะไรขึ้นกับบางสิ่งที่ใช้ env และ source.

 # "commit"
 env > saved_state

 # "checkout"
 source saved_state

ทุกอย่างอื่นจะเป็นน้ำตาลอินเตอร์เฟส หนึ่งสามารถแม้แต่วางสคริปต์ saved_state ไฟล์ในที่เก็บ git บางแห่งโดยอัตโนมัติ tig.

ฉันต้องยอมรับว่าฉันมีความหวาดกลัวต่อศักยภาพในการทำงานที่ยุ่งเหยิงและสับสนอย่างมากที่กระบวนการนี้อนุญาต


อืมบางทีมันอาจจะง่าย แม้ว่าคุณจะใช้ env คุณจะไม่ได้คำจำกัดความของฟังก์ชั่นหรือสิ่งอื่น ๆ ที่ฉันไม่แน่ใจ ยังต้องชำระเงินจะต้องทำ unset สำหรับ - เส้นตรงในส่วนต่าง ฉันจินตนาการการแยกวิเคราะห์ผลลัพธ์จาก set และการสร้างชุดของการมอบหมาย unset s, function คำแถลง ฯลฯ ที่จำเป็นต้องเรียกใช้การเปลี่ยนแปลงนั้น สิ่งอื่น ๆ เช่น shopt ควรรวมไว้ด้วย
intuited

สำหรับความยุ่งเหยิงและสับสน: ฉันหวังว่าจะพบสิ่งนี้เพื่อเปิดใช้งานเพื่อหลีกเลี่ยงความยุ่งเหยิงและเวิร์กโฟลว์ที่ทำให้สับสนที่ฉันต้องจัดหาและอัปเดตสคริปต์โดยการไพพ์ history เป็นกลุ่มและคัดลอกนิยามฟังก์ชันจากประวัติลงในสคริปต์ มันสมเหตุสมผลมากกว่าที่จะทำกับการสร้างต้นแบบของสภาพแวดล้อมเชลล์
intuited

@intuited ใช่มันใช้ไม่ได้กับฟังก์ชั่น บางทีสิ่งที่คุณต้องการจริงๆเป็นวิธีที่สะดวกในการจัดเก็บตัวอย่างแทนวิธีนี้ทำให้กระบวนการทำงานทั้งหมดของคุณมีเครื่องจักร VC บางอย่าง
Benjamin Bannier

1
การเก็บเกร็ดเล็กเกร็ดน้อยในการควบคุมเวอร์ชันด้วยสาขาที่เน้นงานดูเหมือนว่าฉันจะเป็นวิธีที่สะดวกที่สุดในการจัดเก็บ git จริง ๆ แล้วมีข้อ จำกัด เล็กน้อยในฐานะรูปแบบการทำงานหรือฐานการใช้งานด้วยเหตุผลสองประการ: 1) ชุดสาขาเป็นรายการเรียบซึ่งหมายความว่าคุณไม่มีวิธีที่สะดวกในการ 2) ไม่มีวิธีในการสร้าง "layered branch" ที่ผสานรวมกันมากกว่าหนึ่งสาขา ในเทอมการเขียนโปรแกรมกิ่งไม้เป็นแบบสแตติกและคอมมิทเป็นคอมไพล์
intuited
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.