Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit ab590eb

Browse files
committed
worktree: expose underlying filesystem
1 parent e19163e commit ab590eb

9 files changed

+91
-89
lines changed

repository.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,7 @@ func (r *Repository) Worktree() (*Worktree, error) {
844844
return nil, ErrIsBareRepository
845845
}
846846

847-
return &Worktree{r: r, fs: r.wt}, nil
847+
return &Worktree{r: r, Filesystem: r.wt}, nil
848848
}
849849

850850
// ResolveRevision resolves revision to corresponding hash.

repository_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1138,7 +1138,7 @@ func (s *RepositorySuite) TestWorktree(c *C) {
11381138
r, _ := Init(memory.NewStorage(), def)
11391139
w, err := r.Worktree()
11401140
c.Assert(err, IsNil)
1141-
c.Assert(w.fs, Equals, def)
1141+
c.Assert(w.Filesystem, Equals, def)
11421142
}
11431143

11441144
func (s *RepositorySuite) TestWorktreeBare(c *C) {

submodule.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func (s *Submodule) Repository() (*Repository, error) {
115115
}
116116

117117
var worktree billy.Filesystem
118-
if worktree, err = s.w.fs.Chroot(s.c.Path); err != nil {
118+
if worktree, err = s.w.Filesystem.Chroot(s.c.Path); err != nil {
119119
return nil, err
120120
}
121121

submodule_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func (s *SubmoduleSuite) TestUpdateWithRecursion(c *C) {
128128

129129
c.Assert(err, IsNil)
130130

131-
fs := s.Worktree.fs
131+
fs := s.Worktree.Filesystem
132132
_, err = fs.Stat(fs.Join("itself", "basic", "LICENSE"))
133133
c.Assert(err, IsNil)
134134
}

worktree.go

+12-10
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ var (
2929

3030
// Worktree represents a git worktree.
3131
type Worktree struct {
32-
r *Repository
33-
fs billy.Filesystem
32+
// Filesystem underlying filesystem.
33+
Filesystem billy.Filesystem
34+
35+
r *Repository
3436
}
3537

3638
// Pull incorporates changes from a remote repository into the current branch.
@@ -355,13 +357,13 @@ func (w *Worktree) checkoutChangeSubmodule(name string,
355357
return err
356358
}
357359

358-
if err := w.fs.MkdirAll(name, mode); err != nil {
360+
if err := w.Filesystem.MkdirAll(name, mode); err != nil {
359361
return err
360362
}
361363

362364
return w.addIndexFromTreeEntry(name, e, idx)
363365
case merkletrie.Delete:
364-
if err := rmFileAndDirIfEmpty(w.fs, name); err != nil {
366+
if err := rmFileAndDirIfEmpty(w.Filesystem, name); err != nil {
365367
return err
366368
}
367369

@@ -385,7 +387,7 @@ func (w *Worktree) checkoutChangeRegularFile(name string,
385387

386388
// to apply perm changes the file is deleted, billy doesn't implement
387389
// chmod
388-
if err := w.fs.Remove(name); err != nil {
390+
if err := w.Filesystem.Remove(name); err != nil {
389391
return err
390392
}
391393

@@ -402,7 +404,7 @@ func (w *Worktree) checkoutChangeRegularFile(name string,
402404

403405
return w.addIndexFromFile(name, e.Hash, idx)
404406
case merkletrie.Delete:
405-
if err := rmFileAndDirIfEmpty(w.fs, name); err != nil {
407+
if err := rmFileAndDirIfEmpty(w.Filesystem, name); err != nil {
406408
return err
407409
}
408410

@@ -429,7 +431,7 @@ func (w *Worktree) checkoutFile(f *object.File) (err error) {
429431

430432
defer ioutil.CheckClose(from, &err)
431433

432-
to, err := w.fs.OpenFile(f.Name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, mode.Perm())
434+
to, err := w.Filesystem.OpenFile(f.Name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, mode.Perm())
433435
if err != nil {
434436
return
435437
}
@@ -453,7 +455,7 @@ func (w *Worktree) checkoutFileSymlink(f *object.File) (err error) {
453455
return
454456
}
455457

456-
err = w.fs.Symlink(string(bytes), f.Name)
458+
err = w.Filesystem.Symlink(string(bytes), f.Name)
457459
return
458460
}
459461

@@ -468,7 +470,7 @@ func (w *Worktree) addIndexFromTreeEntry(name string, f *object.TreeEntry, idx *
468470
}
469471

470472
func (w *Worktree) addIndexFromFile(name string, h plumbing.Hash, idx *index.Index) error {
471-
fi, err := w.fs.Lstat(name)
473+
fi, err := w.Filesystem.Lstat(name)
472474
if err != nil {
473475
return err
474476
}
@@ -577,7 +579,7 @@ func (w *Worktree) newSubmodule(fromModules, fromConfig *config.Submodule) *Subm
577579
}
578580

579581
func (w *Worktree) readGitmodulesFile() (*config.Modules, error) {
580-
f, err := w.fs.Open(gitmodulesFile)
582+
f, err := w.Filesystem.Open(gitmodulesFile)
581583
if err != nil {
582584
if os.IsNotExist(err) {
583585
return nil, nil

worktree_commit.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func (w *Worktree) Commit(msg string, opts *CommitOptions) (plumbing.Hash, error
3232
}
3333

3434
h := &buildTreeHelper{
35-
fs: w.fs,
35+
fs: w.Filesystem,
3636
s: w.r.Storer,
3737
}
3838

worktree_commit_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ func (s *WorktreeSuite) TestCommitParent(c *C) {
5454

5555
fs := memfs.New()
5656
w := &Worktree{
57-
r: s.Repository,
58-
fs: fs,
57+
r: s.Repository,
58+
Filesystem: fs,
5959
}
6060

6161
err := w.Checkout(&CheckoutOptions{})
@@ -78,8 +78,8 @@ func (s *WorktreeSuite) TestCommitAll(c *C) {
7878

7979
fs := memfs.New()
8080
w := &Worktree{
81-
r: s.Repository,
82-
fs: fs,
81+
r: s.Repository,
82+
Filesystem: fs,
8383
}
8484

8585
err := w.Checkout(&CheckoutOptions{})

worktree_status.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ func (w *Worktree) diffStagingWithWorktree() (merkletrie.Changes, error) {
116116
return nil, err
117117
}
118118

119-
to := filesystem.NewRootNode(w.fs, submodules)
119+
to := filesystem.NewRootNode(w.Filesystem, submodules)
120120
res, err := merkletrie.DiffTree(from, to, diffTreeIsEquals)
121121
if err == nil {
122122
res = w.excludeIgnoredChanges(res)
@@ -125,7 +125,7 @@ func (w *Worktree) diffStagingWithWorktree() (merkletrie.Changes, error) {
125125
}
126126

127127
func (w *Worktree) excludeIgnoredChanges(changes merkletrie.Changes) merkletrie.Changes {
128-
patterns, err := gitignore.ReadPatterns(w.fs, nil)
128+
patterns, err := gitignore.ReadPatterns(w.Filesystem, nil)
129129
if err != nil || len(patterns) == 0 {
130130
return changes
131131
}
@@ -251,7 +251,7 @@ func (w *Worktree) Add(path string) (plumbing.Hash, error) {
251251
}
252252

253253
func (w *Worktree) copyFileToStorage(path string) (hash plumbing.Hash, err error) {
254-
fi, err := w.fs.Lstat(path)
254+
fi, err := w.Filesystem.Lstat(path)
255255
if err != nil {
256256
return plumbing.ZeroHash, err
257257
}
@@ -281,7 +281,7 @@ func (w *Worktree) copyFileToStorage(path string) (hash plumbing.Hash, err error
281281
}
282282

283283
func (w *Worktree) fillEncodedObjectFromFile(dst io.Writer, path string, fi os.FileInfo) (err error) {
284-
src, err := w.fs.Open(path)
284+
src, err := w.Filesystem.Open(path)
285285
if err != nil {
286286
return err
287287
}
@@ -296,7 +296,7 @@ func (w *Worktree) fillEncodedObjectFromFile(dst io.Writer, path string, fi os.F
296296
}
297297

298298
func (w *Worktree) fillEncodedObjectFromSymlink(dst io.Writer, path string, fi os.FileInfo) error {
299-
target, err := w.fs.Readlink(path)
299+
target, err := w.Filesystem.Readlink(path)
300300
if err != nil {
301301
return err
302302
}
@@ -337,7 +337,7 @@ func (w *Worktree) doAddFileToIndex(idx *index.Index, filename string, h plumbin
337337
}
338338

339339
func (w *Worktree) doUpdateFileToIndex(e *index.Entry, filename string, h plumbing.Hash) error {
340-
info, err := w.fs.Lstat(filename)
340+
info, err := w.Filesystem.Lstat(filename)
341341
if err != nil {
342342
return err
343343
}
@@ -382,7 +382,7 @@ func (w *Worktree) deleteFromIndex(path string) (plumbing.Hash, error) {
382382
}
383383

384384
func (w *Worktree) deleteFromFilesystem(path string) error {
385-
err := w.fs.Remove(path)
385+
err := w.Filesystem.Remove(path)
386386
if os.IsNotExist(err) {
387387
return nil
388388
}
@@ -393,11 +393,11 @@ func (w *Worktree) deleteFromFilesystem(path string) error {
393393
// Move moves or rename a file in the worktree and the index, directories are
394394
// not supported.
395395
func (w *Worktree) Move(from, to string) (plumbing.Hash, error) {
396-
if _, err := w.fs.Lstat(from); err != nil {
396+
if _, err := w.Filesystem.Lstat(from); err != nil {
397397
return plumbing.ZeroHash, err
398398
}
399399

400-
if _, err := w.fs.Lstat(to); err == nil {
400+
if _, err := w.Filesystem.Lstat(to); err == nil {
401401
return plumbing.ZeroHash, ErrDestinationExists
402402
}
403403

@@ -406,7 +406,7 @@ func (w *Worktree) Move(from, to string) (plumbing.Hash, error) {
406406
return plumbing.ZeroHash, err
407407
}
408408

409-
if err := w.fs.Rename(from, to); err != nil {
409+
if err := w.Filesystem.Rename(from, to); err != nil {
410410
return hash, err
411411
}
412412

0 commit comments

Comments
 (0)