Wie kann man Meilensteine ​​verfolgen, die von mehreren Repositories gemeinsam genutzt werden?

Ich habe mir https://youtu.be/nI5VdsVl0FM?t=226 angesehen , wie Probleme mit Labels, Meilensteinen und Projekten verwaltet werden, aber das scheint für jedes Github-Repository spezifisch zu sein.

Angenommen, wir haben einen Feature-Push, der der Einfachheit halber die Nachverfolgung von Problemen sowohl von einem „Frontend“- als auch von einem „Backend“-Repository in einer einzigen Organisation erfordert. Wie sammeln, priorisieren und verfolgen Sie den Fortschritt bei Github-Problemen, die sich über mehrere Repositories erstrecken?

Im Moment erfordert eine mögliche Lösung, dass ich Labels über Repositories hinweg manuell synchronisiere, was ziemlich mühsam erscheint und keine Reihenfolge aufweist.

Irgendwelche Vorschläge hier bitte? Ich habe einen kurzen Blick auf Zenhub geworfen, aber das scheint wieder an das Repository gebunden zu sein, und es scheint keine Labels zurückzuschreiben, wenn Sie sich tatsächlich die Mühe gemacht haben, die Probleme oder Aufgaben in Rückstand/In Bearbeitung usw. zu sortieren.

Nicht einverstanden mit der engen Abstimmung. Die Frage "Wie mache ich IX?" (möglicherweise themenbezogen) ist nicht dasselbe wie "Welches Tool sollte ich verwenden, um X auszuführen?" (off-topic).

Antworten (4)

Begrenzte native Optionen; Flexible API

Vollwertiges Multi-Projekt- und Multi-Repository-Projektmanagement ist nicht wirklich das, was GitHub am besten kann. Möglicherweise möchten Sie Lösungen von Drittanbietern für Ihre Fehlerverfolgung und Meilensteinverwaltung erkunden, wenn Ihnen die nativen Optionen nicht ausreichen.

GitHub hat kürzlich den Begriff von Projekten gewonnen, die sich über mehrere Repositories erstrecken . Dies ist jedoch etwas eingeschränkt und unterstützt möglicherweise nicht die volle Funktionalität, nach der Sie suchen.

Auch wenn Sie Labels und Meilensteine ​​nicht nativ für all Ihre verschiedenen Repositories erstellen können, können Sie die API sicherlich dazu nutzen, dies programmgesteuert zu tun. Beispielsweise durch Verwendung der folgenden Aufrufe:

Sie könnten jedes Repository durchlaufen, um die gewünschten Labels und Meilensteine ​​hinzuzufügen. Eine schnelle Suche hat sogar NodeJS-Code ergeben , der für Sie funktionieren könnte.

Grundsätzlich sieht es so aus, als hätten Sie die Wahl, sich für eine Drittanbieterlösung mit GitHub-Integration zu entscheiden oder Ihre eigene über die API zu erstellen. Viel Glück!

Pablo von ZenHub hier (Beantwortung der Frage, da ZenHub ausdrücklich erwähnt wurde).

Die meisten ZenHub-Funktionen sind Multi-Repository; Sie können Repositories zu einem bestehenden Board hinzufügen, sodass sich sowohl Backend- als auch Frontend-Probleme am selben Ort befinden.

Vom Board aus können Sie einen Multi-Repo-Meilenstein erstellen , der übereinstimmende Meilensteine ​​für alle Repositories in einem bestimmten Board erstellt, und sie dann für die Velocity- und Burndown-Berichte sowie zum Filtern im Board gruppieren.

Um Labels über mehrere Repositories hinweg zu erstellen, können Sie Probleme aus mehreren Repositories im Board auswählen und dann ein vorhandenes Label hinzufügen; Wenn das Label in einem der Repositories nicht vorhanden ist, erstellt ZenHub es für Sie.

Ich hoffe das hilft!

Ich habe Zenhub ausprobiert, aber die Labels schienen nicht an Github zurückgesendet zu werden? twitter.com/kaihendry/status/991508464517066753

Unelegante Lösung: Deklarieren Sie ein Repo (vielleicht ein neues) als dasjenige, in dem Tickets verwaltet werden. Verbinden Sie sich von Commits/PRs in den anderen Repos über explizite Links mit ihnen, anstatt sich auf die magische Syntax zu verlassen.

Die API von Github kann verwendet werden, um Meilensteine/Sprints über mehrere Repositories hinweg zu erstellen.

// script.js
import { Octokit } from "https://cdn.skypack.dev/@octokit/core";

const token = "YOUR_GITHUB_PERSONAL_ACCESS_TOKEN"
const octokit = new Octokit({ auth: token});
const repos = await octokit.request('GET /user/repos');
const milestones = [{
    "title": "Sprint 1",
    "description": "June 1 to June 7"
    "due_on": "2021-06-01T00:00:00Z"
}, {
    "title": "Sprint 2",
    "description": "June 7 to June 14"
    "due_on": "2021-06-07T00:00:00Z"
}];

for (let r=0; r < repos.length; r++) {
    let repo = repos[r];
    for (let m=0; m < milestones.length; m++) {
        let milestone = milestones[m];
        let payload = {
            owner: repo.owner.login,
            repo: repo.name,
            title: milestone.title,
            description: milestone.description,
            due_on: milestone.due_on
        };
        await octokit.request(`POST /repos/{owner}/{repo}/milestones`, payload);
    }
}

Ich habe eine kleine Webanwendung erstellt, um dies über die Benutzeroberfläche zu erreichen. Fühlen Sie sich frei, es zu verwenden und es nach Bedarf zu ändern.

Link - hardiksondagar.github.io/cross-repository-milestones