2008-10-21 10 views
7

यदि दो उपयोगकर्ता एक ही विकी विषय को संपादित करते हैं, तो दूसरे उपयोगकर्ता के संपादन को पहले विलय करने के लिए विकीज़ (या समान सहयोगी संपादन सॉफ़्टवेयर में) में कौन सी विधियों का उपयोग किया गया है?समवर्ती संपादन विलय के लिए विकी किस तरह के तरीकों का उपयोग करते हैं?

  • ताला लगा पेज के लिए किसी भी अतिरिक्त खोना नहीं करता की आवश्यकता नहीं है:

    मैं एक समाधान है कि आप चाहते हैं।

  • यह अतिरिक्त "बॉयलरप्लेट" टेक्स्ट जोड़ सकता है यह इंगित करने के लिए कि अलग-अलग परिवर्तन किए गए थे।

(मैं एक समाधान है कि ढेर अतिप्रवाह के लिए this uservoice idea लागू करने के लिए इस्तेमाल किया जा सकता में दिलचस्पी रखता हूँ।)

उत्तर

3

TWiki स्वचालित रूप से Simultaneous Edits विलीन हो जाता है।

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

TWiki चेतावनी देगा अगर आप किसी ऐसे विषय को संपादित करने का प्रयास करते हैं जिसे कोई और संपादित कर रहा हो। यह चेतावनी भी देगा कि बचत के दौरान एक मर्ज की आवश्यकता होती है या नहीं।

उस सुविधा से कुछ documentation भी विकसित किया गया था, यह बताते हुए कि यह कैसे व्यवहार करेगा।

बुनियादी सिद्धांतों मैं mergeing एल्गोरिथ्म अप कोडिंग में इस्तेमाल किए गए:

  1. यदि यह संघर्ष मार्कर का उपयोग बिना मर्ज करने के लिए संभव है, ऐसा करते हैं।
  2. यदि संघर्ष मार्करों का उपयोग करके विलय करना संभव है, तो ऐसा करें।
  3. यदि मर्ज करना संभव नहीं है, तो सबसे हालिया चेकइन जीतता है।

यह ध्यान देने योग्य है कि TWiki एक निश्चित समय सीमा है और इस caused a bug when happening in conjunction with a merge भीतर एक ही उपयोगकर्ता द्वारा बाद में संशोधन गिर के लिए ओवरफ्लो स्टैक करने के लिए एक समान सुविधा है लायक है।

  1. उपयोगकर्ता A का संपादन करती विषय
  2. उपयोगकर्ता A बचाता राजस्व एन
  3. उपयोगकर्ता B संपादित करता है विषय, रेव एन ऊपर उठाता है
  4. उपयोगकर्ता एक फिर से संपादित करता है विषय, रेव एन
  5. उपयोगकर्ता एक को चुनता है परिवर्तन बचाता है; बचाता है कि परिवर्तन ReplceIfEditiedWithin के भीतर है? खिड़की, तो राजस्व संख्या
  6. उपयोगकर्ता B बचाता को बढ़ा नहीं करता है, कोड देखता है कि डिस्क पर राजस्व संख्या के बाद से वे संपादन तो मर्ज करने के लिए एक की जरूरत का पता लगाने नहीं करता शुरू कर दिया नहीं बदला है।

    तो मैं "पट्टों" की अवधारणा का आविष्कार:

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

TWiki.cfg में वर्णनात्मक टिप्पणी इस प्रकार है: पट्टा शब्दावली केवल डेवलपर्स के लिए, अंतिम उपयोगकर्ता नहीं है

# When a topic is edited, the user takes a "lease" on that topic. 
    # If another user tries to also edit the topic while the lease 
    # is still active, they will get a warning. The warning text will 
    # be different depending on whether the lease has "expired" or 
    # not i.e. if it was taken out more than LeaseLength seconds ago. 

ध्यान दें कि।

0

आप किसी उपयोगकर्ता की आईडी और साथ "ताला" एक अन्य डेटाबेस तालिका में लिख सकते हैं समय और "लॉक" को हटाएं (जो उन लोगों के लिए वास्तविक लॉक नहीं है जो समझ में नहीं आते हैं) जब व्यक्ति x मिनट को सहेजता है या उसके बाद करता है।

इस तरह, जब कोई संपादित करने का प्रयास करता है और कोई इसे पहले से कर रहा है। एक संदेश शेष समय के साथ प्रकट हो सकता है या सिर्फ यह कहकर कि कोई और वर्तमान में पोस्ट संपादित कर रहा है।

+0

चेतावनी है कि कोई अन्य उपयोगकर्ता संपादन कर रहा है। TWiki वास्तव में ऐसा कुछ करता है, इसलिए यह उपयोगकर्ता को चेतावनी दे सकता है कि एक विषय संपादित किया जा रहा है, यह सिर्फ इतना है कि यह उन्हें संपादित करने और सहेजने की अनुमति देता है और संपादन को मर्ज करने का प्रयास करेगा।मैं वास्तव में उन समाधानों की तलाश में हूं जो दो संपादनों को मर्ज करने का प्रयास करते हैं। –

2

अधिकांश विकी सॉफ़्टवेयर (जैसे मीडियाविकि) के साथ मेरा अनुभव यह है कि यह आपके द्वारा संपादित किए जा रहे दस्तावेज़ के संस्करण को ट्रैक करता है। यदि दस्तावेज़ आपके समय संपादन के दौरान बदलता है, तो आपका परिवर्तन अस्वीकार कर दिया जाता है और आपको मैन्युअल विलय करने के लिए कहा जाता है।

+0

मुझे लगता है कि यह एक विकल्प है। मैं वास्तव में ऐसे समाधान की तलाश में हूं जो स्वचालित रूप से दो संपादनों को विलीन कर देता है। क्या मीडियाविकि किसी भी तरह से मैन्युअल विलय को सुविधाजनक बनाता है? –

+1

मीडियाविकि आपको दोनों संस्करणों के पूर्ण पाठ के साथ आपके संस्करण और अंतिम संग्रहीत संस्करण के बीच अंतर दिखाता है। संभवतः, यह आपको मैन्युअल रूप से संघर्ष को हल करने में मदद करता है। संपादन के आधार पर, मुझे लगता है कि आपके काम को नोटपैड पर कॉपी करना और शुरू करना कभी-कभी आसान होता है। – 64BitBob

0

ठीक है, आप एक विलय एल्गोरिदम का उपयोग कर सकते हैं, जैसे कि स्रोत नियंत्रण सॉफ्टवेयर द्वारा उपयोग किया जाता है। पठनीयता को बनाए रखने में मदद के लिए, आप शायद अनुच्छेद स्तर पर परिवर्तनों की जांच करना चाहते हैं।

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

0

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

+0

TWiki समाधान आज सैकड़ों TWiki प्रतिष्ठानों में उपयोग में है, इसलिए मुझे संदेह है कि यह मामला है। अधिकांश समय यह बिना किसी संघर्ष के विलय करने में सक्षम होता है और जब यह नहीं होता है कि यह स्पष्ट हो जाता है कि क्या हुआ है और अलग-अलग सामग्री को देखने के बिना संपादन के लिए सभी सामग्री उपलब्ध कराती है। –

+0

स्टैक ओवरफ्लो पर एक साथ संपादन सामान्य नहीं हैं लेकिन जब वे होते हैं तो वे ठीक करने के लिए थकाऊ हो सकते हैं। (मैंने इसे अनधिकृत एफएक्यू पर देखा है।) इस समय सबसे बड़ा मुद्दा यह है कि जब तक आप ध्यान नहीं देते हैं तो आपको यह नहीं पता होगा कि यह हुआ है। ऐसा कुछ कम से कम आपको इससे निपटने के लिए मजबूर करेगा। –

+0

मुझे नहीं लगता कि आप समझते हैं कि एक संघर्ष क्या है: परिवर्तनों की एक पूरी जगह है जो किसी भी प्रकार के diff एल्गोरिदम के लिए एक संघर्ष नहीं होगी जो एक लेख के अर्थ में एक संघर्ष है। diff का उपयोग करके, आप लोगों को संघर्ष से निपटने के लिए मजबूर नहीं कर रहे हैं, लेकिन उन्हें मास्किंग कर रहे हैं। – Marcin

0

TWiki उत्तर की खोज में मैंने SynchroEdit पर भी ठोकर खाई जो SubEthaEdit शैली ब्राउज़र-आधारित एक साथ बहुउद्देशीय संपादक प्रतीत होता है। ऐसा लगता है कि इसे सितंबर 2007 के आसपास छोड़ दिया गया हो सकता है, लेकिन डाउनलोड के लिए स्रोत कोड उपलब्ध है।

0

प्रलेखन के लिए: DokuWiki संपादित पृष्ठों पर 15 मिनट का लॉक रखता है, जो आपके संपादन का पूर्वावलोकन करते समय नवीनीकृत हो जाता है (यानी आपके पूर्वावलोकन से 15 मिनट या संपादन शुरू करें)।