Git 获取特定分支的标记
使用:是否有办法只获取特定分支的(轻量级和带注释的)标记 由于我主要对主分支的标记感兴趣,类似于Git 获取特定分支的标记,git,go,go-git,Git,Go,Go Git,使用:是否有办法只获取特定分支的(轻量级和带注释的)标记 由于我主要对主分支的标记感兴趣,类似于git-tag--merged的东西也就足够了 像Tags()..这样的基本go-git方法似乎不可能实现这一点,但下面的代码实现了这一目标: 读取整个分支的提交哈希 读取存储库的所有标记 选中并仅打印哈希位于分支中的标记 注意:尚未尝试使用带注释的标记。但应该很接近 主程序包 进口( “日志” “github.com/src-d/go-billy/memfs” “gopkg.in/src-d/go-
git-tag--merged
的东西也就足够了
像
Tags()
..这样的基本go-git方法似乎不可能实现这一点,但下面的代码实现了这一目标:
主程序包
进口(
“日志”
“github.com/src-d/go-billy/memfs”
“gopkg.in/src-d/go-git.v4”
“gopkg.in/src-d/go-git.v4/peoping”
“gopkg.in/src-d/go-git.v4/pipping/object”
“gopkg.in/src-d/go-git.v4/storage/memory”
)
func getbranchhash(repo*git.Repository,branchName字符串)(散列映射[pipeoping.Hash]bool,err error){
//获取分支引用名称
分行,错误:=回购分行(“主分行”)
如果错误!=零{
返回
}
//获取引用名称的引用
ref,err:=repo.Reference(branch.Merge,true)
如果错误!=零{
返回
}
//从分支引用提交中检索日志
//(默认顺序为深度优先)
日志,err:=repo.Log(&git.LogOptions){
From:ref.Hash(),
})
如果错误!=零{
返回
}
延迟日志。关闭()
//收集所有散列的通道
chHash:=make(chan.Hash)
chErr:=制造(chan错误)
go func(){
err=logs.ForEach(func(commit*object.commit)(err error){
chHash啊,你的问题是关于go git
?是的,很抱歉误解了…支持每-tag
操作。git tag--merged
不起作用吗?没有“分支标记”这样的东西.标记只是标记:它们只是某些特定提交的名称。然而,分支这个词是不明确的:请参阅-如果您指的是分支名称,那么这些名称再次只是特定提交的名称,但这些名称会随着时间的推移而变化,也就是说,更改它们所指的特定提交。也就是说,请注意,git标记--merged
意味着:对于每个标记,检查标记是否标识了作为当前提交祖先的提交;如果是,则打印该标记,使其仅为:for t:=range tags{if t.is_祖先(当前){print t t}}}
(如何将其映射到git,我不确定)注意,Git自己的is祖先测试认为任何提交H都是H的祖先:它实际上是一个preferences或equals操作符。