Das ist seltsam, dass Sie keine abgestuften Änderungen sehen, weil indexToWorkdir
genau wie git diff
funktioniert und nur gestufte Änderungen zeigt. Ich habe ein Beispiel geschrieben, das funktioniert für mich. Es zeigt sowohl inszenierte als auch nicht gesicherte Dateien in diff, bitte probiere es aus. Bei Überspringen von Optionen wurden nur gestaffelte Dateien angezeigt.
sorgen auch nach dem Ersatz der Diff.OPTION.INCLUDE_UNTRACKED
zu 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 entspricht den workdir gegen die Aktueller Index (gestaffelt), so dass nur die nicht gespeicherten Dateien angezeigt werden. – jantimon
versuchte es ohne irgendwelche Commit im Repository, es funktioniert. –
Ich versuche, den oberen Teil (gestaffelte Dateien) zu reproduzieren: http://blog.sourcetreeapp.com/files/2014/08/Screen-Shot-2014-08-19-at-2.02.03-PM.png – jantimon