diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2019-05-16 09:21:15 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-16 09:21:15 +0200 |
commit | 7bdcd80a8c4ff0dab240d603258ba60b28102683 (patch) | |
tree | 53bfb94ef1a2ed250b9edc60f803d6066314e29a /worktree_test.go | |
parent | 24de5efe77a202ddba83abb4d14095474dcdf1f6 (diff) | |
parent | d1e34a7675bf8bb95f3c40c27d446adc5862eb62 (diff) | |
download | go-git-7bdcd80a8c4ff0dab240d603258ba60b28102683.tar.gz |
Merge pull request #1145 from linuxerwang/master
Worktree: keep local changes when checkout branch
Diffstat (limited to 'worktree_test.go')
-rw-r--r-- | worktree_test.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/worktree_test.go b/worktree_test.go index afedc91..045a76d 100644 --- a/worktree_test.go +++ b/worktree_test.go @@ -314,6 +314,46 @@ func (s *WorktreeSuite) TestCheckoutForce(c *C) { c.Assert(entries, HasLen, 8) } +func (s *WorktreeSuite) TestCheckoutKeep(c *C) { + w := &Worktree{ + r: s.Repository, + Filesystem: memfs.New(), + } + + err := w.Checkout(&CheckoutOptions{ + Force: true, + }) + c.Assert(err, IsNil) + + // Create a new branch and create a new file. + err = w.Checkout(&CheckoutOptions{ + Branch: plumbing.NewBranchReferenceName("new-branch"), + Create: true, + }) + c.Assert(err, IsNil) + + w.Filesystem = memfs.New() + f, err := w.Filesystem.Create("new-file.txt") + c.Assert(err, IsNil) + _, err = f.Write([]byte("DUMMY")) + c.Assert(err, IsNil) + c.Assert(f.Close(), IsNil) + + // Add the file to staging. + _, err = w.Add("new-file.txt") + c.Assert(err, IsNil) + + // Switch branch to master, and verify that the new file was kept in staging. + err = w.Checkout(&CheckoutOptions{ + Keep: true, + }) + c.Assert(err, IsNil) + + fi, err := w.Filesystem.Stat("new-file.txt") + c.Assert(err, IsNil) + c.Assert(fi.Size(), Equals, int64(5)) +} + func (s *WorktreeSuite) TestCheckoutSymlink(c *C) { if runtime.GOOS == "windows" { c.Skip("git doesn't support symlinks by default in windows") |