J’ai écrit un script pour Git qui permet de produire un fichier changelog en html ou en markdown à partir des commits.

Dans un article précédent j’ai montré comment étendre Git avec un script pour créer ses propres commandes. Aujourd’hui je vous présente mon script git-changelog. Vous pouvez le trouver sur Github.

Il s’agit d’un script Ruby qui ajoute une commande changelog à Git. Il est utile pour automatiser (ou semi-automatiser) la production du fichier changelog. Il peut produire des fichiers au format HTML ou au format Markdown.

Pour l’installer, il faut mettre le fichier git-changelog quelque part dans votre PATH, après l’avoir téléchargé.

Utilisation

Sortie sur la console:

git changelog

Sortie dans un fichier:

git changelog > changelog.markdown

Le script accepte l’option --since. C’est la même option qu’utilise la commande git log:

git changelog --since=2013-07-01
git changelog --since=10.days

Sortie au format HTML:

git changelog --html

Un exemple de combinaison:

git changelog --html --since=2013-05-27 > changelog.html

Un exemple

Voici ce que produit git-changelog:

2013-07-18 Version 0.2.1  
==========================
* 2013-07-18 Fix bug for markdown format  
  Html entities are now escaped.
* 2013-07-18 Fix bug with markdown format  
  Commit body now start on a new line.
* 2013-07-18 Add auto-generated changelog file  

2013-07-18 Version 0.2.0  
==========================
* 2013-07-18 Add html format output  
  A new --html option outputs a <ul>.
* 2013-07-17 First commit  
  The script outputs in markdown and accept the option '--since'.

Et voilà ce que ça donne (avec le style de ce blog):

2013-07-18 Version 0.2.1

  • 2013-07-18 Fix bug for markdown format
    Html entities are now escaped.
  • 2013-07-18 Fix bug with markdown format
    Commit body now start on a new line.
  • 2013-07-18 Add auto-generated changelog file

2013-07-18 Version 0.2.0

  • 2013-07-18 Add html format output
    A new –html option outputs a <ul>.
  • 2013-07-17 First commit
    The script outputs in markdown and accept the option ‘–since’.

Rake task

Voici un exemple de rake task pour une gem Ruby:

desc "Generate the changelog"
task :changelog do
  system "git changelog > Changelog.markdown"
end

Et un exemple pour un projet Rails:

desc "Generate the changelog in html"
task :changelog do
  system "git changelog --html > app/views/pages/_changelog.html"
end

À demain.