如何使用API(curl)编辑github问题?(特别是:关闭)

如何使用API(curl)编辑github问题?(特别是:关闭),api,curl,github,Api,Curl,Github,我计划将在另一个(国产)系统中跟踪的几百个bug迁移到GitHub的发布系统中。这些bug中的大多数都是在过去关闭的。我可以使用github的API创建问题,例如 curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues -d '{ "title": "test", "body": "the body" }' 。。。然而,这将给我留下一大堆悬而未

我计划将在另一个(国产)系统中跟踪的几百个bug迁移到GitHub的发布系统中。这些bug中的大多数都是在过去关闭的。我可以使用github的API创建问题,例如

curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues -d '{
    "title": "test",
    "body": "the body"
}'
。。。然而,这将给我留下一大堆悬而未决的问题。如何关闭这些?我尝试在创建时关闭,例如:

curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues -d '{
    "title": "test",
    "body": "the body",
    "state": "closed"
}'
。。。但结果是产生了一个未决问题(即“状态”被忽略)

在我看来,我应该能够“编辑”一个问题来结束它()。。。但我无法理解相应的curl命令应该是什么样子。有什么指导吗

额外积分:我真的希望能够指定一个“关闭”日期,以与当前系统中捕获的实际关闭日期一致。目前还不清楚这是否可能


谢谢

使用命令行将大量问题迁移到github?你疯了吗

总之,使用php和hhb_curl from, 这对我来说很有效,不幸的是无法设置“closed_at”日期(api忽略了它),但我可以使用标签模拟它,然后它看起来像

,在将其移植到命令行时,代码应该为您提供一些工作:

<?php
declare(strict_types = 1);
require_once ('hhb_.inc.php');
$hc=new hhb_curl();
define('BASE_URL','https://api.github.com');
$hc->_setComfortableOptions();
$data=array(
        'state'=>'closed',
        'closed_at'=> '2011-04-22T13:33:48Z',// << unfortunately, ignored
        'labels'=>array(
                'closed at 2011-04-22T13:33:48Z' // << we can fake it using labels...
        )
);
$data=json_encode($data);
$hc->setopt_array(array(
        CURLOPT_CUSTOMREQUEST=>'PATCH',
        // /repos/:owner/:repo/issues/:number
        // https://github.com/divinity76/GitHubCrashTest/issues/1
        CURLOPT_URL=>BASE_URL.'/repos/divinity76/GitHubCrashTest/issues/1',
        CURLOPT_USERAGENT=>'test',
        CURLOPT_HTTPHEADER=>array(
                'Accept: application/vnd.github.v3+json',
                'Content-Type: application/json',
                'Authorization: token <removed>'
        ),
        CURLOPT_POSTFIELDS=>$data,      
));
$hc->exec();
hhb_var_dump($hc->getStdErr(),$hc->getResponseBody());

根据hanshenrik的建议,正确的修改过的curl命令是:

curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues/5 -d '{
"state": "closed"
}'
我没有理解他回答中提到的文档: /回购/:所有者/:回购/发行/:编号 转化为 (我现在知道以“:”开头的字段是变量)


作为记录,我计划编写对curl的调用脚本。:)

注意:GitHub CLI
gh
也是一个不错的选择: