如何从终端使用Gitlab的问题?

9nvpjoqh  于 2023-04-04  发布在  Git
关注(0)|答案(5)|浏览(124)

我知道你可以通过安装ghi在命令行上使用Github issues。

但是,在Gitlab上,有没有类似的工具可以列出/添加/删除/编辑仓库的问题?

shstlldc

shstlldc1#

GLab似乎是一个很好的选择。
GLab是一个用Go(golang)编写的开源Gitlab Cli工具,可以帮助从命令行无缝地使用Gitlab。处理问题,合并请求,直接从CLI监视运行管道等功能。
https://github.com/profclems/glab

kkbh8khc

kkbh8khc2#

Itxaka/pyapi-gitlab有一个类似的 Package 器(用python,而不是ruby)

git = gitlab.Gitlab(host=host)
git.login(user=user, password=password)
git.getall(git.getprojects)

git.getissues(page=1, per_page=40)

在Ruby中,这将是NARKOZ/gitlab

# set an API endpoint
Gitlab.endpoint = 'http://example.net/api/v3'
# => "http://example.net/api/v3"

# set a user private token
Gitlab.private_token = 'qEsq1pt6HJPaNciie3MG'
# => "qEsq1pt6HJPaNciie3MG"

# configure a proxy server
Gitlab.http_proxy('proxyhost', 8888)
# proxy server w/ basic auth
Gitlab.http_proxy('proxyhost', 8888, 'proxyuser', 'strongpasswordhere')

# list projects
Gitlab.projects(per_page: 5)

它可以解决问题。

h4cxqtbf

h4cxqtbf3#

看起来有人为gitlab的API写了一个CLI工具:
https://python-gitlab.readthedocs.io/en/stable/cli.html

pip3 install --user python-gitlab
$EDITOR ~/.python-gitlab.cfg

gitlab主站点的配置示例,但您也可以添加自己的本地示例:

[global]
default = gitlab
ssl_verify = true
timeout = 5

[gitlab]
url = https://gitlab.com
private_token = <insert API token here>
api_version = 4

确保路径包含/home/<username>/.local/bin/
然后从你的gitlab repo中:

gitlab issue list

我不确定它是否像ghi一样完整,但它看起来支持大量的API。

rjzwgtxy

rjzwgtxy4#

回答我自己的问题。
起初我以为ghi也可以在Gitlab上使用,但后来我发现了下面的ghi问题,其中ghi的所有者说目前它不支持Gitlab。
以防你花时间搜索Ghi和Gitlab用法之间的兼容性。
我并不反对这个功能(如果简单介绍的话),但是G.H.I.绝对是围绕GitHub Issues构建的。我也不是GitLab的用户,所以增强功能必须来自其他人。
https://github.com/stephencelis/ghi/issues/135

q35jwt9p

q35jwt9p5#

这个答案并没有回答你的全部问题,只是一小部分。
要以编程方式创建问题,您可以使用“通过URL新建问题”功能。
它允许您通过带有参数的URL创建带有标题和描述的问题(如果需要,使用模板)。
URL如下所示:

https://gitlab.instance.url/group_name/project_name/issues/new?issue[title]=Your%20issue%20title&issue[description]=Issue%20description

我把它 Package 在一个绑定到CTRLALTT的AHK快捷方式中,为了完整起见,我还引入了URLEncode函数。

;; Create issue on Gitlab tasks list with selected text as issue title
^!t::
ClipSaved := ClipboardAll
Sleep, 300
Send ^c
title := URLEncode(clipboard)
mainURL := "https://gitlab.instance.com/gitlab/group_name/project/issues/new?issue[title]="
fullURL := mainURL title
Run, %fullURL%
Clipboard := ClipSaved
return

UrlEncode( String )
{
    OldFormat := A_FormatInteger
    SetFormat, Integer, H

    Loop, Parse, String
    {
        if A_LoopField is alnum
        {
            Out .= A_LoopField
            continue
        }
        Hex := SubStr( Asc( A_LoopField ), 3 )
        Out .= "%" . ( StrLen( Hex ) = 1 ? "0" . Hex : Hex )
    }

    SetFormat, Integer, %OldFormat%

    return Out
}

相关问题