Skip to content

Commit ad102d2

Browse files
committed
git: worktree, Don't delete local untracked files when resetting worktree. Fixes go-git#53
1 parent 0e87c1f commit ad102d2

File tree

2 files changed

+10
-14
lines changed

2 files changed

+10
-14
lines changed

worktree.go

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -316,12 +316,18 @@ func (w *Worktree) ResetSparsely(opts *ResetOptions, dirs []string) error {
316316
}
317317
}
318318

319-
if opts.Mode == MergeReset || opts.Mode == HardReset {
319+
if opts.Mode == MergeReset && len(removedFiles) > 0 {
320320
if err := w.resetWorktree(t, removedFiles); err != nil {
321321
return err
322322
}
323323
}
324324

325+
if opts.Mode == HardReset {
326+
if err := w.resetWorktree(t, opts.Files); err != nil {
327+
return err
328+
}
329+
}
330+
325331
return nil
326332
}
327333

@@ -457,11 +463,6 @@ func (w *Worktree) resetWorktree(t *object.Tree, files []string) error {
457463
}
458464
b := newIndexBuilder(idx)
459465

460-
status, err := w.Status()
461-
if err != nil {
462-
return err
463-
}
464-
465466
for _, ch := range changes {
466467
if err := w.validChange(ch); err != nil {
467468
return err
@@ -485,13 +486,8 @@ func (w *Worktree) resetWorktree(t *object.Tree, files []string) error {
485486
}
486487
}
487488

488-
// only checkout an untracked file if it is in the list of files
489-
// a reset should leave untracked files alone
490-
file := nameFromAction(&ch)
491-
if status.File(file).Worktree != Untracked || inFiles(files, file) {
492-
if err := w.checkoutChange(ch, t, b); err != nil {
493-
return err
494-
}
489+
if err := w.checkoutChange(ch, t, b); err != nil {
490+
return err
495491
}
496492
}
497493

worktree_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1149,7 +1149,7 @@ func (s *WorktreeSuite) TestResetWithUntracked() {
11491149
continue
11501150
}
11511151
if st.Worktree != Unmodified || st.Staging != Unmodified {
1152-
s.Fail("file %s not unmodified", file)
1152+
s.Failf("file %s not unmodified", file)
11531153
}
11541154
}
11551155
}

0 commit comments

Comments
 (0)