2011-10-15 5 views
53

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

+0

गिट एक बहुत अच्छी संशोधन प्रणाली है, (और मर्कुरियल, एसवीएन जैसी चीजें) सख्ती से सॉफ्टवेयर विकास के उपयोग के लिए नहीं है। चूंकि आप लेटेक्स का उपयोग कर रहे हैं, जो पाठ्यचर्या है, तो गिट उपयोगी होगा यदि आप अपने थीसिस के संशोधन रखना चाहते हैं, और फिर संशोधनों की तुलना करें या पुरानी संशोधन वापस लें। गिट में बहुत सी शानदार विशेषताएं हैं, हालांकि मुझे लगता है कि बहुत अधिक उन्नत कार्यक्षमता वास्तव में आपके लिए लागू नहीं होगी (जैसे 'गिट-बिसेक्ट'), लेकिन संस्करण प्रबंधन आपकी गली है। यहां एक ट्यूटोरियल है: http://schacon.github.com/git/gittutorial.html – birryree

+21

यदि आप एकाधिक व्यक्तित्व विकार –

+1

प्राप्त करते हैं तो फोर्क कार्यक्षमता उपयोगी होगी मैक ओएस एक्स शेर में स्वचालित दस्तावेज़ संस्करण नियंत्रण एक लायक हो सकता है आपके लिए एक विकल्प है। – titaniumdecoy

उत्तर

37

कुछ तकनीकी कारणों से और सर्वोत्तम प्रथाओं रहे हैं। मैं दूसरे के लिए जा रहा हूं, खासकर अपने थीसिस और/या कागजात लिखने के लिए। तकनीकी के लिए, आप किसी भी गिट ट्यूटोरियल की जांच कर सकते हैं।

  1. अपनी थीसिस के लिए निर्देशिका संरचना को परिभाषित करें। आप इसे बाद में बदल सकते हैं, और परिवर्तनों को ट्रैक करने के लिए गिट का उपयोग कर सकते हैं। अच्छी संरचना होने से आपका जीवन आसान हो जाएगा।

  2. एकाधिक फ़ाइलों के साथ काम करें (लाटेक्स में इनपुट और/या इनपुट का उपयोग करें)। आप उन्हें अध्याय या खंडों से विभाजित कर सकते हैं। यह उन परिवर्तनों को ट्रैक करना आसान बना देगा जिनमें आपके थीसिस के विशिष्ट भाग शामिल हैं (उदा। git log content/introduction.tex)।

  3. केवल उन फ़ाइलों को ट्रैक करें जिन्हें आप स्पर्श करने जा रहे हैं, ऑटो-जेनरेट नहीं। proper .gitignore फ़ाइल बनाने से आपको बहुत मदद मिलेगी (लाटेक्स बहुत सारी काम करने वाली फाइलें उत्पन्न करता है)।

  4. कार्यक्रमों के रूप में, सूक्ष्म-कार्य करता है, यह है: एक विचार प्रति विचार/सुविधा/फिक्स/गतिविधि।

  5. हर बार जब आप प्रतिबद्ध करते हैं, तो सार्थक संदेश (उच्च स्तर) लिखें जो बताता है कि आप प्रत्येक परिवर्तन में क्या हासिल करने की कोशिश कर रहे थे। एक सप्ताह के बाद आपको याद नहीं होगा कि आपने क्या करने की कोशिश की थी।

  6. प्रत्येक गतिविधि/विचार/फिक्स का ट्रैक रखना [देखें (4) और (5)] यह जानकर बहुत उपयोगी हो सकता है कि आपने कितना किया है (git log का उपयोग करके)। आप git log के आधार पर अपने पर्यवेक्षक (ओं) के लिए अपनी अग्रिम रिपोर्ट लिख सकते हैं। और भी, आप अपने पर्यवेक्षक (वेब ​​इंटरफेस का उपयोग करके) के साथ भंडार साझा कर सकते हैं, और वे आपके थीसिस में जो कुछ भी कर रहे हैं, उसकी जांच कर सकते हैं। अगली बैठक के लिए, उन्हें पता चलेगा कि क्या उम्मीद करनी है (यह इस बात पर निर्भर करेगा कि आरएसएस का पालन करने पर आपके पर्यवेक्षक कितने शौकीन हैं)।

  7. गिट का उपयोग करना आपको एक अच्छे मूड में रखने के लिए उपयोगी होगा (कभी-कभी आपको लगता है कि आपने बहुत कुछ नहीं किया है, लेकिन हर बदलाव का ट्रैक रखने से आप चीजों को परिप्रेक्ष्य में रखने में मदद करेंगे)।

  8. आपके द्वारा भेजे जाने वाले प्रत्येक प्रगति रिपोर्ट के लिए, एक टैग बनाएं। अगली रिपोर्ट के लिए, आप दोनों संस्करणों को चेकआउट कर सकते हैं और latexdiff लागू कर सकते हैं। यह संशोधन के लिए सबमिट किए गए संस्करणों के बीच परिवर्तनों को ट्रैक करने के लिए उपयोगी होगा। इससे आपको यह जांचने में मदद मिलेगी कि आपने पिछली रिपोर्ट के लिए प्राप्त फीडबैक को संबोधित किया है या नहीं।

पिछले नहीं बल्कि कम से कम, मैं सुझाव है कि आप को पढ़ने के लिए "A successful Git branching model"। यह एक गिट वर्कफ़्लो पर एक बहुत छोटा लेख है। जब आप अपनी थीसिस लिखते हैं तो आप वही अवधारणाओं को लागू कर सकते हैं। उदाहरण के लिए, यदि आप एक प्रयोग लिख रहे हैं, तो आप इसके लिए एक शाखा बना सकते हैं, और इसे "तैयार" पर विलय कर सकते हैं। यदि आपको बाद में इसे फिर से देखना है, तो यह देखना आसान होगा कि इसमें क्या परिवर्तन शामिल थे और क्यों।

1

Git काम करेंगे। लेटेक्स प्रभावी ढंग से स्रोत कोड है, इसलिए यह बिल्कुल ठीक होना चाहिए।

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

यदि आप बस अपने थीसिस को संस्करण बनाना चाहते हैं, तो आप विवादित विलय मामले को भी प्रभावित करने की संभावना नहीं है (क्योंकि आप इसे केवल एक ही संपादन कर रहे हैं), अकेले कई इतिहास मामले दें।
मैं SVN, जो है, जबकि दो बातें मैं वर्णित करने के लिए बुरा, अपनी आवश्यकताओं फिट बैठता है और जानने के लिए आसान है की तरह कुछ सरल का उपयोग करेंगे।

इसके अलावा, Git फ़ोल्डर आप में हैं में एक .git फ़ाइल में सब कुछ संग्रहीत करता है। आप उस फ़ोल्डर हटाते हैं, तो आपके डेटा चला गया है।

+4

एसवीएन को एक सर्वर की आवश्यकता है, गिट पूरी तरह से उपयोगकर्ता की मशीन पर संभाला जा सकता है। यदि वह एकाधिक उपयोगकर्ताओं के साथ काम नहीं कर रहा है, तो वह उन तत्वों में कभी नहीं चलेगा जो आपकी आंखों में गिट को मुश्किल बनाते हैं। एक पूर्ण नौसिखिया के परिप्रेक्ष्य से, मुझे लगता है कि गिट वास्तव में काफी आसान होगा। –

+0

फ़ाइल: // प्रोटोकॉल को "सर्वर" के बिना संभाला जा सकता है।svn: // प्रोटोकॉल केवल विवर्तन distro के साथ आसान कार्यान्वयन योग्य चीज है। गिट * कभी * "थोड़ा आसान" के रूप में नहीं माना जा सकता है। आपने ** सभी ** कथन –

+3

में गलतियां की हैं, मुझे लगता है कि यह उत्तर दस्तावेजों को लिखने के लिए एक डीवीसीएस का उपयोग करने के साथ कई महत्वपूर्ण फायदे याद करता है, विशेष रूप से स्थानीय रूप से आपके भंडार का पूरा इतिहास, आसानी से मशीनों के बीच खींचने और खींचने के लिए , डिस्कनेक्ट ऑपरेशन इत्यादि इत्यादि। इस तरह के कार्य के लिए एसवीएन का उपयोग ऐसी दुनिया में जहां गिट और मर्कुरियल मौजूद है, एक बुरा विचार है, मुझे लगता है। –

2

एक DVCS में, एक "workflow" का अर्थ है:

  • मर्ज कार्यप्रवाह (जो आप अपने मामले में इतना आवश्यकता नहीं होनी चाहिए)
  • प्रकाशन कार्यप्रवाह (एक दूरस्थ रेपो को धक्का)

अपने स्थानीय .git रेपो के साथ, आप (जो काम में आ सकता है) पिछले संस्करणों के साथ तुलना करने में सक्षम हो जाएगा
लेकिन एक DVCS के लाभ है जब:

  • आप (backup purposes, a bundle के लिए या,) एक दूरस्थ रेपो के लिए एक धक्का के माध्यम से अपने काम को बचाने
  • आप (या "How to push a local git repository to another computer?" की तरह "git server between laptop and PC (MS Windows 7)" में) दो अलग पीसी के बीच अपने काम को सिंक्रनाइज़।
    फिर, एक बार सिंक हो जाने के बाद (git push के माध्यम से), आप अपना दूसरा पर्यावरण पूरी तरह ऑफलाइन ले सकते हैं, और फिर भी आपके रेपो के पूरे इतिहास से लाभ उठा सकते हैं।
    है वहीं अपने मामले में एक DVCS मायने रखती है।
17

जब मैं अपनी पीएचडी थीसिस लिख रहा था, ¹ मैंने दस्तावेज़ और उसके सभी आंकड़ों को प्रबंधित करने के लिए गिट का उपयोग किया, और मुझे बहुत खुशी है कि मैंने ऐसा किया, कम से कम नहीं क्योंकि यह एक स्क्रिप्ट लिखना आसान बनाता है graphs your progresss आप के साथ जा रहा के रूप में कर रहे हैं,) के प्रमुख फायदे मैंने पाया थे:

  • Git के बाद से एक वितरित संस्करण नियंत्रण प्रणाली है, यह कई मशीनों पर काम करने के लिए आसान है। यदि आपको अपने डेस्कटॉप मशीन पर अपने लैपटॉप से ​​नवीनतम संस्करण की आवश्यकता है, तो आप सीधे लैपटॉप से ​​pull कर सकते हैं और वहां काम कर सकते हैं। जब आप जाते हैं, तो आप अपने लैपटॉप पर जाते हैं और डेस्कटॉप मशीन से खींचते हैं।
  • यदि आप कई मशीनों पर काम करते हैं, तो आपके पास प्रभावी रूप से आपके काम का एक हालिया बैकअप (इसके पूर्ण इतिहास सहित) है, और यदि आप और बैकअप बनाना चाहते हैं तो आप कहीं और एक नए नंगे भंडार को दबा सकते हैं (VonC's answer अंक बाहर) ।
  • आप जानते हुए भी कि पिछले संस्करण से संग्रहित किए जाते अपने दस्तावेज़ में बड़े परिवर्तन कर सकते हैं, और यदि आप पुराने संस्करण प्राप्त करना चाहते हैं कि, ऐसा करने के लिए आसान है।
  • ऑफ़लाइन होने पर आपके भंडार में प्रतिबद्ध होने में सक्षम होना बहुत उपयोगी है, खासकर से इंटरनेट एक्सेस होने से इसे लिखना बहुत आसान हो जाता है;) मैंने उसी कागजात में उद्धृत सभी कागजात के पीडीएफ भी रखे हैं ऑफलाइन काम करना आसान बनाते हैं, हालांकि इसने भंडार को काफी हद तक बढ़ा दिया है, इसलिए कुछ इसके खिलाफ सलाह दे सकते हैं।

मुख्य सलाह है कि मैं दे चाहते हैं:

  • अक्सर प्रतिबद्ध हैं, और हमेशा यकीन है कि तुम git status के उत्पादन में खाली रखने के लिए, या तो, फ़ाइलें आप की जरूरत जोड़ने या .gitignore में सूचीबद्ध करके उनका बनाते हैं। आप महत्वपूर्ण फाइलों को अनचाहे रखने का जोखिम नहीं लेना चाहते हैं।
  • इतिहास पुनर्लेखन आदेशों का उपयोग कभी नहीं करें (उदा। git rebase), बस सुरक्षित होने के लिए और git reset --hard और git checkout -f जैसे गिट के खतरनाक आदेशों का कभी भी उपयोग न करें। कोई भी आपकी पूरी रिपोजिटरी कभी नहीं देखेगा, इसलिए आपको परवाह नहीं है कि इतिहास कैसा दिखता है - यह बहुत महत्वपूर्ण है कि आप ऐसा कुछ भी न करें जो आपके काम को खो सकता है (या इसे पुनर्प्राप्त करना अधिक कठिन हो)।
  • आप अपने संस्करणों के बीच मतभेदों को देख रहे हों, git diff करने के लिए --color-words विकल्प का उपयोग करें। अन्यथा, आपकी भिन्नता लाइन-आधारित होगी, और यदि आप लाटेक्स में एक अनुच्छेद को दोबारा सुधारते हैं, तो यह देखना मुश्किल होगा कि वास्तविक परिवर्तन क्या हैं - git diff --color-words लाइन-ब्रेक को अनदेखा करता है, और केवल पुराने शब्दों को लाल और नए में दिखाता है हरे रंग के शब्द

¹ ... LyX के साथ सीधे LaTeX में, लेकिन मुद्दे अनिवार्य रूप से वही हैं।

+0

प्रगति ग्राफ बहुत बढ़िया है, साझा करने के लिए धन्यवाद! मैं कुछ ऐसा करने की कोशिश कर रहा हूं लेकिन मैं 'दस्तावेज़ों में रेखाओं' के बजाय काम के आकार (बाइट या केबी जो भी) ट्रैक करना चाहता हूं। मुझे पता है कि 'गिट लॉग - लॉग-साइज' प्रतिबद्ध संदेश का आकार दिखाता है, लेकिन यह सुनिश्चित नहीं है कि संपूर्ण प्रतिबद्धता (फ़ाइलों सहित) का आकार कैसे देखें। कोई विचार यह कैसे करना है? एक बार फिर धन्यवाद! –

+0

ठीक है, ऐसा लगता है कि गिट ऐसा नहीं करता है! मैंने पाया सबसे नज़दीकी तरीका यह है: http://stackoverflow.com/questions/10845051/git-show-total-file-size-difference-between-two-commits/10847242#10847242 –

+0

क्या आप कृपया साझा कर सकते हैं कि आपको कैसे मिला संख्या एफ लाइनों के लिए वह साजिश? क्या यह लिखने के लिए एक आसान लिपि है? खुद को लिखने में सक्षम होने के लिए मुझे क्या जानने की ज़रूरत है? – Fazzolini

2

यह मुख्य रूप से सिर्फ एक टिप्पणी के रूप में होती है, लेकिन यह कुछ लंबा निकला, तो मैं एक जवाब के रूप में यह पोस्टिंग कर रहा हूँ।

मैं अपने स्नातकोत्तर प्रबंध के लिए darcs इस्तेमाल किया, और अतीत में परियोजनाओं प्रलेखन/लेखन के बहुत सारे के लिए आरसीएस, सीवीएस, और SVN उपयोग किया गया है। ये सभी टूल मूलभूत सुविधा प्रदान करते हैं जो मैं चाहता हूं - मेरे परिवर्तनों की समीक्षा करने की क्षमता, इतिहास में वापस जाएं, जब मैं कुछ नया लिखना शुरू करता हूं तो "पूर्ववत बिंदु" में चेक करें।

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

संबंधित मुद्दे