/ / libgit2: लाने के बाद विलय और प्रतिबद्ध कैसे करें? - सी, libgit2

libgit2: लाने के बाद विलय और प्रतिबद्ध कैसे करें? - सी, libgit2

मैं रिमोट से लाने में कामयाब रहा हूं, और मैं स्थानीय मास्टर शाखा में किए गए परिवर्तनों को प्राप्त करने के लिए नीचे दिए गए कोड को चला रहा हूं।

    git_annotated_commit * fetchhead_commit;

git_annotated_commit_lookup(&fetchhead_commit,
repo,
oid
);

git_merge(repo,&fetchhead_commit,1,NULL,NULL);

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

रिमोट से इतिहास को संरक्षित करने के लिए विलय किए गए परिवर्तनों की "उचित" प्रतिबद्धता कैसे करनी चाहिए?

संपादित करें: तेजी से आगे बढ़कर थोड़ा आगे हो गया, लेकिन फिर भी अगर स्थानीय काम करता है तो ये आने वाली विलय के बाद खो जाते हैं। स्थानीय परिवर्तन गुम नहीं होते हैं, लेकिन विलय के बाद चरणबद्ध होते हैं और फिर से प्रतिबद्ध होते हैं।

आप यहां मेरा कोड देख सकते हैं: https://github.com/fintechneo/libgit2/blob/master/jsbuild/jslib.c

विलय में हो रहा है fetchead_foreach_cb फ़ंक्शन जिसे फिर से बुलाया जाता है jsgitpull

और रिकॉर्ड के लिए यह हैक वेब ब्राउज़र में काम करता है अगर कोई आश्चर्य करता है कि ईएमएसस्क्रिप्ट सामग्री क्या है।

उत्तर:

उत्तर № 1 के लिए 1

के साथ विलय प्रतिबद्ध बनाएँ git_commit_create। विलय प्रतिबद्धता में दो माता-पिता होना चाहिए। एक वर्तमान हेड प्रतिबद्ध है। दूसरा वही एनोटेटेड प्रतिबद्ध है जिसे आपने विलय किया है git_merge (उदाहरण के लिए fetch सिर)।