องค์กรมีการดำเนินการ "ผกผันยุ่งเหยิง" เช่นสำหรับการร่วมมือกับผู้ใช้ที่ไม่ใช่องค์กรองค์กรหรือไม่


10

ฉันต้องการเขียนบันทึกย่อของตัวเอง / ทดสอบ / รหัสในองค์กรแล้วใช้org-bable-tangleในการผลิตไฟล์ต้นฉบับ อย่างไรก็ตามไฟล์เหล่านี้ทั้งหมดอาจมีการควบคุมเวอร์ชันและด้วยเหตุนี้อาจมีการเปลี่ยนแปลงจากสภาพแวดล้อมนอกองค์กรของฉัน

ฉันต้องการที่จะมีsrcบล็อกจำนวนหนึ่งและยุ่งเหยิงเป็นไฟล์ต่าง ๆ กันซึ่งแต่ละอันจะส่งผลต่อการควบคุมเวอร์ชัน แต่ในเวลาเดียวกันสามารถ "แก้ให้หายยุ่ง" แต่ละไฟล์เหล่านี้กลับสู่ไฟล์ org ของฉันหลังจากดึงการเปลี่ยนแปลงใด ๆ จากการควบคุมเวอร์ชัน

มีวิธีที่ตรงไปตรงมาในการทำเช่นนี้? ตอนนี้ฉันกำลังพิจารณาที่จะเล่นกับinsert-file-contents


คุณช่วยยกตัวอย่างเล็กน้อยเกี่ยวกับสิ่งที่คุณขอให้ทำ ดูเหมือนว่าคุณมีบล็อกโค้ดในไฟล์ org หนึ่งไฟล์ขึ้นไปและคุณต้องการให้ไฟล์หรือไฟล์ที่สร้างจากยุ่งเหยิงของบล็อกเหล่านี้แยกออกเป็นบล็อกเดิมที่มีการเปลี่ยนแปลงในไฟล์ org
David D.

เป็นหลักเวิร์กโฟลว์จะเป็นเช่นนี้: (1) เขียนรหัสความรู้ในองค์กร (2) ทำให้รหัสนั้นยุ่งเหยิงกับไฟล์อย่างน้อยหนึ่งไฟล์ (3) คอมไพล์ยอมรับไฟล์เหล่านั้น (4) ทานอาหารกลางวัน (5) git ดึงการเปลี่ยนแปลงของเพื่อนร่วมงาน (6) "inverse-tangle" การเปลี่ยนแปลงเหล่านั้นกลับไปเป็นบล็อคโค้ดในไฟล์ org ของฉัน (7) ข้ามไป (1)
RJTK

คำตอบ:


6

ใช่org-babel-detangleแล้ว

org-babel-detangle เป็นฟังก์ชั่น Lisp ที่คอมไพล์ ob-tangle.elด้วย

(org-babel-detangle &optional SOURCE-CODE-FILE)

เผยแพร่การเปลี่ยนแปลงในไฟล์ต้นฉบับกลับสู่ไฟล์ต้นฉบับของ Org สิ่งนี้ต้องการให้บล็อกโค้ดนั้นยุ่งเหยิงด้วยความคิดเห็นลิงค์ซึ่งจะทำให้สามารถพบบล็อกโค้ดต้นฉบับได้

คุณต้องตั้งค่าcommentsอาร์กิวเมนต์ส่วนหัวเป็นlinkเพื่อให้ทำงานได้ตัวอย่างเช่น

#+begin_src ruby :tangle hello.rb :comments link
  puts 'hello'
#+end_src

จากนั้นใช้M-x org-babel-tangleเพื่อส่งออกบล็อครหัสไฟล์ใหม่ที่ชื่อhello.rbจะถูกสร้างขึ้นมันควรมีเนื้อหาที่คล้ายกันดังต่อไปนี้

~ $ cat hello.rb
# [[file:~/foo.org][No heading:1]]
puts 'hello'
# No heading:1 ends here
~ $

สุดท้ายเปิดhello.rbใน Emacs เปลี่ยนhelloเป็นhello worldและเรียกใช้M-x org-babel-detangleในhello.rbบัฟเฟอร์ของ ไฟล์ org จะได้รับการอัปเดต

#+begin_src ruby :tangle hello.rb :comments link
  puts 'hello world'
#+end_src

คุณช่วยให้แม่นยำมากขึ้น (หรือยกตัวอย่าง) เกี่ยวกับวิธีการใช้ฟังก์ชัน org-babel-detangle ฉันลองด้วยรหัสทับทิมของคุณเพื่อใช้ M x org-babel-detangle หลังจากพันกันเป็น hello.rb และแก้ไขรหัสเบา ๆ แต่ฉันมีข้อผิดพลาด "org-babel-detangle: อาร์กิวเมนต์ประเภทผิด: stringp, ไม่มี"
Lgen

@Lgen ฉันได้อัปเดตคำตอบของฉันแล้ว และอย่าลืมอ่านorg-babel-detangledocstring เพื่อทำความเข้าใจวัตถุประสงค์และการใช้งาน
xuchunyang

ขอบคุณสำหรับคำชี้แจงนี้ ฉันไม่เข้าใจสมมติฐานที่ว่าซอร์สโค้ดต้องได้รับการแก้ไขภายใน emacs เพื่ออนุญาตให้พันกันย้อนกลับ (ฉันใช้ตัวแก้ไขข้อความอื่นเพื่อแก้ไขซอร์สโค้ด) มันทำงานได้ตามที่คาดหวังในขณะนี้
Lgen

นี่เป็นคุณสมบัติที่ดี แต่ไม่ได้เป็นอย่างที่ฉันหวังไว้ ฉันไม่สามารถยอมรับความคิดเห็น # [[... ]] เพราะพวกเขาไม่ได้มีความหมายอะไรนอกจากตัวฉันเอง เป็นไปได้หรือไม่ที่จะใส่คำอธิบายประกอบบล็อกแหล่งที่มาเพื่อแยกจากไฟล์ทั้งหมดโดยไม่ต้องมีความคิดเห็นลิงค์? เป็นหลักเพียงinsert-file-contents?
RJTK

2

นอกจากนี้ยังมีorg-tanglesyncซึ่งมีวิธีการซิงค์ที่ง่ายกว่าorg-babel-detangle

เป็นหลักหากบล็อกถูกพันกันเป็นไฟล์ภายนอกดังนั้นทุกครั้งที่มีการตรวจสอบบล็อกไฟล์ภายนอกจะถูกตรวจสอบด้วยและหากตรวจพบ diff ผู้ใช้จะได้รับแจ้งให้ปฏิเสธหรือดึงการเปลี่ยนแปลงภายนอกในบล็อก src org

นอกจากนี้ยังมีฟังก์ชั่นในการประมวลผลบล็อกที่มีการพันกันโดยอัตโนมัติในบัฟเฟอร์ ฉันหวังว่ามันจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.