
Vollautomatisierte Changelog -Generierung - Dieses Juwel generiert eine ChangeLog -Datei basierend auf Tags , Problemen und zusammengeführten Pull -Anfragen (und spaltet sie nach Beschriftungen in separate Listen auf) von GitHub.
Da Sie Ihren CHANGELOG.md jetzt nicht manuell füllen müssen: Führen Sie einfach das Drehbuch aus, entspannen Sie sich und nehmen Sie eine Tasse ☕ vor Ihrer nächsten Veröffentlichung! ?
Um es den Benutzern und Mitwirkenden zu erleichtern, genau zu sehen, welche bemerkenswerten Änderungen zwischen jeder Version (oder der Version) des Projekts vorgenommen wurden.
Weil Software -Tools für Menschen sind. "Changelogs erleichtern es Benutzern und Mitwirkenden, genau zu sehen, welche bemerkenswerten Änderungen zwischen jeder Version (oder der Version) des Projekts vorgenommen wurden."
➡️ https://keepachangelog.com
Der Github Changelog -Generator ist ein Ruby -Programm, das als Rubygem verteilt ist. Die Ruby Language Homepage verfügt über eine Installationsseite.
Installieren Sie den Juwel wie:
$ gem install github_changelog_generator
Abhängig von Ihrem System müssen Sie möglicherweise die Shell als Administrator (Windows) ausführen oder sudo gem install github_changelog_generator (Linux) verwenden.
github_changelog_generator -u github_project_namespace -p github_project
(Wo der Projektnamenspace wahrscheinlich Ihr Benutzername ist, wenn es sich um ein Projekt handelt, das Sie besitzen, aber es könnte auch der Namespace des Projekts sein.)
Die Verwendung von Docker ist eine Alternative zur Installation von Ruby und dem Gem.
Beispielaufruf:
$ docker run -it --rm -v "$(pwd)":/usr/local/src/your-app githubchangeloggenerator/github-changelog-generator
GitHub Enterprise Repos geben sowohl --github-site als auch --github-api Optionen an:
$ github_changelog_generator --github-site="https://github.yoursite.com"
--github-api="https://github.yoursite.com/api/v3/"
Dies erzeugt eine CHANGELOG.md mit einer hübschen Markdown -Formatierung.
Schauen Sie sich ChangeLog.md für dieses Projekt an
ActionSheetPicker-3.0/Changelog.md wurde mit dem Befehl generiert:
$ github_changelog_generator -u github-changelog-generator -p ActionSheetPicker-3.0
Im Allgemeinen sieht es so aus:
1.2.5 (2015-01-15)
Voller Changelog
Implementierte Verbesserungen:
- Verwenden Sie Meilenstein, um festzulegen, in welcher Versionsfehler #22 behoben wurde
Fehler behoben:
- Fehler beim Versuch, Protokoll für Repo ohne Tags #32 zu generieren
Fusioned Pull -Anfragen:
Die PrintPrint -Klasse ist mit der Kleinbuchstaben 'PP' #43 (Schwing) enthalten
Unterstützen Sie Enterprise Github über Befehlszeilenoptionen Nr. 42 (Glenlovett)
Drucken Sie Hilfe für alle Befehlszeilenoptionen, um weitere Details zu erfahren:
$ github_changelog_generator --help
Weitere Informationen zu Params finden Sie auf der Wiki -Seite: Advanced Changelog Generation Beispiele
In Ihrem Projektroot können Sie eine Params -Datei mit dem Namen .github_changelog_generator einlegen, um Standardparamien zu überschreiben:
Beispiel:
unreleased=false
future-release=5.0.0
since-tag=1.0.0
GitHub erlaubt nur 50 nicht authentifizierte Anfragen pro Stunde .
Daher wird empfohlen, dieses Skript mit Authentifizierung mit einem Token auszuführen.
So wie: wie:
--token <your-40-digit-token> aus; ODERCHANGELOG_GITHUB_TOKEN in Ihrem 40 -stelligen Token Sie können eine Umgebungsvariable festlegen, indem Sie den folgenden Befehl an der Eingabeaufforderung ausführen oder Ihr Shell -Profil hinzufügen (z. B. .env , ~/.bash_profile , ~/.zshrc usw.):
export CHANGELOG_GITHUB_TOKEN="«your-40-digit-github-token»"
Also, wenn Sie eine solche Nachricht erhalten:
API rate limit exceeded for github_username.
See: https://developer.github.com/v3/#rate-limitingEs ist Zeit, dieses Token zu erstellen! (Warten Sie eine Stunde, bis Github Ihr nicht authentifiziertes Anforderungslimit zurücksetzt.)
Wenn Sie wissen, wie engagiert Sie für Ihr Projekt sind, haben Sie wahrscheinlich nicht darauf gewartet, dass github-changelog-generator einen Changelog behält. Aber wahrscheinlich möchten Sie auch nicht die offenen Probleme und PRs Ihres Projekts für alle früheren Funktionen in Ihrem historischen ChangeLog.
Hier ist --base <your-manual-changelog.md> nützlich! Mit dieser Option können Sie Ihren alten manuellen ChangeLog am Ende der generierten Einträge anhängen.
Wenn Sie eine HISTORY.md Datei in Ihrem Projekt haben, wird sie automatisch als statische historische ChangeLog ausgewählt und angehängt.
Du liebst rake ? Das tun wir auch! Wir haben es Ihnen also noch einfacher gemacht: Wir haben eine rake -Task -Bibliothek für Ihre ChangeLog -Generation bereitgestellt.
Konfigurieren Sie die Aufgabe in Ihrem Rakefile :
require 'github_changelog_generator/task'
GitHubChangelogGenerator :: RakeTask . new :changelog do | config |
config . user = 'username'
config . project = 'project-name'
config . since_tag = '0.1.14'
config . future_release = '0.2.0'
end Alle Befehlszeilenoptionen können als config an die rake Aufgabe übergeben werden. Und da Sie die rake -Aufgabe selbst benennen, können Sie so viele erstellen, wie Sie möchten.
Sie können nach Paramsnamen aus dem Parser -Quellcode (#setup_parser) suchen. Um das Bugs -Etikett beispielsweise in Portugiesisch zu übersetzen, anstatt config.bugs_label festzulegen, müssen Sie config.bug_prefix festlegen und so weiter.
Generieren Sie eine kanonische, ordentliche Changelog -Datei mit Standardabschnitten, die den grundlegenden Richtlinien für ChangeLog folgen?
Optional unveröffentlichte Änderungen erzeugen (geschlossene Probleme, die noch nicht veröffentlicht wurden)?
GitHub Enterprise Support über Befehlszeilenoptionen! ?
Flexible Formatanpassung :
milestone des Problems denselben Namen wie das Tag der Version angegeben hat?invalid duplicate spezifische Probleme wontfix questionFragen durch Etiketten unterscheiden . ?
bug )?enhancement von Problemen)?Probleme von Labels manuell einschließen oder ausschließen?
Passen Sie noch viel mehr an! Optimieren Sie den Changelog, um Ihren Vorlieben zu entsprechen? ( Siehe github_changelog_generator --help für Details))
Für jede Version können Sie eine Release -Zusammenfassung mit Text, Bildern, GIF -Animationen usw. hinzufügen und dem Benutzer neue Funktionen und Notizen deutlich anzeigen. Dies geschieht mit Github -Metadaten.
Beispiel : Hinzufügen der Release -Zusammenfassung für v1.0.0:

Hello, World! :tada:
release-summary für die Ausgabelabel ein und fügen Sie es dem GitHub-Meilenstein v1.0.0 hinzugithub-changelog-generator ausv1.0.0 (2014-11-07)
Voller Changelog
Hallo Welt! ?
Implementierte Verbesserungen:
- Fügen Sie einige Funktionen hinzu
Hier ist eine Wikipage -Liste von Alternativen, die ich gefunden habe. Aber keiner erfüllte meine Anforderungen.
Wenn Sie andere Projekte kennen, können Sie diese Wiki -Seite gerne bearbeiten!
Hier ist eine Wikipage -Liste von Projekten.
Wenn Sie dieses Projekt in einer Live -App verwendet haben, lassen Sie es mich bitte wissen! Nichts macht mich glücklicher, als jemand anderes meine Arbeit zu nehmen und wild zu werden.
Wenn Sie github_changelog_generator verwenden, um den ChangeLog Ihres Projekts zu generieren oder andere Projekte zu kennen, fügen Sie diese bitte dieser Liste hinzu.
github_changelog_generator kann in Kombination mit der Github CLI verwendet werden, um Versionshinweise zu erstellen. Verwenden Sie die Optionen für --since-tag und --output von github_changelog_generator , um einen ChangeLog für die aktuelle Version zu erstellen und die Ergebnisse in einer Datei zu speichern. Im folgenden Beispiel ist Version 2.0.0 die aktuelle Version und Version 1.0.0 die vorherige Version.
mkdir -p build
github_changelog_generator
--since-tag 1.0.0
--output build/changelog.md
Verwenden Sie dann die Funktion "Release Create Create" der Github CLI, um eine neue Github -Version zu erstellen
gh release create 2.0.0
--notes-file build/changelog.md
--title 2.0.0
Nichts ist unmöglich!
Öffnen Sie ein Problem und lassen Sie uns den Generator besser zusammenstellen!
Fehlerberichte, Feature-Anfragen, Patches und Wohlwollungen sind immer willkommen. ❗
Github Releases ist eine sehr gute Sache. Und es ist eine sehr gute Praxis, es aufrechtzuerhalten. (Noch nicht viele Leute benutzen es!) ㊗️
Übrigens: Ich möchte Github -Veröffentlichungen in den nächsten Veröffentlichungen unterstützen;)
Ich versuche nicht, die Qualität von handgeschriebenen und automatisch generierten Protokollen zu vergleichen. Das heißt ....
Ein automatisch generierter Changelog hilft wirklich, auch wenn Sie die Versionshinweise manuell ausfüllen!
Dies ist entweder mit den add-sections oder configure-sections in .github_changelog_generator möglich. Um beispielsweise einen einzelnen neuen Eintrag mit dem Namen "Wartung" hinzuzufügen, der PRs mit Ihrem maintenance fängt, können Sie zu .github_changelog_generator die Zeile hinzufügen:
add-sections= {"maintenance":{"prefix":"**Project maintenance**","labels":["maintenance"]}}
Ein ähnlicher Ansatz kann über configure-sections verwendet werden, um alle Abschnittseigenschaften festzulegen (einschließlich des Hinzufügens neuer!).
Wenn Ihr Rubin alt ist und Sie nicht aktualisieren möchten und Sie steuern möchten, welche Bibliotheken Sie verwenden, können Sie Bundler verwenden.
In einer GemFile, vielleicht in einer nicht eingelagerten :development , fügen Sie dieses Juwel hinzu:
group :development do
gem 'github_changelog_generator' , require : false
endAnschließend können Sie wie Rack die Rückschläge aufbewahren, die derzeit nur mit Ruby> = 2.2.2 kompatibel sind. Verwenden Sie also eine ältere Version für Ihre App, indem Sie der GemFile eine solche Zeile hinzufügen:
gem 'rack', '~> 1.6'
Auf diese Weise können Sie weiterhin github_changelog_generator verwenden, auch wenn Sie die neueste Version von Ruby nicht installiert können.
Windows: V1.14.0 führte einen Fehler ein, bei dem versucht wird, /tmp/github_changelog-logger.log ... zu erstellen ... was kein gültiger Weg unter Windows ist und somit fehlschlägt
Problemumgehung: Erstellen Sie ein C:tmp .
Möchten Sie zu diesem Projekt beitragen? Beitrag.md hat alle Details dazu.
Treten Sie dem Chat bei Gitter: Github-Changelog-Generator bei
Github Changelog Generator wird unter der MIT -Lizenz veröffentlicht.