2011-10-14 3 views
8

के लिए संस्करण नियंत्रण ऐसा लगता है कि किसी ने पहले ही यह किया होगा, लेकिन मुझे वह अंतिम उत्पाद नहीं मिल रहा है जिसे मैं ढूंढ रहा हूं।गद्य

टेक्स्ट के लिए संस्करण नियंत्रण प्रणाली का उपयोग करना श्रमिक है। आपको प्रत्येक वाक्य के अंत में और यहां तक ​​कि लंबे वाक्य के बीच में न्यूलाइन वर्णों की आवश्यकता है। गिट स्रोत को देखते हुए, ऐसा लगता है कि '\n' की जांच करने वाले कुछ दिनचर्या बदलकर, गिट (या कोई अन्य संस्करण नियंत्रण प्रणाली) '\n' या पैटर्न '\\.\s' से मिलान करना संभव होना चाहिए। हालांकि, यह एक कार्य है जिसे सावधानी से किया जाना चाहिए, या मैं चीजों को बहुत बुरी तरह से तोड़ सकता हूं।

क्या कोई ऐसे व्यक्ति को जानता है जो पहले ही ऐसा कर चुका है? या कोई अन्य विकल्प?

धन्यवाद!

+1

मैं आपको इसके लिए मीडियाविकि का उपयोग करने का सुझाव दूंगा। यह इस तरह की सेवा (संस्करण गद्य, मेरा मतलब है) एक आकर्षण की तरह करता है। यह निश्चित रूप से एक PHP अनुप्रयोग है, लेकिन यह काम के लायक है। गद्य के लिए – brandizzi

+0

गिट काम करता है। गिट को छोटी लाइनों या अतिरिक्त लाइन ब्रेक की आवश्यकता नहीं होती है जहां आप उन्हें स्वाभाविक रूप से नहीं लेते हैं। –

+0

क्या आपकी चिंता साफ अंतर प्रदर्शित करती है, या कुशल संपीड़न है? बाद में गिट ठीक होना चाहिए। यह शब्द diffs भी कर सकता है, जो आपके कई मुद्दों का ख्याल रखेगा, और यदि आप चाहें तो यह बाहरी difftool को भी अलग कर सकता है। – Cascabel

उत्तर

3

कोई संस्करण नियंत्रण प्रणाली गद्य को संभालने में सक्षम होना चाहिए। प्रश्न यह है कि यह कितनी कुशलता से ऐसा कर सकता है।

git diff कमांड फ़ाइल के दो संस्करणों के बीच अंतर प्रदर्शित करने के लिए diff -u जैसे कुछ का उपयोग करता है। अगर फ़ाइल में बहुत लंबी लाइनों के साथ पाठ होता है (यानी, '\n' वर्णों के बीच कई वर्ण), तो अंतरों को अर्थपूर्ण रूप से प्रदर्शित करने में कुछ कठिनाई हो सकती है; यह केवल एक ही चरित्र परिवर्तन के साथ दो 5000-वर्ण रेखाएं दिखा सकता है।

लेकिन यह जरूरी नहीं है कि gitस्टोर फ़ाइलों को संग्रहीत करता है। मैं गिट के आंतरिक भंडारण प्रारूप से गहराई से परिचित नहीं हूं, लेकिन मेरी समझ यह है कि यह बाइनरी फाइलों के साथ उचित रूप से अच्छी तरह से काम करता है, जिसमें '\n' वर्णों वाले डेटा के कई मेगाबाइट हो सकते हैं।

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

ध्यान दें कि git diff --word-diff कम से कम आंशिक रूप से संस्करणों की तुलना करने की समस्या के आसपास काम करना चाहिए।

+0

बहुत उपयोगी 'गिट diff --word-diff' के बारे में एक नोट के रूप में - यह सुविधा v1.7.2 में जोड़ा गया था, लेकिन पिछले संस्करणों में आप' गिट diff --color-words' का उपयोग कर सकते हैं। –

+0

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