Skip to content

Commit

Permalink
Merge pull request #772 from Jleagle/master
Browse files Browse the repository at this point in the history
Replace user dir in path
  • Loading branch information
pjbgf committed May 25, 2023
2 parents 8bcb67c + 209eda5 commit 44feb6c
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
8 changes: 8 additions & 0 deletions plumbing/format/gitignore/dir.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ const (

// readIgnoreFile reads a specific git ignore file.
func readIgnoreFile(fs billy.Filesystem, path []string, ignoreFile string) (ps []Pattern, err error) {

if strings.HasPrefix(ignoreFile, "~") {
home, err := os.UserHomeDir()
if err == nil {
ignoreFile = strings.Replace(ignoreFile, "~", home, 1)
}
}

f, err := fs.Open(fs.Join(append(path, ignoreFile)...))
if err == nil {
defer f.Close()
Expand Down
39 changes: 39 additions & 0 deletions plumbing/format/gitignore/dir_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
type MatcherSuite struct {
GFS billy.Filesystem // git repository root
RFS billy.Filesystem // root that contains user home
RFSR billy.Filesystem // root that contains user home, but with with relative ~/.gitignore_global
MCFS billy.Filesystem // root that contains user home, but missing ~/.gitconfig
MEFS billy.Filesystem // root that contains user home, but missing excludesfile entry
MIFS billy.Filesystem // root that contains user home, but missing .gitignore
Expand Down Expand Up @@ -95,6 +96,33 @@ func (s *MatcherSuite) SetUpTest(c *C) {

s.RFS = fs

// root that contains user home, but with relative ~/.gitignore_global
fs = memfs.New()
err = fs.MkdirAll(home, os.ModePerm)
c.Assert(err, IsNil)

f, err = fs.Create(fs.Join(home, gitconfigFile))
c.Assert(err, IsNil)
_, err = f.Write([]byte("[core]\n"))
c.Assert(err, IsNil)
_, err = f.Write([]byte(" excludesfile = ~/.gitignore_global" + "\n"))
c.Assert(err, IsNil)
err = f.Close()
c.Assert(err, IsNil)

f, err = fs.Create(fs.Join(home, ".gitignore_global"))
c.Assert(err, IsNil)
_, err = f.Write([]byte("# IntelliJ\n"))
c.Assert(err, IsNil)
_, err = f.Write([]byte(".idea/\n"))
c.Assert(err, IsNil)
_, err = f.Write([]byte("*.iml\n"))
c.Assert(err, IsNil)
err = f.Close()
c.Assert(err, IsNil)

s.RFSR = fs

// root that contains user home, but missing ~/.gitconfig
fs = memfs.New()
err = fs.MkdirAll(home, os.ModePerm)
Expand Down Expand Up @@ -194,6 +222,17 @@ func (s *MatcherSuite) TestDir_ReadPatterns(c *C) {
c.Assert(m.Match([]string{"vendor", "github.com"}, true), Equals, false)
}

func (s *MatcherSuite) TestDir_ReadRelativeGlobalGitIgnore(c *C) {
ps, err := LoadGlobalPatterns(s.RFSR)
c.Assert(err, IsNil)
c.Assert(ps, HasLen, 2)

m := NewMatcher(ps)
c.Assert(m.Match([]string{".idea/"}, true), Equals, false)
c.Assert(m.Match([]string{"*.iml"}, true), Equals, true)
c.Assert(m.Match([]string{"IntelliJ"}, true), Equals, false)
}

func (s *MatcherSuite) TestDir_LoadGlobalPatterns(c *C) {
ps, err := LoadGlobalPatterns(s.RFS)
c.Assert(err, IsNil)
Expand Down

0 comments on commit 44feb6c

Please sign in to comment.