2016-12-20 4 views
2

Ich plane, ein paar hundert Bugs, die in einem anderen (home-rolled) System gefunden wurden, in das GitHub-System zu migrieren. Die meisten dieser Fehler wurden in der Vergangenheit geschlossen. Ich kann Github API verwenden, um ein Problem zu erstellen, z.Wie bearbeite ich ein GitHub-Problem mit der API (Curl)? (vor allem: schließen)

curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues -d '{ 
    "title": "test", 
    "body": "the body" 
}' 

... aber dies wird mich mit einer Reihe von offenen Fragen verlassen. Wie man diese schließt? Ich habe versucht, schließen gerade in der Zeit der Schöpfung, z.B .:

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" 
}' 

... aber das Ergebnis ist eine offene Frage zu erstellen (das heißt der „Zustand“ wird ignoriert).

Es sieht für mich so aus, als ob ich ein Problem "bearbeiten" könnte, um es zu schließen (https://developer.github.com/v3/issues/#edit-an-issue) ... aber ich kann nicht herausfinden, wie der entsprechende curl-Befehl aussehen soll. Irgendeine Anleitung?

Extra-Kredit: Ich würde wirklich gerne in der Lage sein, ein "geschlossenes" Datum zuzuweisen, mit dem tatsächlichen geschlossenen Datum in unserem aktuellen System erfasst zuzustimmen. Es ist nicht klar, dass dies möglich ist.

Danke!

Antwort

1

eine Reihe von Problemen mit der Befehlszeile in github migrieren? bist du verrückt?

sowieso, mit PHP und hhb_curl von https://github.com/divinity76/hhb_.inc.php/blob/master/hhb_.inc.php, dies für mich gearbeitet, leider nicht das „closed_at“ Datum einstellen konnte (es von der api ignoriert wurde), aber ich konnte es emulieren Etiketten verwendet, dann sah es so aus

enter image description here

, sollte der Code geben Sie etwas auf arbeiten, wenn sie die Portierung Linie zu befehlen:

<?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()); 

(i die "Authorization: Token" modifizierte Zeile vor posti ng es auf Stackoverflow OFC)

1

Wie hanshenrik vorgeschlagen, ist der korrekte geändert curl Befehl:

curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues/5 -d '{ 
"state": "closed" 
}' 

ich versagt hatte die Dokumentation in seiner Antwort verwiesen zu verstehen: /repos /: Besitzer /: Repo-/issues /: Anzahl übersetzt https://api.github.com/repos/my_organization/my_repo/issues/5 (ich verstehe jetzt, dass Felder, die mit „:“ Variablen sind)

Für das Protokoll, ich plane, um Skript, die Anrufe zu kräuseln. :)

Verwandte Themen