mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-06 23:16:52 +02:00
#2071 Diff is not showing full content when has super long one line
This commit is contained in:
1 parent
91ae2ad28b
commit
926e91820a
5 files changed
+76
-58
No files matched your search
@@ -5,7 +5,7 @@ Gogs - Go Git Service [
|

|
||||||
|
|
||||||
##### Current version: 0.7.25 Beta
|
##### Current version: 0.7.26 Beta
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import (
|
|||||||
"github.com/gogits/gogs/modules/setting"
|
"github.com/gogits/gogs/modules/setting"
|
||||||
)
|
)
|
||||||
|
|
||||||
const APP_VER = "0.7.25.1202 Beta"
|
const APP_VER = "0.7.26.1202 Beta"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||||
|
|||||||
+71
-53
@@ -12,15 +12,14 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
|
||||||
|
|
||||||
|
"github.com/Unknwon/com"
|
||||||
"golang.org/x/net/html/charset"
|
"golang.org/x/net/html/charset"
|
||||||
"golang.org/x/text/transform"
|
"golang.org/x/text/transform"
|
||||||
|
|
||||||
"github.com/Unknwon/com"
|
"github.com/gogits/git-shell"
|
||||||
|
|
||||||
"github.com/gogits/gogs/modules/base"
|
"github.com/gogits/gogs/modules/base"
|
||||||
"github.com/gogits/gogs/modules/git"
|
|
||||||
"github.com/gogits/gogs/modules/log"
|
"github.com/gogits/gogs/modules/log"
|
||||||
"github.com/gogits/gogs/modules/process"
|
"github.com/gogits/gogs/modules/process"
|
||||||
)
|
)
|
||||||
@@ -80,36 +79,50 @@ func (diff *Diff) NumFiles() int {
|
|||||||
|
|
||||||
const DIFF_HEAD = "diff --git "
|
const DIFF_HEAD = "diff --git "
|
||||||
|
|
||||||
func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff, error) {
|
func ParsePatch(maxlines int, reader io.Reader) (*Diff, error) {
|
||||||
scanner := bufio.NewScanner(reader)
|
|
||||||
var (
|
var (
|
||||||
|
diff = &Diff{Files: make([]*DiffFile, 0)}
|
||||||
|
|
||||||
curFile *DiffFile
|
curFile *DiffFile
|
||||||
curSection = &DiffSection{
|
curSection = &DiffSection{
|
||||||
Lines: make([]*DiffLine, 0, 10),
|
Lines: make([]*DiffLine, 0, 10),
|
||||||
}
|
}
|
||||||
|
|
||||||
leftLine, rightLine int
|
leftLine, rightLine int
|
||||||
// FIXME: Should use cache in the future.
|
lineCount int
|
||||||
buf bytes.Buffer
|
|
||||||
)
|
)
|
||||||
|
|
||||||
diff := &Diff{Files: make([]*DiffFile, 0)}
|
input := bufio.NewReader(reader)
|
||||||
var i int
|
isEOF := false
|
||||||
for scanner.Scan() {
|
for {
|
||||||
line := scanner.Text()
|
if isEOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
line, err := input.ReadString('\n')
|
||||||
|
if err != nil {
|
||||||
|
if err == io.EOF {
|
||||||
|
isEOF = true
|
||||||
|
} else {
|
||||||
|
return nil, fmt.Errorf("ReadString: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(line) > 0 && line[len(line)-1] == '\n' {
|
||||||
|
// Remove line break.
|
||||||
|
line = line[:len(line)-1]
|
||||||
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(line, "+++ ") || strings.HasPrefix(line, "--- ") {
|
if strings.HasPrefix(line, "+++ ") || strings.HasPrefix(line, "--- ") {
|
||||||
continue
|
continue
|
||||||
}
|
} else if len(line) == 0 {
|
||||||
|
|
||||||
if line == "" {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
i = i + 1
|
lineCount++
|
||||||
|
|
||||||
// Diff data too large, we only show the first about maxlines lines
|
// Diff data too large, we only show the first about maxlines lines
|
||||||
if i >= maxlines {
|
if lineCount >= maxlines {
|
||||||
log.Warn("Diff data too large")
|
log.Warn("Diff data too large")
|
||||||
diff.Files = nil
|
diff.Files = nil
|
||||||
return diff, nil
|
return diff, nil
|
||||||
@@ -189,17 +202,26 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
|
|||||||
diff.Files = append(diff.Files, curFile)
|
diff.Files = append(diff.Files, curFile)
|
||||||
|
|
||||||
// Check file diff type.
|
// Check file diff type.
|
||||||
for scanner.Scan() {
|
for {
|
||||||
|
line, err := input.ReadString('\n')
|
||||||
|
if err != nil {
|
||||||
|
if err == io.EOF {
|
||||||
|
isEOF = true
|
||||||
|
} else {
|
||||||
|
return nil, fmt.Errorf("ReadString: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case strings.HasPrefix(scanner.Text(), "new file"):
|
case strings.HasPrefix(line, "new file"):
|
||||||
curFile.Type = DIFF_FILE_ADD
|
curFile.Type = DIFF_FILE_ADD
|
||||||
curFile.IsCreated = true
|
curFile.IsCreated = true
|
||||||
case strings.HasPrefix(scanner.Text(), "deleted"):
|
case strings.HasPrefix(line, "deleted"):
|
||||||
curFile.Type = DIFF_FILE_DEL
|
curFile.Type = DIFF_FILE_DEL
|
||||||
curFile.IsDeleted = true
|
curFile.IsDeleted = true
|
||||||
case strings.HasPrefix(scanner.Text(), "index"):
|
case strings.HasPrefix(line, "index"):
|
||||||
curFile.Type = DIFF_FILE_CHANGE
|
curFile.Type = DIFF_FILE_CHANGE
|
||||||
case strings.HasPrefix(scanner.Text(), "similarity index 100%"):
|
case strings.HasPrefix(line, "similarity index 100%"):
|
||||||
curFile.Type = DIFF_FILE_RENAME
|
curFile.Type = DIFF_FILE_RENAME
|
||||||
curFile.IsRenamed = true
|
curFile.IsRenamed = true
|
||||||
curFile.OldName = curFile.Name
|
curFile.OldName = curFile.Name
|
||||||
@@ -212,6 +234,8 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: detect encoding while parsing.
|
||||||
|
var buf bytes.Buffer
|
||||||
for _, f := range diff.Files {
|
for _, f := range diff.Files {
|
||||||
buf.Reset()
|
buf.Reset()
|
||||||
for _, sec := range f.Sections {
|
for _, sec := range f.Sections {
|
||||||
@@ -238,61 +262,55 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
|
|||||||
return diff, nil
|
return diff, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetDiffRange(repoPath, beforeCommitId string, afterCommitId string, maxlines int) (*Diff, error) {
|
func GetDiffRange(repoPath, beforeCommitID string, afterCommitID string, maxlines int) (*Diff, error) {
|
||||||
repo, err := git.OpenRepository(repoPath)
|
repo, err := git.OpenRepository(repoPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
commit, err := repo.GetCommit(afterCommitId)
|
commit, err := repo.GetCommit(afterCommitID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
rd, wr := io.Pipe()
|
|
||||||
var cmd *exec.Cmd
|
var cmd *exec.Cmd
|
||||||
// if "after" commit given
|
// if "after" commit given
|
||||||
if beforeCommitId == "" {
|
if len(beforeCommitID) == 0 {
|
||||||
// First commit of repository.
|
// First commit of repository.
|
||||||
if commit.ParentCount() == 0 {
|
if commit.ParentCount() == 0 {
|
||||||
cmd = exec.Command("git", "show", afterCommitId)
|
cmd = exec.Command("git", "show", afterCommitID)
|
||||||
} else {
|
} else {
|
||||||
c, _ := commit.Parent(0)
|
c, _ := commit.Parent(0)
|
||||||
cmd = exec.Command("git", "diff", "-M", c.ID.String(), afterCommitId)
|
cmd = exec.Command("git", "diff", "-M", c.ID.String(), afterCommitID)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cmd = exec.Command("git", "diff", "-M", beforeCommitId, afterCommitId)
|
cmd = exec.Command("git", "diff", "-M", beforeCommitID, afterCommitID)
|
||||||
}
|
}
|
||||||
cmd.Dir = repoPath
|
cmd.Dir = repoPath
|
||||||
cmd.Stdout = wr
|
|
||||||
cmd.Stdin = os.Stdin
|
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
done := make(chan error)
|
stdout, err := cmd.StdoutPipe()
|
||||||
go func() {
|
if err != nil {
|
||||||
cmd.Start()
|
return nil, fmt.Errorf("StdoutPipe: %v", err)
|
||||||
done <- cmd.Wait()
|
}
|
||||||
wr.Close()
|
|
||||||
}()
|
|
||||||
defer rd.Close()
|
|
||||||
|
|
||||||
desc := fmt.Sprintf("GetDiffRange(%s)", repoPath)
|
if err = cmd.Start(); err != nil {
|
||||||
pid := process.Add(desc, cmd)
|
return nil, fmt.Errorf("Start: %v", err)
|
||||||
go func() {
|
}
|
||||||
// In case process became zombie.
|
|
||||||
select {
|
|
||||||
case <-time.After(5 * time.Minute):
|
|
||||||
if errKill := process.Kill(pid); errKill != nil {
|
|
||||||
log.Error(4, "git_diff.ParsePatch(Kill): %v", err)
|
|
||||||
}
|
|
||||||
<-done
|
|
||||||
// return "", ErrExecTimeout.Error(), ErrExecTimeout
|
|
||||||
case err = <-done:
|
|
||||||
process.Remove(pid)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
return ParsePatch(pid, maxlines, cmd, rd)
|
pid := process.Add(fmt.Sprintf("GetDiffRange (%s)", repoPath), cmd)
|
||||||
|
defer process.Remove(pid)
|
||||||
|
|
||||||
|
diff, err := ParsePatch(maxlines, stdout)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("ParsePatch: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = cmd.Wait(); err != nil {
|
||||||
|
return nil, fmt.Errorf("Wait: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return diff, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetDiffCommit(repoPath, commitId string, maxlines int) (*Diff, error) {
|
func GetDiffCommit(repoPath, commitId string, maxlines int) (*Diff, error) {
|
||||||
|
|||||||
@@ -4364,7 +4364,7 @@ func confLocaleLocale_deDeIni() (*asset, error) {
|
|||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var _confLocaleLocale_enUsIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xbc\x7d\xeb\x92\xdc\x46\xae\xe6\x7f\x3e\x05\xad\x09\x85\xac\x88\x56\x29\x6c\x9f\xbd\x84\xc3\xb2\xb7\x25\x59\x97\x39\x6a\x75\x8f\xba\x35\xde\x59\x85\xa2\xcc\x2a\xb2\xab\x38\xaa\x22\xcb\x24\x4b\xad\xf6\x89\x13\xb1\x0f\xb0\x0f\xb0\xfb\x7a\xe7\x49\x16\xf8\x00\xe4\x8d\xac\x6e\xc9\x33\x71\xf4\x43\xcd\xca\x44\xde\x90\x48\x24\x12\x09\x20\x8b\xdd\x6e\x5e\x56\xfd\x32\x7f\x94\x1f\xe7\xbb\xa2\x6e\x36\x55\xdf\xe7\x7d\xb5\xb9\x7c\xb0\x6e\xfb\xa1\x2a\xf3\xe7\xf5\x40\xbf\xbb\x8f\xf5\xb2\xca\xb2\x75\xbb\xad\x08\xf4\x05\xfd\xc9\xca\xa2\x5f\x2f\xda\xa2\x2b\x29\xe1\xa9\x7d\x67\xd5\xa7\xdd\xa6\xed\x18\xe8\x67\xf9\xca\xd6\xd5\x66\xc7\x65\xe8\x4f\xd6\xd7\xab\x66\x5e\x37\xf4\xf3\x9c\xbe\xf2\x97\x8d\xa4\xb4\xfb\xc1\x92\x4e\xf7\x83\xa4\xed\x77\x96\xf4\x76\x97\x75\xd5\xaa\xa6\xde\x74\x94\xf4\x46\x3f\xb3\xab\x6a\xd1\xd7\x03\xb7\xf4\x8b\x7c\x65\x1f\xab\xae\xaf\x5b\xae\xfd\xaf\xf2\x95\xed\x8a\x15\x03\x9c\xd1\x9f\x6c\xa8\xb6\xbb\x4d\x81\x02\x17\xfa\x99\x6d\x8a\x66\xb5\x17\x98\x57\xfa\x99\x2d\xbb\x8a\xb2\xe6\x4d\x75\x45\xa9\x4f\xf0\x63\x36\x9b\x65\x7b\x42\xc2\x7c\xd7\xb5\x97\xf5\xa6\x9a\x17\x4d\x39\xdf\xca\x30\xdf\x52\x7a\xae\xe9\x39\xa5\xe7\x9c\x8e\x21\x54\x25\x0d\x75\x5e\xf4\x3a\x0e\xc2\x25\x8d\xbc\xe8\x33\x54\xd5\x14\x5b\x2b\xcd\x9f\x59\xb5\x2d\xea\x0d\x63\xed\x01\x7f\x50\xc7\xfb\xfe\xaa\x05\x6e\xcf\xf4\x93\x90\x30\x1f\xae\x77\x15\x70\xf0\xe0\x82\xbe\xb2\x65\xb1\x1b\x96\xeb\x82\xfb\x29\x5f\x19\x01\xed\x5a\x42\x46\xdb\x5d\x03\xce\x7e\x64\x6d\xb7\x2a\x9a\xfa\xf7\x62\x10\x04\x9d\x06\x3f\xb3\x6d\xdd\x75\x2d\xe3\xf6\x04\x1f\x19\x0d\x7d\xce\xf5\x50\xca\x6b\xc2\x42\x50\x0b\xe7\x6c\xeb\x55\x27\x68\xe4\xcc\x13\xfc\xe2\x5a\x38\xef\xb2\xed\x3e\x68\xc6\x33\xfe\x4c\x8a\x52\x27\x34\x37\x6e\xbf\x68\x08\xf1\x9a\x7b\x82\x1f\x11\x40\x9f\x15\xe5\x96\x50\xb9\x2b\x9a\x8a\x71\x74\xcc\xbf\x08\x2f\xf4\x2b\x2b\x96\xcb\x76\xdf\x0c\xf3\xbe\x1a\x86\xba\x59\x31\xb2\x8f\x25\x29\x3f\xd7\xa4\x2c\xc8\x73\x69\xd7\xed\xde\x4d\x27\xa5\xff\x8d\x7e\xe6\x67\xf2\x53\xf2\x82\x42\xc8\x74\x25\x79\x24\xfd\xfc\xb2\xaa\x4a\x19\x4b\x9f\x3f\xa3\xef\x6c\xb7\xdf\x6c\x08\x6b\xbf\xed\xab\x7e\xe0\x42\x67\xf4\x9b\xc6\x2f\xbf\xb3\xba\xef\xe9\x83\x92\x5f\xe2\x23\xa3\xa9\x6b\x96\x18\xcc\x13\x7c\x64\xd9\xbb\xbe\x2a\xba\xe5\xfa\x7d\x26\x7f\xd1\x57\xfe\x60\xda\x3b\x34\xa9\x4c\x48\x4a\x44\xd2\x82\x35\x90\x2d\xdb\x92\x7f\x3c\xa1\x3f\x54\x75\xdd\xf4\x43\xb1\xd9\xbc\xcf\xf4\x83\xc1\xe4\x4b\x26\x60\xa8\x07\x60\x41\x13\xf3\xf3\xa1\xda\xf5\x3c\x83\xf9\xb3\xba\xeb\x87\x07\x43\x4d\xc4\xfa\x66\xdf\x64\x65\xbb\xfc\x40\xcb\x80\x97\x34\x5a\x7e\x79\x99\x13\xb2\xee\xd1\x42\xe8\xf6\x4d\x43\xe8\xc9\x9f\xb7\x84\x32\x6a\xa6\xa6\xf6\x9f\x02\xfa\x28\xdf\x6d\xaa\xa2\x27\x90\xaa\x28\xf3\x1f\x8a\x7c\x28\xba\x55\x35\x3c\xba\x33\x5f\xd0\xf2\xfb\x70\x27\x5f\x77\xd5\xe5\xa3\x3b\x77\xfb\x3b\x3f\x3e\xdf\x53\xb1\x4d\xdd\x54\xfd\x0f\x0f\x8b\x1f\xf3\x65\x41\x39\x84\xc6\xeb\x7c\x51\x5d\xf2\x6a\xa3\xb6\x72\xa2\xf2\x66\xc5\x2b\xed\x7a\x58\x73\x83\x44\x09\xf4\xd1\xe7\xbc\xd4\xbf\xca\x78\x02\x88\x15\xcc\xcb\x85\xb1\x35\x74\x08\xc9\x1d\x4d\xc0\xc9\xf5\xf9\x5f\x5e\x1d\xe5\x67\xc4\xdb\x56\x5d\x85\x6f\xfa\x8f\x4a\x7c\x97\xd3\x68\x2f\xea\xa7\x8f\x67\x19\x95\x35\x84\x3c\x2d\x86\x62\xc1\x7d\x77\xb3\xcf\x99\xb2\x08\x5d\x1e\x96\x22\x73\x4b\x70\xc6\x7e\x88\xa6\x65\x6a\x21\x53\x1d\xba\xfc\x5d\x1d\xaf\x99\x07\x50\xba\xc3\xec\x99\xe0\x8c\xaa\xca\x5f\xbe\x7e\x7d\xfa\xf4\x71\x5e\x35\x2b\xc2\x4c\x7e\x55\x0f\xeb\x7c\x3f\x5c\xfe\xf7\xf9\xaa\x6a\xaa\xae\xd8\xcc\x97\x35\x23\xa5\x23\x82\xcd\x09\x4b\x32\xc4\x59\xd6\xf7\x1b\x62\x51\xa0\x82\xf3\xf3\x57\xf9\x09\x53\xc2\xae\x18\xd6\xe8\xc8\xb0\xce\xfa\xdf\x36\x8c\x28\xd7\xe0\xc5\xba\xca\xb1\x18\x00\xd4\x5e\xa6\x78\xc9\x4b\xed\xeb\x2c\xab\xba\x6e\x4e\x1c\x74\xb8\x66\x34\x6b\x9d\x87\xa0\xa5\x3a\xa2\xf6\xa6\x1d\x68\x1a\x73\x94\x93\x2a\xea\xe6\x63\xb1\xa9\x4b\x42\xb6\x47\x48\x5c\x16\x89\x65\x4b\xf3\xc6\xa5\x89\x32\xdb\x2b\x0c\xb5\x58\xd2\x06\xd0\xe7\x77\x66\x77\xc0\x71\xef\x3c\xb8\x33\xcb\x9a\x76\x2e\x5c\x82\x79\x73\x59\xf7\xc5\x82\xf8\xb4\xec\x1b\x9d\x71\xbd\xbf\x31\xfd\x48\x57\x14\x22\x8f\x20\x18\xb7\xbc\x17\x61\x0b\x60\xe2\x2a\x88\x61\x83\xd9\x28\x9b\x09\xc7\x6e\x3c\xc9\xcd\xaf\xb0\x25\x97\x30\x1a\x73\x66\x13\x66\xd4\x75\xbc\xdb\x6d\xea\xa5\x34\xfd\x5c\xf2\x3c\xa1\xf1\xce\xac\x48\x09\xe1\x40\x28\x96\x17\x90\x0b\xf5\x9a\xd9\x56\x1e\xf1\x79\x94\x5f\x57\xb4\x72\xd6\xfb\x95\xec\x4e\x9b\x76\x5f\x7e\x05\x86\x62\x33\xe7\xf9\x49\xfe\xa6\xa5\x0e\x83\x3a\x1c\x80\x6f\xe2\x98\x18\x03\x0b\x03\x5d\xb5\x6d\x07\x46\x9c\x16\xab\x69\x7a\xae\x6a\xca\xa4\x91\xf6\xc5\x47\x62\x8b\x43\x2b\x4b\xb2\xa4\x25\xb7\xe4\x8a\x89\x83\xed\x69\x47\x97\x65\x41\x7c\x44\x96\x86\xa5\xc5\x34\x08\xa8\xed\x9e\x56\xd3\x9a\x2a\x63\xc4\xb3\x44\x42\x55\x4e\xf5\x13\x43\xa2\x7a\xb0\xca\x69\xe5\xb6\xb4\x79\xf2\x44\x3f\xc5\x87\xfe\x0e\xeb\xa7\x5e\x15\x97\x97\xd4\xab\x9e\x56\xc5\x8b\x7c\xb9\x69\x69\x49\xbd\x7d\xf3\xaa\xe7\x05\xb3\x9e\xef\xda\x0e\x92\x08\x65\x9d\xd1\xa7\x4b\x0b\x10\xcd\x10\xcd\x7e\xbb\xa0\x5f\x57\xeb\x9a\x18\x35\xd0\xce\x25\x58\x4a\xa2\x54\x6a\x62\xdf\xd3\x14\x1Line truncated
|
var _confLocaleLocale_enUsIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xbc\x7d\xfd\x72\xdc\xc6\xae\xe7\xff\x7c\x0a\xc6\xa7\x5c\x4e\xaa\xe4\x49\x25\xb9\xfb\x51\xa9\x38\x59\xd9\x8e\x3f\xee\xb5\x2c\x5d\x4b\x39\x67\xcf\xa6\x5c\x13\x6a\x48\x8d\x78\x3d\x43\xce\x21\x39\x56\x74\x6e\xdd\x37\xd8\x07\xd8\xe7\xdb\x27\x59\xe0\x07\xa0\x1b\x4d\x72\x24\x3b\xf7\xd4\xfa\x0f\x8b\xd3\x8d\xfe\x42\xa3\xd1\x68\x34\x80\x2e\x76\xbb\x65\x59\xf5\xab\xfc\x49\x7e\x9c\xef\x8a\xba\xd9\x54\x7d\x9f\xf7\xd5\xe6\xea\xf1\x75\xdb\x0f\x55\x99\xbf\xac\x07\xfa\xdd\x7d\xac\x57\x55\x96\x5d\xb7\xdb\x8a\x40\x5f\xd1\x9f\xac\x2c\xfa\xeb\xcb\xb6\xe8\x4a\x4a\x78\x6e\xdf\x59\xf5\xfb\x6e\xd3\x76\x0c\xf4\xb3\x7c\x65\xd7\xd5\x66\xc7\x65\xe8\x4f\xd6\xd7\xeb\x66\x59\x37\xf4\xf3\x9c\xbe\xf2\xd7\x8d\xa4\xb4\xfb\xc1\x92\x4e\xf7\x83\xa4\xed\x77\x96\xf4\xcb\x2e\xeb\xaa\x75\x4d\xbd\xe9\x28\xe9\x9d\x7e\x66\x37\xd5\x65\x5f\x0f\xdc\xd2\x5f\xe4\x2b\xfb\x58\x75\x7d\xdd\x72\xed\x7f\x96\xaf\x6c\x57\xac\x19\xe0\x8c\xfe\x64\x43\xb5\xdd\x6d\x0a\x14\xb8\xd0\xcf\x6c\x53\x34\xeb\xbd\xc0\xbc\xd1\xcf\x6c\xd5\x55\x94\xb5\x6c\xaa\x1b\x4a\x7d\x86\x1f\x8b\xc5\x22\xdb\x13\x12\x96\xbb\xae\xbd\xaa\x37\xd5\xb2\x68\xca\xe5\x56\x86\xf9\x0b\xa5\xe7\x9a\x9e\x53\x7a\xce\xe9\x18\x42\x55\xd2\x50\x97\x45\xaf\xe3\x20\x5c\xd2\xc8\x8b\x3e\x43\x55\x4d\xb1\xb5\xd2\xfc\x99\x55\xdb\xa2\xde\x30\xd6\xf8\x2f\xf5\xbb\xef\x6f\x5a\xa0\xf6\x4c\x3f\x09\x07\xcb\xe1\x76\x57\x01\x05\x8f\x2f\xe8\x2b\x5b\x15\xbb\x61\x75\x5d\x70\x37\xe5\x2b\x23\xa0\x5d\x4b\xb8\x68\xbb\x5b\xc0\xd9\x8f\xac\xed\xd6\x45\x53\xff\xbd\x18\x04\x3f\xa7\xee\x67\xb6\xad\xbb\xae\x65\xd4\x9e\xe0\x23\xa3\x91\x2f\xb9\x1e\x4a\x79\x4b\x48\x70\xb5\x70\xce\xb6\x5e\x77\x82\x45\xce\x3c\xc1\x2f\xae\x85\xf3\xae\xda\xee\x83\x66\xbc\xe0\xcf\x51\x51\xea\x84\xe6\xa6\xed\x17\x0d\xe1\x5d\x73\x4f\xf0\x23\x01\xe8\xb3\xa2\xdc\x12\x26\x77\x45\x53\x31\x8a\x8e\xf9\x17\xe1\x85\x7e\x65\xc5\x6a\xd5\xee\x9b\x61\xd9\x57\xc3\x50\x37\x6b\xc6\xf5\xb1\x24\xe5\xe7\x9a\x94\xb9\xbc\x90\x76\xdb\xee\xc3\x6c\x52\xfa\x5f\xe9\x67\x7e\x26\x3f\x25\xcf\x15\x42\x66\x28\xc9\x23\xe9\x97\x57\x55\x55\xca\x58\xfa\xfc\x05\x7d\x67\xbb\xfd\x66\x43\x58\xfb\xdb\xbe\xea\x07\x2e\x74\x46\xbf\x69\xfc\xf2\x3b\xab\xfb\x9e\x3e\x28\xf9\x35\x3e\x32\x9a\xba\x66\x85\xc1\x3c\xc3\x47\x96\xfd\xda\x57\x45\xb7\xba\x7e\x9f\xc9\x5f\xf4\x95\x3f\x98\xf4\x0e\x4d\x2a\xd3\x91\xd2\x90\xb4\x60\x0d\x64\xab\xb6\xe4\x1f\xcf\xe8\x0f\x55\x5d\x37\xfd\x50\x6c\x36\xef\x33\xfd\x60\x30\xf9\x92\x09\x18\xea\x01\x58\xd0\xc4\xfc\x7c\xa8\x76\x3d\xcf\x60\xfe\xa2\xee\xfa\xe1\xf1\x50\x13\xad\xbe\xdb\x37\x59\xd9\xae\x3e\xd0\x2a\xe0\x15\x8d\x96\x5f\x5f\xe5\x84\xac\x47\xb4\x0e\xba\x7d\xd3\x10\x7a\xf2\x97\x2d\xa1\x8c\x9a\xa9\xa9\xfd\xe7\x80\x3e\xca\x77\x9b\xaa\xe8\x09\xa4\x2a\xca\xfc\x87\x22\x1f\x8a\x6e\x5d\x0d\x4f\x1e\x2c\x2f\x69\xf5\x7d\x78\x90\x5f\x77\xd5\xd5\x93\x07\x0f\xfb\x07\x3f\xbe\xdc\x53\xb1\x4d\xdd\x54\xfd\x0f\x5f\x17\x3f\xe6\xab\x82\x72\x08\x8d\xb7\xf9\x65\x75\xc5\x8b\x8d\xda\xca\x89\xca\x9b\x35\x2f\xb4\xdb\xe1\x9a\x1b\x24\x4a\xa0\x8f\x3e\xe7\x95\xfe\x45\xc6\x13\x40\x9c\x60\x59\x5e\x1a\x57\x43\x87\x90\xdc\xd1\x04\x9c\xdc\x9e\xff\xeb\x9b\xa3\xfc\x8c\x58\xdb\xba\xab\xf0\x4d\xff\x51\x89\xef\x72\x1a\xed\x45\xfd\xfc\xe9\x22\xa3\xb2\x86\x90\xe7\xc5\x50\x5c\x72\xdf\xc3\xec\x73\xa6\x2c\xc2\x90\x87\xa5\xc8\xcc\x12\x8c\xb1\x1f\x92\x69\x99\x5b\xc8\x54\x87\xae\xfe\x50\xc7\x5b\x66\x01\x94\x1e\x30\x7b\x26\x38\xa3\xaa\xf2\xd7\x6f\xdf\x9e\x3e\x7f\x9a\x57\xcd\x9a\x30\x93\xdf\xd4\xc3\x75\xbe\x1f\xae\xfe\xfb\x72\x5d\x35\x55\x57\x6c\x96\xab\x9a\x91\xd2\x11\xc1\xe6\x84\x25\x19\xe2\x22\xeb\xfb\x0d\x71\x28\x50\xc1\xf9\xf9\x9b\xfc\x84\x29\x61\x57\x0c\xd7\xe8\xc8\x70\x9d\xf5\x7f\xdb\x30\xa2\x42\x83\x17\xd7\x55\x8e\xc5\x00\xa0\xf6\x6a\x8c\x97\xbc\xd4\xbe\x2e\xb2\xaa\xeb\x96\xc4\x40\x87\x5b\x46\xb3\xd6\x79\x08\x5a\xaa\x23\x6a\x6f\xda\x81\xa6\x31\x47\x39\xa9\xa2\x6e\x3e\x16\x9b\xba\x24\x64\x47\x84\xa4\x65\x91\x58\xb6\x34\x6f\x5c\x9a\x28\xb3\xbd\xc1\x50\x8b\x15\xf1\xff\x3e\x7f\xb0\x78\x00\x86\xfb\xe0\xf1\x83\x45\xd6\xb4\x4b\xe1\x12\xcc\x9a\xcb\xba\x2f\x2e\x89\x4d\xcb\xb6\xd1\x19\xd7\xfb\x2b\xd3\x8f\x74\x45\x21\xf2\x04\x82\x71\xcb\x5b\x11\x76\x00\x26\xae\x82\xf8\x35\x98\x8d\xb2\x19\x3f\x76\xe3\x49\x61\x7e\x85\x2d\x85\x84\xc9\x98\x33\x9b\x30\xa3\xae\xe3\xdd\x6e\x53\xaf\xa4\xe9\x97\x92\x17\x09\x8d\x37\x66\x45\x8a\x87\x03\xa1\x58\x9e\x23\x17\xea\x35\xb3\xad\x3c\xe1\xf3\x28\x7f\x5d\xd1\xca\xb9\xde\xaf\x65\x73\xda\xb4\xfb\xf2\x0b\x30\x14\x9b\xb9\xc8\x4f\xf2\x77\x2d\x75\x18\xd4\x11\x00\x62\x13\xc7\xc4\x18\x58\x16\xe8\xaa\x6d\x3b\x30\xe2\xb4\x58\x4d\xd3\x73\x53\x53\x26\x8d\xb4\x2f\x3e\x12\x5b\x1c\x5a\x59\x92\x25\x2d\xb9\x15\x57\x4c\x1c\x6c\x4f\x1b\xba\x2c\x0b\xe2\x23\xb2\x34\x2c\x2d\xa5\x41\x40\x6d\xf7\xb4\x9a\xae\xa9\x32\x46\x3c\x0b\x24\x54\xe5\x5c\x3f\x31\x24\xaa\x07\xab\x9c\x56\x6e\x4b\x9b\x27\x4f\xf4\x73\x7c\xe8\x6f\x5f\x3f\xf5\xaa\xb8\xba\xa2\x5e\xf5\xb4\x2a\x5e\xe5\xab\x4d\x4b\x4b\xea\x97\x77\x6f\x7a\x5e\x30\xd7\xcb\x5d\xdb\x41\x10\xa1\xac\x33\xfa\x0c\x69\x0e\xd1\x0c\xd1\xec\xb7\x97\xf4\xeb\xe6\xba\x26\x46\x0d\xb4\x73\x09\x16\x92\x28\x95\x9a\xd8\xf7\x3Line truncated
|
||||||
|
|
||||||
func confLocaleLocale_enUsIniBytes() ([]byte, error) {
|
func confLocaleLocale_enUsIniBytes() ([]byte, error) {
|
||||||
return bindataRead(
|
return bindataRead(
|
||||||
@@ -4379,7 +4379,7 @@ func confLocaleLocale_enUsIni() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "conf/locale/locale_en-US.ini", size: 46414, mode: os.FileMode(420), modTime: time.Unix(1449030484, 0)}
|
info := bindataFileInfo{name: "conf/locale/locale_en-US.ini", size: 46399, mode: os.FileMode(420), modTime: time.Unix(1449031572, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
0.7.25.1202 Beta
|
0.7.26.1202 Beta
|
||||||
Reference in new issue
Block a user