- Git Merge Conflict को हल करने वाला एक टूल, जो फ़ाइल के भीतर के tree को समझकर दोनों पक्षों की ज़रूरतों को संतुलित तरीके से सुलझाता है
- नई languages को declarative तरीके से जोड़ा जा सकता है
- Git के default merge algorithm की जगह Mergiraf इस्तेमाल करने के लिए configure किया जा सकता है
merge, revert, rebase, cherrypick जैसे Git commands को बेहतर बनाता है
- या Git के मूल व्यवहार को बनाए रखते हुए conflict होने पर Mergiraf को manually बुलाया जा सकता है.
Mergiraf के लक्ष्य
- conflicts को छिपाना नहीं
- syntax-aware merge heuristics कभी-कभी ज़रूरत से ज़्यादा आशावादी होकर मान सकती हैं कि conflict हल हो गया है
- Mergiraf संदिग्ध स्थिति में फ़ाइल में conflict markers बनाए रखकर सबसे सुरक्षित स्थिति को संरक्षित करता है
- अगर उसने सभी conflicts खुद हल कर दिए हों, तो
mergiraf review command के ज़रिए mediation के काम की समीक्षा करने की सलाह देता है
- अगर merge गलत लगता है, तो
mergiraf report से उसे आसानी से report किया जा सकता है
- interactive उपयोग के लिए पर्याप्त तेज़
- giraffe 60 किलोमीटर प्रति घंटा की रफ़्तार से दौड़ सकता है
- फ़ाइल के branched versions को merge करना अक्सर बिना conflict के रोज़मर्रा में चुपचाप होता रहता है
- Mergiraf इतना तेज़ बनने की कोशिश करता है कि आपके काम में बाधा न आए
- दूसरे तरीकों के लिए खुला
- कई मामलों में line-based merge अच्छी तरह काम करता है और tree manipulation की ज़रूरत नहीं होती
- अगर line-based merge में conflict नहीं है, तो Mergiraf वही merge लौटाता है (बहुत तेज़)
- अगर line-based merge से duplicate keys बनती हैं, तो Mergiraf समस्या सुलझाने या conflict markers से उसे उभारने के लिए थोड़ा अतिरिक्त काम करता है
2 टिप्पणियां
जिराफ़ 60 किलोमीटर प्रति घंटा की रफ़्तार से दौड़ सकता है।
Hacker News टिप्पणियाँ
यह SemanticDiff जैसा काम कर रहा है, और tree-sitter तथा GumTree के उपयोग में समस्याएँ आ रही हैं
Mergiraf का architecture सेक्शन यह गहराई से समझाता है कि यह जटिल टूल कैसे काम करता है
giraffe चुनने का कारण यह है कि वह अपनी ऊँचाई के कारण दूर तक देख सकता है, और स्थलीय स्तनधारियों में उसका दिल सबसे बड़ा होता है
कुछ insertions में क्रम महत्वपूर्ण नहीं है, इस दावे को लेकर आलोचनात्मक रुख है
struct Foo; struct Bar;के बीच Leftimpl Foo { }insert करता है और Rightstruct Baz;insert करता है, तो कंप्यूटर अंतर को पहचान नहीं पाताGit merge driver के विकास को लेकर सकारात्मक रुख है
printहटाएँ, तो कोड अमान्य हो जाता हैजब टीमें समस्या के अनुसार base language को extend करती हैं, तो syntax-aware टूल्स को दिक्कत होती है
यह automatic formatting से जुड़े conflicts सुलझाने में मददगार हो सकता है
Mergiraf को आज़माने की योजना है, और इसे git-absorb के साथ उपयोग किया जा रहा है
Python support उपयोगी लगती है
language support सीमित है, लेकिन उम्मीद है कि और भाषाओं का support जोड़ा जाएगा