Vorrei ottenere l'id/hash del commit più recente sul ramo corrente in NodeJS.Ottieni hash del commit git più recente nel nodo
In NodeJS, mi piacerebbe ottenere l'id/hash più recente, per quanto riguarda git e commit di ciò.
Vorrei ottenere l'id/hash del commit più recente sul ramo corrente in NodeJS.Ottieni hash del commit git più recente nel nodo
In NodeJS, mi piacerebbe ottenere l'id/hash più recente, per quanto riguarda git e commit di ciò.
Oltre a Paulpro Risposta Puoi usare il exec
.
require('child_process').exec('git rev-parse HEAD', function(err, stdout) {
console.log('Last commit hash on this branch is:', stdout);
});
Scegliendo questo perché mi piace che non devi specificare un 'path_to_repo' come nella risposta di Paulpro. – Noah
Utilizzo di nodegit, con path_to_repo
definito come una stringa contenente il percorso del repository per il quale si desidera ottenere il commit. Se si desidera utilizzare la directory il processo è in esecuzione da, quindi sostituire path_to_repo
con process.cwd()
:
var Git = require('nodegit');
Git.Repository.open(path_to_repo).then(function(repository) {
return repository.getHeadCommit();
}).then(function (commit) {
return commit.sha();
}).then(function (hash) {
// use `hash` here
});
solo FIY sulla mia macchina, questo è circa 3,2 volte più veloce della risposta più accettata da @ antoine129. execSync impiega circa 6.4 ms mentre nodegit richiede solo circa 1.8ms – Capaj
È inoltre possibile utilizzare git-fs (il suo nome sul NPM è git-fs, su Github è il nodo-git.)
Git('path/to/repo')
Git.getHead((err, sha) => {
console.log('The hash is: ' + sha)
})
Lo stesso modulo può leggere le directory ei file dal repo.
soluzione a breve, nessun modulo esterno necessario (alternativa sincrona alla risposta di Edin):
revision = require('child_process')
.execSync('git rev-parse HEAD')
.toString().trim()
e se si desidera specificare manualmente la directory principale del progetto Git, utilizzare il secondo argomento di execSync
per passare il cwd
option, come execSync('git rev-parse HEAD', {cwd: __dirname})
Usa '.slice (0, 7);' per ottenere brevi sha. –
@DanielSteigerwald o 'git rev-parse --short HEAD' – Hendry
Se siete sempre in specifico ramo, è possibile leggere .git/refs/heads/<branch_name>
per ottenere facilmente commettere hash.
const fs = require('fs');
const util = require('util');
util.promisify(fs.readFile)('.git/refs/heads/master').then((hash) => {
console.log(hash.toString().trim());
});
e dove sei bloccato? – Sirko
@Sirko All'inizio? – Noah
Sembra che tu abbia già trovato il modulo nodo corretto. Afaik ci sono stati esempi per fare esattamente quello che vuoi. – Sirko