To dziwne, że nie widzisz zmian etapowych, ponieważ indexToWorkdir
działa dokładnie tak, jak git diff
i wyświetla tylko etapowe zmiany. Napisałem przykład, który działa dla mnie. Pokazuje różnice w plikach inscenizowanych i niezamkniętych w pliku diff, spróbuj. W przypadku opcji pomijania wyświetlane są tylko pliki etapowe.
zajmują się także o wymianie Diff.OPTION.INCLUDE_UNTRACKED
do Diff.OPTION.SHOW_UNTRACKED_CONTENT
import path from 'path';
import Git from 'nodegit';
async function print() {
const repo = await Git.Repository.open(path.resolve(__dirname, '.git'));
const diff = await Git.Diff.indexToWorkdir(repo, null, {
flags: Git.Diff.OPTION.SHOW_UNTRACKED_CONTENT | Git.Diff.OPTION.RECURSE_UNTRACKED_DIRS
});
// you can't simple log diff here, it logs as empty object
// console.log(diff); // -> {}
diff.patches().then((patches) => {
patches.forEach((patch) => {
patch.hunks().then((hunks) => {
hunks.forEach((hunk) => {
hunk.lines().then((lines) => {
console.log("diff", patch.oldFile().path(), patch.newFile().path());
console.log(hunk.header().trim());
lines.forEach((line) => {
console.log(String.fromCharCode(line.origin()) + line.content().trim());
});
});
});
});
});
});
return diff;
}
print().catch(err => console.error(err));
indexToWorkdir dopasowuje WorkDir przeciw bieżący indeks (wystawiony), tak aby wyświetlał tylko pliki niezarządzane. – jantimon
wypróbowany bez żadnego zatwierdzenia w repozytorium, działa. –
Próbuję odtworzyć górną część (pliki etapowe): http://blog.sourcetreeapp.com/files/2014/08/Screen-Shot-2014-08-19-at-2.02.03-PM.png – jantimon