Is this a bug? nodegit.Diff.treeToIndex

オープン
#1,915 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
30/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
git, javascript, nodejs
領域
devtools

調査の方向性

nodegit.Diff.treeToIndex の呼び出しから始め、issue に記載されたリポジトリについて、その patches() の出力を git diff --cached と比較します。なぜ flake.lock が現れるのか、また報告されたファイルのステータスがコマンドラインの結果と異なるのかを調査します。原因が特定されてステージ済み差分の結果に一貫性があること、または issue が想定される libgit2 の動作であることが示されれば完了です。

索引モデルが issue の本文から書いたものです。

説明

System information

  • node version: v14.19.2
  • npm or yarn version: npm 6.14.17
  • OS/version/architecture: Linux 5 x64
  • Applicable nodegit version: nodegit-0.28.0-alpha.16
node -v
npm -v # (or yarn -v)
node -e "console.log(process.platform)"
node -e "console.log(require('os').release())"
node -e "console.log(console.log(process.arch))"

Problem

I'm trying to get the staged diffs, so basically git diff --cached. In my repo with git v2.36.0 this returns

 $ git diff --cached | grep -A4 ^diff
diff --git a/.envrc b/.envrc
new file mode 100644
index 00000000..0fbc0219
--- /dev/null
+++ b/.envrc
--
diff --git a/.gitignore b/.gitignore
index ad82ced2..094a1db3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
--
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 00000000..53f75f03
--- /dev/null
+++ b/flake.nix

So 3 files, 2 of them new.

When I use

const repo = nodegit.Repository.open(path);
const head = await this.r.getHeadCommit();
const d = await nodegit.Diff.treeToIndex(repo, await head.getTree())
const pp = await d.patches()
pp.map(p=>`${p.newFile().path()} ${p.isUnmodified()&&'unmod'} ${p.isModified()&&'mod'} ${p.isUntracked()&&'untracked'} ${p.isAdded()&&'added'}`)

then that last line gives me

[
  '.envrc false false false added',
  '.gitignore false mod false false',
  'flake.lock false false false added',
  'flake.nix false false false added'
]

So somehow flake.lock is part of the diff?

Did I do something wrong or is this a bug with libgit2?

Thanks!

主要言語
JavaScript
スター
5.8k
フォーク
704
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

nodegit/nodegit のほかの issue

nodegit/nodegit の issue をすべて見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。