diff options
Diffstat (limited to 'plumbing/object')
-rw-r--r-- | plumbing/object/commit_walker_bfs_filtered_test.go | 10 | ||||
-rw-r--r-- | plumbing/object/commit_walker_file.go | 4 | ||||
-rw-r--r-- | plumbing/object/commit_walker_limit.go | 65 | ||||
-rw-r--r-- | plumbing/object/merge_base.go | 2 | ||||
-rw-r--r-- | plumbing/object/patch.go | 2 | ||||
-rw-r--r-- | plumbing/object/patch_test.go | 1 | ||||
-rw-r--r-- | plumbing/object/tree.go | 4 |
7 files changed, 76 insertions, 12 deletions
diff --git a/plumbing/object/commit_walker_bfs_filtered_test.go b/plumbing/object/commit_walker_bfs_filtered_test.go index d31bdf0..6984b60 100644 --- a/plumbing/object/commit_walker_bfs_filtered_test.go +++ b/plumbing/object/commit_walker_bfs_filtered_test.go @@ -29,9 +29,7 @@ func commitsFromIter(iter CommitIter) ([]*Commit, error) { func assertHashes(c *C, commits []*Commit, hashes []string) { if len(commits) != len(hashes) { var expected []string - for _, c := range hashes { - expected = append(expected, c) - } + expected = append(expected, hashes...) fmt.Println("expected:", strings.Join(expected, ", ")) var got []string for _, c := range commits { @@ -48,11 +46,7 @@ func assertHashes(c *C, commits []*Commit, hashes []string) { func validIfCommit(ignored plumbing.Hash) CommitFilter { return func(c *Commit) bool { - if c.Hash == ignored { - return true - } - - return false + return c.Hash == ignored } } diff --git a/plumbing/object/commit_walker_file.go b/plumbing/object/commit_walker_file.go index 6f16e61..b73e4ce 100644 --- a/plumbing/object/commit_walker_file.go +++ b/plumbing/object/commit_walker_file.go @@ -128,6 +128,9 @@ func isParentHash(hash plumbing.Hash, commit *Commit) bool { func (c *commitFileIter) ForEach(cb func(*Commit) error) error { for { commit, nextErr := c.Next() + if nextErr == io.EOF { + break + } if nextErr != nil { return nextErr } @@ -138,6 +141,7 @@ func (c *commitFileIter) ForEach(cb func(*Commit) error) error { return err } } + return nil } func (c *commitFileIter) Close() { diff --git a/plumbing/object/commit_walker_limit.go b/plumbing/object/commit_walker_limit.go new file mode 100644 index 0000000..ee56e50 --- /dev/null +++ b/plumbing/object/commit_walker_limit.go @@ -0,0 +1,65 @@ +package object + +import ( + "io" + "time" + + "gopkg.in/src-d/go-git.v4/plumbing/storer" +) + +type commitLimitIter struct { + sourceIter CommitIter + limitOptions LogLimitOptions +} + +type LogLimitOptions struct { + Since *time.Time + Until *time.Time +} + +func NewCommitLimitIterFromIter(commitIter CommitIter, limitOptions LogLimitOptions) CommitIter { + iterator := new(commitLimitIter) + iterator.sourceIter = commitIter + iterator.limitOptions = limitOptions + return iterator +} + +func (c *commitLimitIter) Next() (*Commit, error) { + for { + commit, err := c.sourceIter.Next() + if err != nil { + return nil, err + } + + if c.limitOptions.Since != nil && commit.Committer.When.Before(*c.limitOptions.Since) { + continue + } + if c.limitOptions.Until != nil && commit.Committer.When.After(*c.limitOptions.Until) { + continue + } + return commit, nil + } +} + +func (c *commitLimitIter) ForEach(cb func(*Commit) error) error { + for { + commit, nextErr := c.Next() + if nextErr == io.EOF { + break + } + if nextErr != nil { + return nextErr + } + err := cb(commit) + if err == storer.ErrStop { + return nil + } else if err != nil { + return err + } + } + return nil +} + +func (c *commitLimitIter) Close() { + c.sourceIter.Close() +} diff --git a/plumbing/object/merge_base.go b/plumbing/object/merge_base.go index 689e421..6f2568d 100644 --- a/plumbing/object/merge_base.go +++ b/plumbing/object/merge_base.go @@ -32,7 +32,7 @@ func (c *Commit) MergeBase(other *Commit) ([]*Commit, error) { var res []*Commit inNewerHistory := isInIndexCommitFilter(newerHistory) resIter := NewFilterCommitIter(older, &inNewerHistory, &inNewerHistory) - err = resIter.ForEach(func(commit *Commit) error { + _ = resIter.ForEach(func(commit *Commit) error { res = append(res, commit) return nil }) diff --git a/plumbing/object/patch.go b/plumbing/object/patch.go index 1efd0b1..32454ac 100644 --- a/plumbing/object/patch.go +++ b/plumbing/object/patch.go @@ -278,7 +278,7 @@ func printStat(fileStats []FileStat) string { var scaleFactor float64 if longestTotalChange > heightOfHistogram { // Scale down to heightOfHistogram. - scaleFactor = float64(longestTotalChange / heightOfHistogram) + scaleFactor = longestTotalChange / heightOfHistogram } else { scaleFactor = 1.0 } diff --git a/plumbing/object/patch_test.go b/plumbing/object/patch_test.go index 47057fb..37944c3 100644 --- a/plumbing/object/patch_test.go +++ b/plumbing/object/patch_test.go @@ -19,6 +19,7 @@ func (s *PatchSuite) TestStatsWithSubmodules(c *C) { fixtures.ByURL("https://github.com/git-fixtures/submodule.git").One().DotGit(), cache.NewObjectLRUDefault()) commit, err := GetCommit(storer, plumbing.NewHash("b685400c1f9316f350965a5993d350bc746b0bf4")) + c.Assert(err, IsNil) tree, err := commit.Tree() c.Assert(err, IsNil) diff --git a/plumbing/object/tree.go b/plumbing/object/tree.go index d30cf6e..d0b4fff 100644 --- a/plumbing/object/tree.go +++ b/plumbing/object/tree.go @@ -288,7 +288,7 @@ func (t *Tree) Encode(o plumbing.EncodedObject) (err error) { return err } - if _, err = w.Write([]byte(entry.Hash[:])); err != nil { + if _, err = w.Write(entry.Hash[:]); err != nil { return err } } @@ -517,4 +517,4 @@ func simpleJoin(parent, child string) string { return parent + "/" + child } return child -}
\ No newline at end of file +} |