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?
Réponses
Trop de publicités?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:
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.
Ce script enveloppements git log et produit une sortie JSON: https://github.com/paulrademacher/gitjson