/ / जाओ में libgit2 का उपयोग कर गिट लॉग कमांड कैसे चलाएं? - गिट, जाओ, libgit2

जाओ में libgit2 का उपयोग कर गिट लॉग कमांड कैसे चलाएं? - गिट, जाओ, libgit2

मुझे जाने से गिट लॉग कमांड चलाने में दिलचस्पी है। मैं देखता हूं कि सी # संस्करण के लिए इसका समर्थन है (https://github.com/libgit2/libgit2sharp/wiki/git-log)। क्या करता है जाओ संस्करण समान गिट लॉग कमांड के लिए भी समर्थन करते हैं? मैंने "क्वेरी" और "फ़िल्टर" कीवर्ड के लिए कुछ त्वरित खोज की और मुझे कुछ भी नहीं मिला।

उत्तर:

जवाब के लिए 2 № 1

RevWalk जो आप खोज रहे हैं

repo, err := git.OpenRepository("path/to/repository")
log.Println(err)

w, err := repo.Walk() // returns a RevWalk instance for this repo
log.Println(err)

आप लौटाए गए कॉन्फ़िगर कर सकते हैं RewWalk उदाहरण।

err = w.PushHead() // instruct to start from the head commit
log.Println(err)

यदि आप एक अलग शाखा लॉग करना चाहते हैं तो आप इसका उपयोग कर सकते हैं PushRef बजाय। लॉग के शुरुआती और समापन बिंदु को कॉन्फ़िगर करने के लिए अन्य कॉन्फ़िगरेशन विकल्प हैं। उन लोगों के लिए दस्तावेज देखें।

उपयोग दोहराएं प्रतिबद्ध सूची के माध्यम से जाने के लिए विधि। आपको इसे एक ऐसा फ़ंक्शन पारित करने की आवश्यकता है जिसे सूची में प्रत्येक प्रतिबद्धता के लिए बुलाया जाएगा।

w.Iterate(func(c *git.Commit) bool {
fmt.Println(c.Message())
return true  // return false when you want to stop iterating
})

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

आप कम से कम एक गिट लॉग का अनुकरण कर सकते हैं Commit.Parent तरीका जो एक प्रतिबद्धता के माता-पिता तक पहुंचने की अनुमति देता है (से commit.go)।

इसके अलावा, मुझे गिट लॉग करने के लिए सीधी कॉल नहीं मिली।