2009-07-29 6 views
26

तो मैं एक विकि प्रकार की साइट पर काम कर रहा है के लिए एल्गोरिदम मर्ज करें। जो मैं तय करने की कोशिश कर रहा हूं वह यह है कि एक ऐसे लेख को विलय करने के लिए सबसे अच्छा एल्गोरिदम है जो एक साथ दो उपयोगकर्ताओं द्वारा संपादित किया जा रहा है।थ्री वे पाठ

अब तक मैं दस्तावेजों अगर दो असंबंधित क्षेत्रों संपादित कर रहे हैं विलय की विकिपीडिया के विधि का उपयोग पर विचार कर रहा हूँ, लेकिन दूर करता है, तो दो प्रतिबद्ध संघर्ष बड़े परिवर्तन फेंक।

मेरा प्रश्न इस प्रकार है: यदि मेरे पास मूल आलेख है, और इसमें दो बदलाव हैं, तो उन्हें मर्ज करने के लिए सबसे अच्छा एल्गोरिदम क्या हैं और फिर उठने के साथ संघर्षों का सामना करते हैं?

उत्तर

29

बिल रिचर का उत्कृष्ट पेपर "A Trustworthy 3-Way Merge" वाणिज्यिक एससीएम पैकेजों के लिए तीन तरह के विलय और चालाक समाधानों के साथ कुछ सामान्य गॉथस के बारे में बात करता है।

3-जिस तरह से मर्ज स्वचालित रूप से सभी परिवर्तनों प्रत्येक संस्करण से (जो ओवरलैपिंग नहीं कर रहे हैं) लागू होगी। यह चाल स्वचालित रूप से जितना संभव हो उतना ओवरलैपिंग क्षेत्रों को संभालने के लिए है।

+0

कूल कागज, लिंक के लिए धन्यवाद! – icco

+0

मैं URL बदल क्योंकि एक तुम दिया था अब 404. मुझे आशा है कि यह अभी भी एक ही लेख का जिक्र किया गया है। – ChrisW

+0

हाँ, यह है। इसे अद्यतन करने के लिए धन्यवाद! –

2

सच कहूं, मैं diff3 पर भरोसा था। यह हर यूनिक्स डिस्ट्रो पर काफी अधिक है, और आप यह सुनिश्चित करने के लिए विंडोज़ के लिए एक .EXE बना सकते हैं और बंडल कर सकते हैं कि यह आपके उद्देश्यों के लिए है।

9

वहाँ, स्यूडोकोड साथ, इस पत्र में diff3 एल्गोरिथ्म के एक औपचारिक विश्लेषण है: http://www.cis.upenn.edu/~bcpierce/papers/diff3-short.pdf

यह शीर्षक है "Diff3 की एक औपचारिक जांच" और संजीव खन्ना, केशव कुणाल, और बेंजामिन सी पियर्स द्वारा लिखित याहू से