2010-08-05 17 views
12

यह हमेशा मेरे दिमाग के पीछे झुका हुआ है, इसलिए मुझे लगता है कि मैं आगे बढ़ सकता हूं और पूछ सकता हूं।विकी एकाधिक एक साथ संपादन कैसे संभालता है?

विकी एक ही सामग्री पर एकाधिक संपादन कैसे संभालता है?

मैं जो पूछ रहा हूं उसका एक सरल उदाहरण यहां दिया गया है। आइए मान लें कि एक पृष्ठ में निम्नलिखित सामग्री है:

मैं एक पृष्ठ हूं!

और अब मान लीजिए कि दो कि पृष्ठ को संपादित करने के लिए जाना है कि करते हैं।

व्यक्ति एक:

मैं एक पेज हूँ प्रत्येक व्यक्ति एक वाक्य कहते हैं!
मैं एक ही पृष्ठ में दूसरी वाक्य हूं!

व्यक्ति दो:

मैं एक पेज हूँ!
मैं दूसरी वाक्य हूं!

कल्पना कीजिए प्रत्येक व्यक्ति के दूसरे वाक्य पृष्ठ के विषय है कि प्रत्येक व्यक्ति में जोड़ना चाहते थे के बारे में एक समान रूप से प्रासंगिक लेकिन अलग तथ्य जा रहा है।

अब मान लीजिए कि उस व्यक्ति एक से पहले व्यक्ति को दो करता है उनके परिवर्तन प्रस्तुत करते हैं, लेकिन व्यक्ति को दो व्यक्तियों को किए गए परिवर्तनों को देखने का अवसर भी नहीं मिलता है। क्या व्यक्ति दो के परिवर्तन व्यक्ति के उन लोगों को ओवरराइट करते हैं जब वह आखिरकार सबमिट करते हैं?

क्या कोई diff/विलय एल्गोरिदम है जिसका उपयोग इस के लिए किया जा सकता है?

+0

हेहे समेकन प्रोग्रामिंग डेटा खतरे हमेशा मजेदार होते हैं :) –

उत्तर

8

मेरा मानना ​​है कि विकिपीडिया a fairly simple diff/merge एल्गोरिदम का उपयोग करता है, जैसा कि अधिकांश स्रोत कोड नियंत्रण सॉफ्टवेयर करता है।

आपके द्वारा दिए गए उदाहरण में, यह विलय विवाद त्रुटि उत्पन्न करेगा, क्योंकि यह जानने के लिए कोई रास्ता नहीं है कि अंतिम मार्कअप में कौन सी रेखा पहले आनी चाहिए। उनके परिवर्तनों को सहेजने वाला दूसरा व्यक्ति विलय त्रुटि पृष्ठ के साथ प्रस्तुत किया जाएगा जहां उन्हें संघर्ष को हल करने का तरीका चुनना होगा।

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

मेरा मानना ​​है कि यह समाधान स्टैक ओवरफ़्लो का उपयोग करता है। एसओ में एक अतिरिक्त सुविधा है जहां एक अजाक्स कॉल का उपयोग संपादक को सूचित करने के लिए किया जाता है यदि कोई अन्य व्यक्ति समाप्त होने से पहले पृष्ठ में आता है और संशोधित करता है।

1

एक लेन-देन-तंत्र हो सकता है जो फ़ाइल को दो बार संपादित करने से रोकने के लिए लॉकिंग का उपयोग करता है। विकिपीडिया पर file locking देखें।

2

यह विकी के स्वाद पर निर्भर करता है। कई दर्जन या सैकड़ों विकी क्लोन हैं। आम तौर पर दूसरे उपयोगकर्ता को "यह पृष्ठ किसी अन्य उपयोगकर्ता द्वारा संपादित किया गया है" त्रुटि संदेश प्राप्त होगा, और फिर उन्हें पृष्ठ को फिर से लोड करना होगा और उनके संपादन को फिर से करना होगा।

एक विकी निश्चित रूप से दो संस्करणों को विलय कर सकता है जैसे सबवर्सन जैसे वर्जन कंट्रोल सिस्टम। यदि आप यूनिक्स patch कमांड से परिचित हैं, तो इसमें भिन्न उपयोगकर्ता 2 के संपादन और एक पैच उत्पन्न करना शामिल होगा जिसे लागू किया गया है। पैच सफल हो सकता है या नहीं हो सकता है; आपके उदाहरण में एक मर्ज विवाद होगा, और इसलिए यह पुराना हो जाएगा "यह पृष्ठ किसी अन्य उपयोगकर्ता द्वारा संपादित किया गया है, आप खो देते हैं" त्रुटि संदेश।

1

विकी एकाधिक संपादन संभाल कैसे करता है?

यह विकी के कार्यान्वयन पर निर्भर करता है।

क्या कोई diff/merge एल्गोरिदम है जिसका उपयोग इस के लिए किया जा सकता है?

कोई भी विलय एल्गोरिदम जो आपकी आवश्यकताओं को पूरा करता है।

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

एक और विकल्प एक दृष्टिकोण को लागू करना होगा जो हमेशा विकी लेख को सहेजने की अनुमति देता है। इस मामले में आप व्यक्ति के परिवर्तनों को खो सकते हैं जबकि पहले दृष्टिकोण में आप व्यक्ति दो के परिवर्तन खो देंगे।

एक तीसरा दृष्टिकोण एक मर्ज विंडो में दोनों लेखों को एक साथ प्रस्तुत करना होगा। मुझे विकी के बारे में पता नहीं है जो इसका समर्थन करता है। अगर ऐसा होता तो मैं सोच रहा था कि क्या होगा यदि सह-संयोग से तीन (या अधिक) लोग एक ही दस्तावेज़ को संशोधित कर रहे हों।

तो यदि आप विकी का उपयोग कर रहे हैं, तो मैं सुझावों को छोटा रखने का सुझाव दूंगा।

यदि आप विकी को कार्यान्वित कर रहे हैं, तो आपके पास एक विकल्प है कि आप अपनी विकी प्रणाली को कैसे व्यवहार करना चाहते हैं।