क्या गैर-ऑर्गन उपयोगकर्ताओं के साथ सहयोग करने के लिए org के पास कोई "उलटा-उलझन" ऑपरेशन है?


10

मैं अपने स्वयं के नोट्स / परीक्षण / कोड ओआरजी में लिखना चाहूंगा और फिर org-bable-tangleस्रोत फ़ाइलों का उत्पादन करने के लिए उपयोग करूंगा । हालाँकि, ये सभी फाइलें संस्करण नियंत्रण के अधीन हैं और इसलिए मेरे ऑर्गन वातावरण के बाहर से परिवर्तन के अधीन हैं।

मैं कई srcब्लॉक और फिर अलग-अलग फाइलों के एक समूह में उलझना चाहूंगा, जिनमें से प्रत्येक संस्करण नियंत्रण के लिए प्रतिबद्ध होगा। लेकिन एक ही समय में, संस्करण नियंत्रण से किसी भी परिवर्तन को खींचने के बाद इन फ़ाइलों में से प्रत्येक को "ओआरजी फ़ाइल" में वापस करने में सक्षम हो।

क्या ऐसा करने का कोई सीधा तरीका है? मैं अब साथ खेलने पर विचार कर रहा हूंinsert-file-contents


क्या आप जो करने को कह रहे हैं, उसका थोड़ा उदाहरण दे सकते हैं? ऐसा लगता है कि आपके पास एक या अधिक ओआरजी फाइलों में कोड ब्लॉक हैं और आप चाहते हैं कि इन ब्लॉकों की उलझन से उत्पन्न फाइल या फाइलें ऑर्गन फाइलों में बदलाव के साथ मूल ब्लॉकों में जुदा हों।
डेविड डी।

मूल रूप से वर्कफ़्लो इस तरह होगा: (1) ऑर्ग में कुछ साक्षर कोड लिखें। (2) उस कोड को एक या एक से अधिक फाइलों में उलझाना। (3) git उन फाइलों को कमिट करता है। (४) दोपहर का भोजन (५) मेरे सहयोगी के बदलावों को खींचता है। (6) "उलटा-उलझन" जो मेरी ऑर्ग फाइल में कोड ब्लॉक में वापस बदल जाता है। (() गोटो (१)।
RJTK

जवाबों:


6

हाँ, यह है org-babel-detangle

org-babel-detangle एक इंटरैक्टिव संकलित लिस्प फ़ंक्शन है 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.rbEmacs, परिवर्तन में helloकरने के लिए hello world, और चलाने M-x org-babel-detangleमें hello.rbके बफर। ओआरजी फाइल को अपडेट किया जाएगा

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

क्या आप इस org-babel-detangle फ़ंक्शन का उपयोग करने के तरीके के बारे में अधिक सटीक (या एक उदाहरण दे सकते हैं)। मैंने hello.rb पर टेंगल करने और हल्के से कोड को संशोधित करने के बाद M x org-babel-detangle का उपयोग करने के लिए आपके रूबी कोड के साथ प्रयास किया, लेकिन मेरे पास एक त्रुटि है "org-babel-detangle: गलत प्रकार का तर्क: stringp, nil"।
लेजन

@ मैंने अपना जवाब अपडेट कर दिया है। और org-babel-detangleउद्देश्य और उपयोग को समझने के लिए डॉक्सस्ट्रिंग पढ़ना न भूलें ।
xununyang

इस स्पष्टीकरण के लिए धन्यवाद। मैं इस धारणा को नहीं समझ पाया था कि रिवर्स टेंगलिंग की अनुमति देने के लिए स्रोत कोड को emacs के भीतर संपादित किया जाना था (मैं स्रोत कोड को संशोधित करने के लिए किसी अन्य पाठ संपादक का उपयोग कर रहा था)। यह अब उम्मीद के मुताबिक काम करता है।
लेजेन

यह अच्छी सुविधा है, लेकिन मुझे जो ढूंढने की उम्मीद थी वह काफी नहीं है। मैं वास्तव में # [[...] टिप्पणी नहीं कर सकता क्योंकि उनके पास खुद के अलावा कुछ भी नहीं है। क्या लिंक टिप्पणी की आवश्यकता के बिना पूरी फ़ाइल से अलग करने के लिए स्रोत ब्लॉक को एनोटेट करना संभव है? अनिवार्य रूप से बस insert-file-contents?
आरजेटीके

2

इसमें org-tanglesync भी है , जिसकी तुलना में सिंक्रनाइज़ करने की बहुत सरल विधि हैorg-babel-detangle

अनिवार्य रूप से अगर किसी ब्लॉक को बाहरी फ़ाइल में टँगा किया जाता है, तो हर बार उस ब्लॉक को संपादित करने के लिए बाहरी फ़ाइल की भी जाँच की जाती है, और यदि कोई अंतर पाया जाता है, तो उपयोगकर्ता को ऑर्गन src ब्लॉक में बाहरी परिवर्तनों को अस्वीकार करने या खींचने के लिए प्रेरित किया जाता है।

यह भी एक बफर में सभी पेचीदा ब्लॉकों को स्वचालित रूप से संसाधित करने के लिए कार्य करता है। मुझे उम्मीद है यह मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.