Unknwon 10 năm trước cách đây
mục cha
commit
9a1fe801e5

+ 2 - 1
conf/locale/TRANSLATORS

@@ -2,4 +2,5 @@
 # Order of name is meaningless.
 
 Thomas Fanninger <gogs.thomas@fanninger.at>
-Łukasz Jan Niemier <lukasz@niemier.pl>
+Łukasz Jan Niemier <lukasz@niemier.pl>
+Lafriks <lafriks@gmail.com>

+ 24 - 24
conf/locale/locale_lv-LV.ini

@@ -34,7 +34,7 @@ account_settings=Konta iestatījumi
 settings=Iestatījumi
 
 news_feed=Jaunumu plūsma
-pull_requests=Vilkšanas pieprasījumi
+pull_requests=Izmaiņu pieprasījumi
 issues=Problēmas
 
 cancel=Atcelt
@@ -51,12 +51,12 @@ db_name=Datu bāzes nosaukums
 db_helper=Nepieciešams izmantot MySQL INNODB dzini ar rakstzīmju kopu utf8_general_ci.
 ssl_mode=SSL režīms
 path=Ceļš
-sqlite_helper=SQLite 3 datu bāzes faila ceļš.
+sqlite_helper=SQLite 3 datu bāzes faila atrašanās vieta.
 general_title=Gogs vispārīgie iestatījumi
-repo_path=Repozitorija saknes ceļš
+repo_path=Repozitoriju glabāšanas vieta
 repo_path_helper=Visi Git attālinātie repozitoriji tiks glabāti šajā direktorijā.
 run_user=Izpildes lietotājs
-run_user_helper=Lietotājam ir jābūt tiesībām rakstīšanas tiesībām repozitorija saknes direktorijai un Gogs jābūt palaistam zem šī lietotāja.
+run_user_helper=Lietotājam ir jābūt rakstīšanas tiesībām repozitorija saknes direktorijai un Gogs jābūt palaistam zem šī lietotāja.
 domain=Domēns
 domain_helper=Tas ietekmē SSH klonēšanas URL.
 app_url=Lietotnes URL
@@ -77,14 +77,14 @@ install_gogs=Instalēt Gogs
 test_git_failed=Kļūda pārbaudot 'git' komandu: %v
 sqlite3_not_available=Jūsu versija neatbalsta SQLite3, lūdzu lejupielādējiet oficiālo bināro versiju no %s, NEVIS gobuild versiju.
 invalid_db_setting=Datu bāzes iestatījums nav pareizs: %v
-invalid_repo_path=Repozitorija saknes ceļš ir nekorekts: %v
+invalid_repo_path=Repozitorija atrašanās vieta ir nekorekta: %v
 run_user_not_match=Izpildes lietotājs nav pašreizējais lietotājs: %s -> %s
-save_config_failed=Neizdevās saglanāt konfigurāciju: %v
+save_config_failed=Neizdevās saglabāt konfigurāciju: %v
 invalid_admin_setting=Nekorekts admin konta iestatījums: %v
 install_success=Laipni lūdzam! Mēs priecājamies, ka Jūs izvēlaties Gogs, patīkamu lietošanu!
 
 [home]
-uname_holder=Lietotājvārds vai e-pasta adrese
+uname_holder=Lietotājvārds vai e-pasts
 password_holder=Parole
 switch_dashboard_context=Mainīt infopaneļa kontekstu
 my_repos=Mani repozitoriji
@@ -291,7 +291,7 @@ no_desc=Nav apraksta
 quick_guide=Īsa pamācība
 clone_this_repo=Klonēt šo repozitoriju
 create_new_repo_command=Izveidot jaunu repozitoriju komandrindā
-push_exist_repo=Veikt <code>push</code> darbību eksistējošam repozitorijam no komandrindas
+push_exist_repo=Nosūtīt izmaiņas no komandrindas eksistējošam repozitorijam
 
 branch=Atzars
 tree=Koks
@@ -354,7 +354,7 @@ settings.payload_url=Vērtuma URL
 settings.content_type=Satura tips
 settings.secret=Noslēpums
 settings.event_desc=Kādu notikumu rezultātā tiktu izsaukts tīmekļā āķis?
-settings.event_push_only=Tikai <code>push</code> notikums.
+settings.event_push_only=Tikai izmaiņu nosūtīšanas notikumiem.
 settings.active=Aktīvs
 settings.active_helper=Tiks nosūtīti notikuma dati, kad nostrādās šis āķis.
 settings.add_hook_success=Jauns tīmekļa āķis tika veiksmīgi pievienots.
@@ -430,7 +430,7 @@ teams.leave=Atstāt
 teams.read_access=Lasīšanas piekļuve
 teams.read_access_helper=Komanda varēs skatīties un klonēt šīs organizācijas repozitorijus.
 teams.write_access=Rakstīšanas piekļuve
-teams.write_access_helper=Komanda varēs skatīties un klonēt, kā arī veikt <code>push</code> darbību šīs organizācijas repozitorijiem.
+teams.write_access_helper=Komanda varēs skatīties un klonēt, kā arī nosūtīt izmaiņas šīs organizācijas repozitorijiem.
 teams.admin_access=Administratora piekļuve
 teams.admin_access_helper=Šī komanda varēs veikt push/pull komandas tās repozitorijiem, kā arī tiem pievienot citus līdzstrādniekus.
 teams.no_desc=Komandai nav apraksta
@@ -444,7 +444,7 @@ teams.delete_team_title=Komandas dzēšana
 teams.delete_team_desc=Komanda tiks dzēsta, vai vēlaties turpināt? Komandas biedri var zaudēt piekļuvi dažiem vai pat visiem repozitorijiem.
 teams.delete_team_success=Komanda tika veiksmīgi izdzēsta.
 teams.read_permission_desc=Šai komandai ir <strong>lasīšanas</strong> tiesības: dalībnieki var skatīties un klonēt komandas repozitorijus.
-teams.write_permission_desc=Šai komandai ir <strong>rakstīšanas</strong> tiesības: dalībnieki var lasīt un veikt <code>push</code> komandas repozitorijiem.
+teams.write_permission_desc=Šai komandai ir <strong>rakstīšanas</strong> tiesības: dalībnieki var lasīt un nosūtīt izmaiņas repozitorijiem.
 teams.admin_permission_desc=Šai komandai ir <strong>administratora</strong> tiesības: dalībnieki var lasīt, rakstīt un pievienot citus dalībniekus komandas repozitorijiem.
 teams.repositories=Komandas repozitoriji
 teams.add_team_repository=Pievienot komandas repozitoriju
@@ -529,12 +529,12 @@ users.delete_account=Dzēst šo kontu
 users.still_own_repo=Šis konts ir vismaz viena repozitorija īpašnieks, tos sākumā ir nepieciešams izdzēst vai nomainīt to īpašnieku.
 users.still_has_org=Šis konts ir vismaz vienas organizācijas biedrs, sākumā nepieciešams pamest vai izdzēst šo organizāciju.
 
-orgs.org_manage_panel=Organizācijas pārvaldīšanas panelis
+orgs.org_manage_panel=Organizāciju pārvaldības panelis
 orgs.name=Nosaukums
 orgs.teams=Komandas
 orgs.members=Dalībnieki
 
-repos.repo_manage_panel=Repozitorija pārvaldes panelis
+repos.repo_manage_panel=Repozitoriju pārvaldības panelis
 repos.owner=Īpašnieks
 repos.name=Vārds
 repos.private=Privāts
@@ -542,7 +542,7 @@ repos.watches=Vērošana
 repos.stars=Atzīmētās zvaigznītes
 repos.issues=Problēmas
 
-auths.auth_manage_panel=Autorizācijas pārvaldīšanas panelis
+auths.auth_manage_panel=Autorizāciju pārvaldības panelis
 auths.new=Pievienot jaunu autorizācijas veidu
 auths.name=Nosaukums
 auths.type=Veids
@@ -580,9 +580,9 @@ config.offline_mode=Bezsaistes režīms
 config.disable_router_log=Atspējot maršrutētāja žurnalizēšanu
 config.run_user=Izpildes lietotājs
 config.run_mode=Izpildes režīms
-config.repo_root_path=Repozitorija saknes ceļš
-config.static_file_root_path=Statisko failu direktorija
-config.log_file_root_path=Žurnalizēšānas failu direktorija
+config.repo_root_path=Repozitoriju glabāšanas vieta
+config.static_file_root_path=Statisko failu atrašanās vieta
+config.log_file_root_path=Žurnalizēšanas failu glabāšanas vieta
 config.script_type=Skripta veids
 config.reverse_auth_user=Reversā lietotāja autentifikācija
 config.db_config=Datu bāzes konfigurācija
@@ -650,12 +650,12 @@ notices.op=Op.
 notices.delete_success=Sistēmas paziņojums tika veiksmīgi izdzēsts.
 
 [action]
-create_repo=izveidots repozitorijs <a href="%s/%s">%s</a>
-commit_repo=veica <code>push</code> atzaram <a href="%s/%s/src/%s">%s</a> repozitorijam <a href="%s/%s">%s</a>
-create_issue=reģistrēta problēma <a href="%s/%s/issues/%s">%s#%s</a>
-comment_issue=pievienots komentārs problēmai <a href="%s/%s/issues/%s">%s#%s</a>
-transfer_repo=Mainīja repozitorija īpašnieku <code>%s</code> uz <a href="/%s%s">%s</a>
-push_tag=veica <code>push</code> birkai <a href="%s/%s/src/%s">%s</a> uz <a href="%s/%s">%s</a>
+create_repo=izveidoja repozitoriju <a href="%s/%s">%s</a>
+commit_repo=veica izmaiņu nosūtīšanu atzaram <a href="%s/%s/src/%s">%s</a> repozitorijā <a href="%s/%s">%s</a>
+create_issue=reģistrēja problēmu <a href="%s/%s/issues/%s">%s#%s</a>
+comment_issue=pievienoja komentāru problēmai <a href="%s/%s/issues/%s">%s#%s</a>
+transfer_repo=mainīja repozitorija <code>%s</code> īpašnieku uz <a href="/%s%s">%s</a>
+push_tag=pievienoja birku <a href="%s/%s/src/%s">%s</a> repozitorijam <a href="%s/%s">%s</a>
 compare_2_commits=Veikt salīdzināšanu starp šīm 2 revīzijām
 
 [tool]
@@ -665,7 +665,7 @@ now=tagad
 1s=1 sekundi %s
 1m=1 minūti %s
 1h=1 stundu %s
-1d=1 diena %s
+1d=1 dienu %s
 1w=1 nedēļu %s
 1mon=1 mēnesi %s
 1y=1 gadu %s

+ 1 - 1
gogs.go

@@ -17,7 +17,7 @@ import (
 	"github.com/gogits/gogs/modules/setting"
 )
 
-const APP_VER = "0.5.8.1205 Beta"
+const APP_VER = "0.5.8.1209 Beta"
 
 func init() {
 	runtime.GOMAXPROCS(runtime.NumCPU())

+ 25 - 0
models/git_diff.go

@@ -6,6 +6,7 @@ package models
 
 import (
 	"bufio"
+	"bytes"
 	"fmt"
 	"io"
 	"os"
@@ -15,8 +16,10 @@ import (
 
 	"github.com/Unknwon/com"
 
+	"github.com/gogits/gogs/modules/base"
 	"github.com/gogits/gogs/modules/git"
 	"github.com/gogits/gogs/modules/log"
+	"github.com/gogits/gogs/modules/mahonia"
 	"github.com/gogits/gogs/modules/process"
 )
 
@@ -80,6 +83,8 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 
 		leftLine, rightLine int
 		isTooLong           bool
+		// FIXME: use first 30 lines to detect file encoding. Should use cache in the future.
+		buf bytes.Buffer
 	)
 
 	diff := &Diff{Files: make([]*DiffFile, 0)}
@@ -97,6 +102,11 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 
 		i = i + 1
 
+		// FIXME: use first 30 lines to detect file encoding.
+		if i <= 30 {
+			buf.WriteString(line)
+		}
+
 		// Diff data too large, we only show the first about maxlines lines
 		if i == maxlines {
 			isTooLong = true
@@ -181,6 +191,21 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 		}
 	}
 
+	// FIXME: use first 30 lines to detect file encoding.
+	charset, err := base.DetectEncoding(buf.Bytes())
+	if charset != "utf8" && err == nil {
+		decoder := mahonia.NewDecoder(charset)
+		if decoder != nil {
+			for _, f := range diff.Files {
+				for _, sec := range f.Sections {
+					for _, l := range sec.Lines {
+						l.Content = decoder.ConvertString(l.Content)
+					}
+				}
+			}
+		}
+	}
+
 	return diff, nil
 }
 

+ 2 - 2
modules/base/markdown.go

@@ -154,7 +154,7 @@ func RenderSpecialLink(rawBytes []byte, urlPrefix string) []byte {
 		rawBytes = bytes.Replace(rawBytes, m, []byte(fmt.Sprintf(
 			` <a href="%s">#%s</a>`, m, ShortSha(string(m[i+7:j])))), -1)
 	}
-	rawBytes = RenderissueIndexPattern(rawBytes, urlPrefix)
+	rawBytes = RenderIssueIndexPattern(rawBytes, urlPrefix)
 	rawBytes = RenderSha1CurrentPattern(rawBytes, urlPrefix)
 	return rawBytes
 }
@@ -168,7 +168,7 @@ func RenderSha1CurrentPattern(rawBytes []byte, urlPrefix string) []byte {
 	return rawBytes
 }
 
-func RenderissueIndexPattern(rawBytes []byte, urlPrefix string) []byte {
+func RenderIssueIndexPattern(rawBytes []byte, urlPrefix string) []byte {
 	ms := issueIndexPattern.FindAll(rawBytes, -1)
 	for _, m := range ms {
 		rawBytes = bytes.Replace(rawBytes, m, []byte(fmt.Sprintf(

+ 8 - 3
modules/base/template.go

@@ -47,18 +47,23 @@ func ShortSha(sha1 string) string {
 	return sha1
 }
 
-func ToUtf8WithErr(content []byte) (error, string) {
+func DetectEncoding(content []byte) (string, error) {
 	detector := chardet.NewTextDetector()
 	result, err := detector.DetectBest(content)
+	return result.Charset, err
+}
+
+func ToUtf8WithErr(content []byte) (error, string) {
+	charset, err := DetectEncoding(content)
 	if err != nil {
 		return err, ""
 	}
 
-	if result.Charset == "utf8" {
+	if charset == "utf8" {
 		return nil, string(content)
 	}
 
-	decoder := mahonia.NewDecoder(result.Charset)
+	decoder := mahonia.NewDecoder(charset)
 	if decoder != nil {
 		return nil, decoder.ConvertString(string(content))
 	}

+ 11 - 11
routers/repo/commit.go

@@ -33,6 +33,16 @@ func RefCommits(ctx *middleware.Context) {
 	}
 }
 
+func RenderIssueLinks(oldCommits *list.List, repoLink string) *list.List {
+	newCommits := list.New()
+	for e := oldCommits.Front(); e != nil; e = e.Next() {
+		c := e.Value.(*git.Commit)
+		c.CommitMessage = string(base.RenderIssueIndexPattern([]byte(c.CommitMessage), repoLink))
+		newCommits.PushBack(c)
+	}
+	return newCommits
+}
+
 func Commits(ctx *middleware.Context) {
 	ctx.Data["IsRepoToolbarCommits"] = true
 
@@ -86,16 +96,6 @@ func Commits(ctx *middleware.Context) {
 	ctx.HTML(200, COMMITS)
 }
 
-func RenderIssueLinks(oldCommits *list.List, repoLink string) *list.List {
-	newCommits := list.New()
-	for e := oldCommits.Front(); e != nil; e = e.Next() {
-		c := e.Value.(*git.Commit)
-		c.CommitMessage = string(base.RenderissueIndexPattern([]byte(c.CommitMessage), repoLink))
-		newCommits.PushBack(c)
-	}
-	return newCommits
-}
-
 func SearchCommits(ctx *middleware.Context) {
 	ctx.Data["IsSearchPage"] = true
 	ctx.Data["IsRepoToolbarCommits"] = true
@@ -206,7 +206,7 @@ func Diff(ctx *middleware.Context) {
 	commitId := ctx.Repo.CommitId
 
 	commit := ctx.Repo.Commit
-	commit.CommitMessage = string(base.RenderissueIndexPattern([]byte(commit.CommitMessage), ctx.Repo.RepoLink))
+	commit.CommitMessage = string(base.RenderIssueIndexPattern([]byte(commit.CommitMessage), ctx.Repo.RepoLink))
 	diff, err := models.GetDiffCommit(models.RepoPath(userName, repoName),
 		commitId, setting.MaxGitDiffLines)
 	if err != nil {

+ 6 - 1
routers/repo/view.go

@@ -152,6 +152,11 @@ func Home(ctx *middleware.Context) {
 			}
 		}
 
+		// Render issue index links.
+		for _, f := range files {
+			c := f[1].(*git.Commit)
+			c.CommitMessage = string(base.RenderIssueIndexPattern([]byte(c.CommitMessage), ctx.Repo.RepoLink))
+		}
 		ctx.Data["Files"] = files
 
 		var readmeFile *git.Blob
@@ -199,7 +204,7 @@ func Home(ctx *middleware.Context) {
 		}
 
 		lastCommit := ctx.Repo.Commit
-		lastCommit.CommitMessage = string(base.RenderissueIndexPattern([]byte(lastCommit.CommitMessage), ctx.Repo.RepoLink))
+		lastCommit.CommitMessage = string(base.RenderIssueIndexPattern([]byte(lastCommit.CommitMessage), ctx.Repo.RepoLink))
 		if len(treePath) > 0 {
 			c, err := ctx.Repo.Commit.GetCommitOfRelPath(treePath)
 			if err != nil {

+ 1 - 1
templates/.VERSION

@@ -1 +1 @@
-0.5.8.1205 Beta
+0.5.8.1209 Beta

+ 2 - 2
templates/admin/notice.tmpl

@@ -38,8 +38,8 @@
 					                </table>
 					                {{if or .LastPageNum .NextPageNum}}
 					                <ul class="pagination">
-					                    {{if .LastPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="{{AppSubUrl}}/admin/users?p={{.LastPageNum}}">&laquo; {{.i18n.Tr "admin.prev"}}</a></li>{{end}}
-					                    {{if .NextPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="{{AppSubUrl}}/admin/users?p={{.NextPageNum}}">&raquo; {{.i18n.Tr "admin.next"}}</a></li>{{end}}
+					                    {{if .LastPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="{{AppSubUrl}}/admin/notices?p={{.LastPageNum}}">&laquo; {{.i18n.Tr "admin.prev"}}</a></li>{{end}}
+					                    {{if .NextPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="{{AppSubUrl}}/admin/notices?p={{.NextPageNum}}">&raquo; {{.i18n.Tr "admin.next"}}</a></li>{{end}}
 					                </ul>
 					                {{end}}
 				                </div>

+ 1 - 1
templates/repo/diff.tmpl

@@ -112,7 +112,7 @@
                             </td>
                             
                             <td class="lines-code">
-                                <pre>{{ToUtf8 .Content}}</pre>
+                                <pre>{{.Content}}</pre>
                             </td>
                         </tr>
                         {{end}}

+ 1 - 1
templates/repo/view_list.tmpl

@@ -1,7 +1,7 @@
 <table id="repo-files-table" class="table-border table-block table-radius">
     <thead>
     <tr>
-        <th colspan="4" class="clear">
+        <th colspan="5" class="clear">
             <span class="author left">
                 {{if .LastCommitUser}}
                 <img class="avatar-24 radius" src="{{.LastCommitUser.AvatarLink}}" />