54 votes

La commande Git log de sortie au format XML, JSON ou YAML?

C'est une question assez simple: comme un Git newbie, je me demandais si il existe un moyen pour moi à la sortie de mon git log dans un fichier, de préférence dans un certain type de format sérialisé comme XML, JSON ou YAML. Toutes les suggestions?

65voto

huntar Points 502

pour la sortie d'un fichier:

git log > filename.log

Pour spécifier un format, comme vous voulez tout sur une seule ligne

git log --pretty=oneline >filename.log

ou vous voulez un format pour être envoyé via un programme comme sendmail

git log --pretty=email |email-sending-script.sh

pour générer du JSON, YAML, XML ou on dirait que vous devez faire quelque chose comme:

git log --pretty=format:"%h%x09%an%x09%ad%x09%s"

Ce gist (pas le mien) parfaitement les formats de sortie en JSON: https://gist.github.com/1306223

Voir aussi:

15voto

Tim Boudreau Points 748

J'ai fait quelque chose de ce genre pour créer un minimum d'api web / javascript widget qui permettrait d'afficher les 5 derniers s'engage dans n'importe quel référentiel.

Si vous faites cela à partir de n'importe quelle sorte de langage de script, vous vraiment voulez générer votre JSON avec autre chose que de l' " pour vos devis de caractère, de sorte que vous pouvez échapper les guillemets dans les messages de commit. (Vous permettra de les avoir tôt ou tard, et il n'est pas gentil pour que de casser des choses.)

Je me suis donc retrouvé avec la terrifiante mais peu probable délimiteur ^@^ et cette ligne de commande.

var cmd = 'git log -n5 --branches=* --pretty=format:\'{%n^@^hash^@^:^@^%h^@^,%n^@^author^@^:^@^%an^@^,%n^@^date^@^:^@^%ad^@^,%n^@^email^@^:^@^%aE^@^,%n^@^message^@^:^@^%s^@^,%n^@^commitDate^@^:^@^%ai^@^,%n^@^age^@^:^@^%cr^@^},\'';

Ensuite (dans le node.js mon corps de la réponse http est construit à partir d' stdout de l'appel à git log ainsi:

var out = ("" + stdout).replace(/"/gm, '\\"').replace(/\^@\^/gm, '"');
if (out[out.length - 1] == ',') {
    out = out.substring (0, out.length - 1);
}

et le résultat est agréable JSON qui ne se casse pas avec des citations.

4voto

Paul Rademacher Points 2194

Ce script enveloppements git log et produit une sortie JSON: https://github.com/paulrademacher/gitjson

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X