क्या Emacs में गैर-कोडर्स लिखने के लिए एक सरलीकृत संस्करण नियंत्रण प्रणाली उपयुक्त है?


28

मैं एक अकादमिक हूं और मुझे अपने लेखन को यथासंभव Emacs में करना पसंद है। एक प्रमुख बात जो मेरे लिए गायब है, वह है समय के साथ पाठ फ़ाइल में किए गए परिवर्तनों की आसानी से समीक्षा करने की क्षमता।

विकिपीडिया लेखों या Google दस्तावेज़ों पर नज़र रखने की विशेषताएँ, मैं जो चाह रहा हूँ, उसकी तर्ज पर हैं। मैंने git जैसे संस्करण नियंत्रण प्रणालियों के साथ खेला है क्योंकि वे Emacs द्वारा अच्छी तरह से समर्थित प्रतीत होते हैं, लेकिन मुझे उनका उपयोग करना कठिन लगता है और अधिक जटिल है तब मुझे क्या चाहिए। रिपॉजिटरी पंजीकृत करना, अंदर और बाहर की जाँच करना, यह सब सिर्फ परेशानी थी।

मुझे नहीं लगता कि वहाँ कोई पैकेज है जो मैं अपेक्षाकृत उपयोगकर्ता के अनुकूल तरीके से देख रहा हूं जो कार्यक्षमता प्रदान करता है?


3
मैं उपयोग करने की सलाह देता हूं gitऔर magit- github.com/magit/magit - क्योंकि आप पहले ही इसके साथ थोड़ा सा खेल चुके हैं। आप संभवतः कमांड-लाइन विकल्पों से खुद को परिचित करना चाहते हैं, ताकि आपको यह समझने में बेहतर हो कि क्या magitकर रहा है। Emacs नॉन-कोडर्स के लिए नहीं है , लेकिन आप इस दृश्य के आसपास लंबे समय तक रहे हैं कि इससे डरें नहीं - :) आप इसके साथ खेलने की कोशिश भी कर सकते हैं gist: github.com/defunkt/gist.el
lawlist

तकनीकी रूप से, vc-कमांड के समूह का लक्ष्य VCS के उपयोग की प्रक्रिया को सरल बनाना है। दुर्भाग्य से, वे उतने सहज नहीं हैं जितने अनुभव वाले उपयोगकर्ताओं को उनका अच्छा उपयोग करने की अनुमति नहीं है। दूसरी ओर, आपके द्वारा उल्लिखित सिस्टम बहुत सीमित होते हैं, ताकि कोई जल्दी से उन मांगों को विकसित कर सके जिन्हें वे संतुष्ट नहीं कर सकते हैं। gnu.org/software/emacs/manual/html_node/emacs/… बैकअप रखने का एक सरल तंत्र है, लेकिन ऊपर होने के कारण, मैं इसके बजाय कुछ वीसीएस का उपयोग करने के लिए सीखने की सलाह दूंगा
wvxvw

6
मैं एक अकादमिक भी हूं, और अपने कागजात के संस्करण नियंत्रण के लिए git/ का उपयोग करना शुरू कर दिया है magit। यह शुरू करने के लिए भयभीत दिखता है, लेकिन क) आपको इसे एक बार में सीखने की ज़रूरत नहीं है, और ख) प्रारंभिक सीखने की अवस्था से अधिक होने के बाद इसका उपयोग करना सुखद है। एक अच्छा वर्कफ़्लो आपको अपने लेखन कार्यों को अनुशासित करने में भी मदद करता है, क्योंकि यह आपको यह बताने के लिए प्रोत्साहित करता है कि आप क्या कर रहे हैं - जो कि लेखन परियोजना के विकास के समय को प्राप्त करने का एक शानदार तरीका है।
दान

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

यह मेरे दिमाग में रहा है, और ऑटो-कमिट कहानी का हिस्सा हो सकता है: प्रत्येक बचाए गए प्रोजेक्ट के
।ryuslash.org/

जवाबों:


43

मौजूदा संस्करण नियंत्रण प्रणालियों के साथ समस्या उनकी जटिलता इतनी अधिक नहीं है; यह तथ्य है कि वहाँ जानकारी का इतना धन है कि शुरुआती लोगों के लिए पेड़ों को देखने के लिए जंगल को देखना बहुत मुश्किल हो सकता है (यानी, यह पता लगाने के लिए कि वे क्या करते हैं और सीखने की ज़रूरत नहीं है जब वे बस शुरू कर रहे हैं )।

यह पोस्ट फ़ोकस करने जा रही है git, और यह वर्णन करती है कि इसे Emacs से ऐड-ऑन पैकेज का उपयोग करके कैसे नियंत्रित किया जाए magitहां , gitजटिल है, लेकिन जिस उद्देश्य का आप वर्णन करते हैं, उसके लिए आपको इसका उपयोग करने के लिए बहुत कुछ सीखने की जरूरत नहीं है।

मुझे लगता है कि तुम है जा रहा हूँ gitस्थापित (यदि आप नहीं करते हैं, इसे पाने के लिए यहाँ ), और आप सभी पर Emacs छोड़ने के लिए नहीं करना चाहती है।


स्थापित कर रहा है magit

magitgitEmacs के लिए एक फ्रंट-एंड है। यह MELPA से उपलब्ध है और आप इसे इसके माध्यम से स्थापित कर सकते हैं:

M-x package-install RET magit RET

बंद अवसर पर कि आपने अपने कॉन्फ़िगरेशन में एमईएलपीए को सक्षम नहीं किया है, आप निर्देश दे सकते हैं कि यहां कैसे करें

एक भंडार स्थापित करना

मान लें कि आपके पास ~/writingअपने होम डायरेक्टरी में एक फोल्डर है जिसमें एक या एक से अधिक दस्तावेज हैं जिन्हें आप संस्करण नियंत्रण में रखना चाहते हैं।

  1. फ़ोल्डर को Dired में खोलें: C-x d ~/writing RET
  2. एक खोल खोलें: M-x shell RET
  3. टाइप करें git initऔर हिट करें RET

बस। अब आपके पास एक gitभंडार है। इसे कहीं भी "रजिस्टर" करने की आवश्यकता नहीं है। gitएक वितरित संस्करण नियंत्रण प्रणाली है; परिवर्तनों को ट्रैक करने के लिए दूरस्थ सर्वर की आवश्यकता नहीं होती है।

अपने भंडार की स्थिति की जाँच करना

  1. अपने रिपॉजिटरी में फ़ाइलों को सूचीबद्ध करने वाले Dired बफर पर वापस जाएँ।
  2. करते हैं M-x magit-status RET

आप उस बफर के बारे में सोच सकते हैं जो आपके रिपॉजिटरी के साथ काम करने के लिए आपके "कंट्रोल पैनल" के रूप में सामने आता है। एक नए भंडार के लिए, यह कुछ इस तरह दिखता है:

नए बनाए गए रिपॉजिटरी के लिए मैगिट स्टेटस बफर

  • आप n( magit-goto-next-section) और p( magit-goto-previous-section) का उपयोग करके इस बफर के विभिन्न वर्गों के बीच नेविगेट कर सकते हैं ।

  • आप दबाकर बफर को ताज़ा कर सकते हैं g( magit-refresh)।

ध्यान दें कि आप किसी भी फ़ाइल या निर्देशिका से स्थिति बफ़र ला सकते हैं जो आपके द्वारा पहले सेट किए गए भंडार से संबंधित है।

फाइलें जोड़ना

जैसा कि आप स्क्रीनशॉट में देख सकते हैं, रिपॉजिटरी में तीन फाइलें हैं जो gitवर्तमान में ट्रैकिंग नहीं है। gitकिसी फ़ाइल को ट्रैक करना शुरू करने के लिए कहने के लिए, आपको इसे चरणबद्ध करना होगा: उस फ़ाइल पर बिंदु के साथ जिसे आप जोड़ना चाहते हैं, दबाएँ s। स्थिति बफ़र इस तरह दिखेगा:

फ़ाइल 1.txt जोड़ने के बाद मैगेट स्टेटस बफर

करने से

एक या अधिक फ़ाइलों के मंचन के बाद, आप उन्हें दबाकर प्रतिबद्ध कर सकते हैंc c । यह इस तरह दिखने वाला एक बफर लाएगा:

संदेश भेजने के लिए मैगिट बफर

शीर्ष पर अपना प्रतिबद्ध संदेश दर्ज करें और फिर C-c C-cप्रतिबद्ध को अंतिम रूप देने के लिए दबाएं । (गर्भपात करने के लिए, दबाएँ C-c C-k।)

स्थिति बफ़र इस तरह दिखेगा:

पहले कमिट के बाद मैगिट स्टेटस बफर

मंचन परिवर्तन

यदि आप किसी ट्रैक की गई फ़ाइल में परिवर्तन करते हैं, तो उन्हें स्थिति बफ़र में एक अलग अनुभाग ("अप्रतिबंधित परिवर्तन") में सूचीबद्ध किया जाएगा:

अस्थिर परिवर्तन (ढह गया)

फ़ाइल में आपके द्वारा किए गए परिवर्तनों की समीक्षा करने के लिए, उस पंक्ति पर जाएँ जो कहती है Modified file-1.txtऔर दबाएँ TAB:

अस्थिर परिवर्तन (विस्तारित)

इन परिवर्तनों को चरणबद्ध करने के लिए, दबाएँ s:

ट्रैक की गई फ़ाइल में परिवर्तनों के मंचन के बाद Magit स्थिति बफर

भूतकाल देखना

अंत में, यदि आप पिछले कमिट्स की समीक्षा करना चाहते हैं, तो आप दबा सकते हैं l l(यह दो लोअर-केस L का है):

मैगिट लॉग बफर

हमेशा की तरह, आप उस बफर को नेविगेट कर सकते हैं जो साथ आता है nऔर p। मैगिट इस बफर में सूचीबद्ध अलग-अलग कमिट से जुड़े बदलावों को एक अलग विंडो में दिखाएगा।

सारांश

शेल से:

  • git init: gitवर्तमान निर्देशिका में प्रारंभिक भंडार

gitभंडार से जुड़ी किसी भी फ़ाइल या निर्देशिका से :

  • M-x magit-status RET

स्थिति बफ़र से:

  • s नई फ़ाइलों या चरण परिवर्तनों को जोड़ने के लिए

  • c c मंचन परिवर्तन करने के लिए

    • C-c C-c कमिट करना
    • C-c C-k गर्भपात कराना
  • l l लॉग देखने के लिए

बस। :)


7
आपको git initशेल से आवश्यकता नहीं है । यदि आप M-x magit-statusकिसी भी गेट रिपॉजिटरी के बाहर कहीं कॉल करते हैं तो यह एक सेट करने की पेशकश करेगा। (लेकिन सेटअप के साथ समाप्त होने के बाद आपको स्थिति बफ़र लाने के लिए इसे फिर से कॉल करने की आवश्यकता होगी)।
wvxvw

आपने मुझे आश्वस्त किया है कि यह संस्करण नियंत्रण को एक और प्रयास देने के लायक है, और यह एक सहायक मार्गदर्शक होना चाहिए। धन्यवाद!
ब्रायन जेड

1
अब तक अच्छा लेकिन एक निराशा यह है कि जब मैं एक लंबे पैराग्राफ में कुछ शब्दों को बदलता हूं, तो पूरे संपूर्ण पैराग्राफ को एक मंचित परिवर्तन के रूप में उजागर किया जाता है। मैं वास्तव में लाइन द्वारा लाइन के बजाय शब्द द्वारा परिवर्तन शब्द देखना चाहता हूं।
ब्रायन जेड

3
@BrianZ आप इच्छित magit-diff-refine-hunkव्यवहार को प्राप्त करने के लिए चर को अनुकूलित कर सकते हैं। अपनी init-file में जोड़ें (setq magit-diff-refine-hunk t) या जोड़ें (setq magit-diff-refine-hunk 'all)C-h v magit-diff-refine-hunk RETविभिन्न सेटिंग्स का क्या अर्थ है, इसके बारे में अधिक जानकारी प्राप्त करने के लिए आप कर सकते हैं ।
itsjeyd

आपको जो भी चाहिए, उसके करीब जाने के लिए आपको मैगिट-डिफाइन-रिफाइन-हंक सेटिंग्स के साथ प्रयोग करना होगा। डिफ़ॉल्ट परिवर्तन कोड परिवर्तनों को ट्रैक करने के लिए बहुत अच्छे हैं, लेकिन जरूरी नहीं कि जब आपके पेशेवरों में परिवर्तन ट्रैक करना चाहते हैं। इससे पहले कि आप इसे सही समझें, थोड़ा समय लग सकता है, लेकिन यह संभव होना चाहिए और एक बार जब आप कर लेते हैं, तो मुझे संदेह है कि आप कभी भी पीछे नहीं हटेंगे!
टिम एक्स

11

इसके अलावा magit(as @ itsjeyd का जवाब ably दर्शाता है), आप भी कोशिश कर सकते हैं git-timemachine, जो gitसंस्करण नियंत्रण के तहत फ़ाइल के पुराने संस्करणों के माध्यम से त्वरित साइकिल चलाने की सुविधा प्रदान करता है । इसके जीथब पृष्ठ के अनुसार, निम्नलिखित डिफ़ॉल्ट कीबाइंडिंग आपको यह समझ देती है कि आप क्या कर सकते हैं:

  • p पिछले ऐतिहासिक संस्करण पर जाएँ
  • n अगले ऐतिहासिक संस्करण पर जाएँ
  • w वर्तमान ऐतिहासिक संस्करण के संक्षिप्त हैश की प्रतिलिपि बनाएँ
  • W वर्तमान ऐतिहासिक संस्करण की पूर्ण हैश की प्रतिलिपि बनाएँ
  • q टाइम मशीन से बाहर निकलें।

8

मुझे संदेह है कि आपको बैकअप मोड और / या बैकअप वॉकर बहुत दिलचस्प लगेंगे

दोनों का उद्देश्य एमएसीएस में मौजूदा बैकअप तंत्र का लाभ उठाना है, और अतिरिक्त सीसीएस की आवश्यकता के बिना, आपकी फ़ाइल इतिहास की बेहतर पहुंच और दृश्यता प्रदान करना है।


6

जैसा कि उल्लेख किया गया था, फ़ाइल के विभिन्न संस्करणों के लिए एक सरल तरीका Emacs बैकअप सिस्टम है।

(setq backup-directory-alist '(("." . "~/emacs-backups"))
      version-control 'numbered
      make-backup-files t
      delete-old-versions 'never)

यह गिने बैकअप के लिए एक समर्पित निर्देशिका का उपयोग करेगा, जो कभी भी स्वचालित रूप से नष्ट नहीं होगा। फिर आप C-u C-x C-sकिसी भी समय एक और संस्करण बनाने के लिए उपयोग कर सकते हैं ।

हालांकि, मुझे लगता है, इन संस्करणों को अलग करने के लिए इंटरफ़ेस का उपयोग करने के लिए तैयार कोई आसान नहीं है। तो आपको मैन्युअल रूप से उन बैकअप में से एक या दो को खोलना होगा और उन ediff-buffersपर और / या मूल बफर का उपयोग करना होगा।


1
आप उदाहरण के लिए, बैकअप का उपयोग कर सकते हैं: gnu.org/software/emacs/manual/html_node/emacs/… ( mअन्य फ़ाइल और प्रेस के लिए मूव पॉइंट वाली एक फ़ाइल चिह्नित करें =)।
wvxvw

2
यह सिद्धांत में एक आकर्षक विकल्प की तरह लग रहा था, लेकिन यह मुझे यादृच्छिक बैकअप से भरा एक जबरदस्त फ़ोल्डर देता है। जिन संस्करणों में मेरी दिलचस्पी है, वे पूरी तरह से दफन हैं। शायद किसी फ़ाइल के क्रमांकित बैकअप को मैन्युअल रूप से ट्रिगर करने का एक तरीका है, लेकिन केवल जब मैं चाहता हूं? अगर मैं किसी तरह उस बैकअप के लिए एक संक्षिप्त "कमिट मैसेज" भी संलग्न कर सकता हूं, तो यह एक बहुत अच्छा समाधान होगा। लेकिन अब के लिए, मुझे लगता है कि मैं सीख रहा हूँ मैजिट :)
ब्रायन जेड

2

मुझे अभी तक इस समाधान का उपयोग करने का अवसर नहीं मिला है, लेकिन आप कोरी डॉक्टरो और थॉमस गिदोन के फ्लैशबेक पर भी विचार कर सकते हैं । यहां बताया गया है डॉकट्रॉ इसके बारे में क्या कहना है :

मुझे ऐसा करने के लिए प्रेरित किया गया था, जिसने कई डिजिटल अभिलेखीयों के साथ चर्चा की, जिन्होंने शिकायत की कि, कम्प्यूटरीकृत युग से पहले, लेखकों ने प्रकाशनों के रास्ते पर एक श्रृंखला पूरा ड्राफ्ट तैयार किया, जो इरेज़र, एनोटेशन और इतने पर पूरा हुआ। ये अभिलेखीय सोना हैं, क्योंकि वे रचनात्मक प्रक्रिया को एक तरह से रोशन करते हैं जिससे अक्सर उन किताबों के बारे में पता चलता है जिनके बारे में हम ध्यान रखते हैं। इसके विपरीत, कई लेखक केवल एकल (या कुछ) डिजिटल फाइलों का उत्पादन करते हैं, जो प्रकाशन समय के लिए संशोधित किए जाते हैं, बिना रचना के पहले बिट और अंतिम मसौदे के बीच अंतरिम राज्यों के किसी भी वास्तविक व्यवस्थित रिकॉर्ड के बिना।

Flashbake दर्ज करें। हर 15 मिनट में, Flashbake किसी भी फाइल को देखता है जिसे आप इसे जांचने के लिए कहते हैं (मेरे पास इसकी सभी फिक्शन-इन-प्रोग्रेस, मेरी टूडू लिस्ट, जानकारी की उपयोगी बिट्स की मेरी फाइल और मेरी हाल की पुस्तकों के पूर्ण इलेक्ट्रॉनिक संस्करण हैं। ), और पिछले चेक के बाद से किए गए किसी भी बदलाव को रिकॉर्ड करता है, उन्हें सिस्टम-घड़ी पर वर्तमान समय क्षेत्र के साथ एनोटेट करते हुए, उस समय के मौसम को Google से प्राप्त किया जाता है, और आपके ब्लॉग के आरएसएस में उनके द्वारा आपके साथ अंतिम तीन सुर्खियां फ़ीड (मैं इसे "मैं कहां हूं, वहां क्या पसंद है, और मैं किस बारे में सोच रहा हूं?") के रूप में चिह्नित कर रहा हूं। यह आपके कंप्यूटर के अपटाइम को भी रिकॉर्ड करता है। भविष्य के संस्करण के लिए, मुझे लगता है कि आपके संगीत खिलाड़ी द्वारा हाल ही में गाए गए तीन गीतों का आनंद लेना मजेदार होगा।

कहा जा रहा है, मैं इसे बाहर का परीक्षण करने का अवसर कभी नहीं था, क्योंकि मैंने ऑर्ग-मोड में बहुत सारे सामान लिखना समाप्त कर दिया था, और बहुत सारी प्रोग्रामिंग कर रहा था, और ... अच्छी तरह से ... मैं उपयोग करने में बेहतर हो गया magit, " और अंत में, मैं बस की तरह ... इसे इस्तेमाल करने की जरूरत नहीं थी।

किसी भी मामले में, यह समाधान गैर-तकनीकी परियोजनाओं पर काम करने वाले लेखकों के उद्देश्य से था । आप पा सकते हैं कि यह आपकी आवश्यकताओं के अनुरूप हो सकता है।


1

हालांकि यह पूर्ण रूप से असंबंधित है emacs, फिर भी आप अपनी पाठ फ़ाइलों को ड्रॉपबॉक्स में सहेज सकते हैं और यदि आप एक समर्थक उपयोगकर्ता हैं तो आप विस्तारित संस्करण इतिहास का उपयोग कर सकते हैं । (आप encrytion चाहते हैं, आप को देखने के लिए चाहते हो सकता है SparkleShare ।)

फिर फ्लैशबेक है जो थोड़ा स्वचालित है ( यहां एक ट्यूटोरियल है )।

इसके अलावा यह कहीं और भी पूछा गया था , जिसके लिए आपको उपयोगी उत्तर मिल सकते हैं।


फ्लैशबेक बहुत आशाजनक लगता है। मैं निश्चित रूप से कोशिश करूँगा।
ब्रायन जेड

-1

आप ड्रॉपबॉक्स का उपयोग कर सकते हैं। यह Cx Cs को दबाने पर हर बार आपकी फ़ाइल का पुन: प्रयोज्य संस्करण बनाता है। मेरी पाठ फ़ाइलों के एन्क्रिप्शन के लिए मैं GNU प्राइवेसी गार्ड का उपयोग करता हूं, यह Emacs द्वारा समर्थित है।

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