-
Notifications
You must be signed in to change notification settings - Fork 533
File status is reported as Untracked for tracked+unmodified files?Β #1300
Description
I'm using (more like, trying to use) this library to determine if certain files in a Git repository have been modified or not.
This was my approach (error handling omitted for brevity):
repo, _ := git.PlainOpen(".")
tree, _ := repo.Worktree()
status, _ := repo.Status()
fileStatus := status.File("path/to/unmodified-file")
The file path/to/unmodified-file is (unsurprisingly) already committed to the repo and unmodified (both in staging and worktree). In this case, I would expect that fileStatus.Worktree == git.Unmodified. However, the following happens:
fmt.Println(string(fileStatus.Worktree)) // expected=" " actual="?"
fmt.Println(fileStatus.Worktree == git.Unmodified) // expected="true" actual="false"
fmt.Println(fileStatus.Worktree == git.Untracked) // expected="false" actual="true"
This seems to occur because Untracked is kind of the "default" status:
Lines 15 to 21 in 1a7db85
| func (s Status) File(path string) *FileStatus { | |
| if _, ok := (s)[path]; !ok { | |
| s[path] = &FileStatus{Worktree: Untracked, Staging: Untracked} | |
| } | |
| return s[path] | |
| } |
I'm unsure if this behaviour is intentional and I've just misunderstood how Status is supposed to work (in which case I might suggest at least clearing up the docs a little bit) or if this is an actual bug. π€·ββ