]> source.dussan.org Git - gitea.git/commitdiff
Update code.gitea.io/git (#2014)
authorEthan Koenig <etk39@cornell.edu>
Tue, 20 Jun 2017 05:05:32 +0000 (01:05 -0400)
committerLunny Xiao <xiaolunwen@gmail.com>
Tue, 20 Jun 2017 05:05:32 +0000 (13:05 +0800)
vendor/code.gitea.io/git/tree_entry.go
vendor/vendor.json

index f3b060345622edd323cbde114aeb07ebc1f95664..4c69002f4fe4bf5ecb4790073d18d189297cd34b 100644 (file)
@@ -6,8 +6,7 @@ package git
 
 import (
        "fmt"
-       "os"
-       "path/filepath"
+       "path"
        "sort"
        "strconv"
        "strings"
@@ -149,7 +148,7 @@ func (tes Entries) Sort() {
 // getCommitInfoState transient state for getting commit info for entries
 type getCommitInfoState struct {
        entries        map[string]*TreeEntry // map from filepath to entry
-       commits        map[string]*Commit    // map from entry name to commit
+       commits        map[string]*Commit    // map from filepath to commit
        lastCommitHash string
        lastCommit     *Commit
        treePath       string
@@ -160,7 +159,10 @@ type getCommitInfoState struct {
 func initGetCommitInfoState(entries Entries, headCommit *Commit, treePath string) *getCommitInfoState {
        entriesByPath := make(map[string]*TreeEntry, len(entries))
        for _, entry := range entries {
-               entriesByPath[filepath.Join(treePath, entry.Name())] = entry
+               entriesByPath[path.Join(treePath, entry.Name())] = entry
+       }
+       if treePath = path.Clean(treePath); treePath == "." {
+               treePath = ""
        }
        return &getCommitInfoState{
                entries:        entriesByPath,
@@ -180,7 +182,7 @@ func (tes Entries) GetCommitsInfo(commit *Commit, treePath string) ([][]interfac
 
        commitsInfo := make([][]interface{}, len(tes))
        for i, entry := range tes {
-               commit = state.commits[filepath.Join(treePath, entry.Name())]
+               commit = state.commits[path.Join(treePath, entry.Name())]
                switch entry.Type {
                case ObjectCommit:
                        subModuleURL := ""
@@ -211,22 +213,23 @@ func (state *getCommitInfoState) commit() (*Commit, error) {
        return state.lastCommit, err
 }
 
-func (state *getCommitInfoState) update(path string) error {
-       relPath, err := filepath.Rel(state.treePath, path)
-       if err != nil {
-               return nil
+func (state *getCommitInfoState) update(entryPath string) error {
+       var entryNameStartIndex int
+       if len(state.treePath) > 0 {
+               entryNameStartIndex = len(state.treePath) + 1
        }
-       var entryPath string
-       if index := strings.IndexRune(relPath, os.PathSeparator); index >= 0 {
-               entryPath = filepath.Join(state.treePath, relPath[:index])
-       } else {
-               entryPath = path
+
+       if index := strings.IndexByte(entryPath[entryNameStartIndex:], '/'); index >= 0 {
+               entryPath = entryPath[:entryNameStartIndex+index]
        }
+
        if _, ok := state.entries[entryPath]; !ok {
                return nil
        } else if _, ok := state.commits[entryPath]; ok {
                return nil
        }
+
+       var err error
        state.commits[entryPath], err = state.commit()
        return err
 }
@@ -251,17 +254,17 @@ func getNextCommitInfos(state *getCommitInfoState) error {
                state.nextCommit(lines[i])
                i++
                for ; i < len(lines); i++ {
-                       path := lines[i]
-                       if path == "" {
+                       entryPath := lines[i]
+                       if entryPath == "" {
                                break
                        }
-                       if path[0] == '"' {
-                               path, err = strconv.Unquote(path)
+                       if entryPath[0] == '"' {
+                               entryPath, err = strconv.Unquote(entryPath)
                                if err != nil {
                                        return fmt.Errorf("Unquote: %v", err)
                                }
                        }
-                       state.update(path)
+                       state.update(entryPath)
                }
                i++ // skip blank line
                if len(state.entries) == len(state.commits) {
@@ -284,9 +287,9 @@ func logCommand(exclusiveStartHash string, state *getCommitInfoState) *Command {
                searchSize := (numRemainingEntries + 1) / 2
                command = NewCommand("log", prettyLogFormat, "--name-only",
                        "-"+strconv.Itoa(searchSize), commitHash, "--")
-               for path, entry := range state.entries {
-                       if _, ok := state.commits[entry.Name()]; !ok {
-                               command.AddArguments(path)
+               for entryPath := range state.entries {
+                       if _, ok := state.commits[entryPath]; !ok {
+                               command.AddArguments(entryPath)
                        }
                }
        } else {
index 096cd3ac05893eec3cf7d996367fe84cb567b77f..773be8a48441c55d0025fa86cf557a97ec729982 100644 (file)
@@ -3,10 +3,10 @@
        "ignore": "test appengine",
        "package": [
                {
-                       "checksumSHA1": "LhKqkeygDmm0lohn3T4nna0HC/8=",
+                       "checksumSHA1": "Ve00iavGUw8bQmDeXuEJ51wEk40=",
                        "path": "code.gitea.io/git",
-                       "revision": "fb22c9ecdb33596b58430368900cc64c9fcdafd8",
-                       "revisionTime": "2017-06-16T02:13:53Z"
+                       "revision": "a34a13dea30c0d242c5256cc321b48f8041ce095",
+                       "revisionTime": "2017-06-20T02:08:21Z"
                },
                {
                        "checksumSHA1": "nLhT+bLMj8uLICP+EZbrdoQe6mM=",