+3
-1
utils/merkletrie/change.go
+3
-1
utils/merkletrie/change.go
+16
-4
utils/merkletrie/difftree.go
+16
-4
utils/merkletrie/difftree.go
···
321
if err = ret.AddRecursiveDelete(from); err != nil {
322
return nil, err
323
}
324
-
if err := ii.nextBoth(); err != nil {
325
-
return nil, err
326
}
327
break
328
}
···
330
if err = ret.AddRecursiveDelete(to); err != nil {
331
return nil, err
332
}
333
-
if err := ii.nextBoth(); err != nil {
334
-
return nil, err
335
}
336
break
337
}
···
321
if err = ret.AddRecursiveDelete(from); err != nil {
322
return nil, err
323
}
324
+
if from.Name() == to.Name() {
325
+
if err := ii.nextBoth(); err != nil {
326
+
return nil, err
327
+
}
328
+
} else {
329
+
if err := ii.nextFrom(); err != nil {
330
+
return nil, err
331
+
}
332
}
333
break
334
}
···
336
if err = ret.AddRecursiveDelete(to); err != nil {
337
return nil, err
338
}
339
+
if from.Name() == to.Name() {
340
+
if err := ii.nextBoth(); err != nil {
341
+
return nil, err
342
+
}
343
+
} else {
344
+
if err := ii.nextTo(); err != nil {
345
+
return nil, err
346
+
}
347
}
348
break
349
}
+18
worktree_test.go
+18
worktree_test.go
···
1373
s.True(status.IsClean())
1374
}
1375
1376
+
func (s *WorktreeSuite) TestStatusAfterSparseCheckout() {
1377
+
fs := memfs.New()
1378
+
w := &Worktree{
1379
+
r: s.Repository,
1380
+
Filesystem: fs,
1381
+
}
1382
+
1383
+
err := w.Checkout(&CheckoutOptions{
1384
+
SparseCheckoutDirectories: []string{"php"},
1385
+
Force: true,
1386
+
})
1387
+
s.Require().NoError(err)
1388
+
1389
+
status, err := w.Status()
1390
+
s.Require().NoError(err)
1391
+
s.True(status.IsClean(), status)
1392
+
}
1393
+
1394
func (s *WorktreeSuite) TestStatusModified() {
1395
fs := s.TemporalFilesystem()
1396