From f15fa9167ade8262bed437451585d319f12d1182 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Sun, 8 Feb 2015 21:26:14 -0500 Subject: [PATCH] cmd: code fix for #905 - routers/admin: add rewrite update hook operation - conf/locale: update locale file due to ini behavior changes - cmd/cert_stub.go: remove useless code - cmd/fix.go: no longer need fix command(at least now) --- cmd/cert_stub.go | 9 -- cmd/dump.go | 2 +- cmd/fix.go | 184 ---------------------------- cmd/serve.go | 2 +- cmd/update.go | 2 +- cmd/web.go | 5 +- conf/locale/locale_de-DE.ini | 26 ++-- conf/locale/locale_en-US.ini | 13 +- conf/locale/locale_es-ES.ini | 7 +- conf/locale/locale_fr-CA.ini | 25 ++-- conf/locale/locale_ja-JP.ini | 7 +- conf/locale/locale_lv-LV.ini | 7 +- conf/locale/locale_nl-NL.ini | 7 +- conf/locale/locale_ru-RU.ini | 28 ++--- conf/locale/locale_zh-CN.ini | 7 +- conf/locale/locale_zh-HK.ini | 7 +- gogs.go | 3 +- models/action.go | 2 +- models/publickey.go | 2 +- models/repo.go | 29 +++-- routers/admin/admin.go | 4 + templates/.VERSION | 2 +- templates/admin/dashboard.tmpl | 5 +- templates/user/dashboard/feeds.tmpl | 4 +- 24 files changed, 106 insertions(+), 283 deletions(-) delete mode 100644 cmd/fix.go diff --git a/cmd/cert_stub.go b/cmd/cert_stub.go index 69c9821e02..1b68ca83f1 100644 --- a/cmd/cert_stub.go +++ b/cmd/cert_stub.go @@ -9,7 +9,6 @@ package cmd import ( "fmt" "os" - "time" "github.com/codegangsta/cli" ) @@ -20,14 +19,6 @@ var CmdCert = cli.Command{ Description: `Generate a self-signed X.509 certificate for a TLS server. Outputs to 'cert.pem' and 'key.pem' and will overwrite existing files.`, Action: runCert, - Flags: []cli.Flag{ - cli.StringFlag{"host", "", "Comma-separated hostnames and IPs to generate a certificate for", ""}, - cli.StringFlag{"ecdsa-curve", "", "ECDSA curve to use to generate a key. Valid values are P224, P256, P384, P521", ""}, - cli.IntFlag{"rsa-bits", 2048, "Size of RSA key to generate. Ignored if --ecdsa-curve is set", ""}, - cli.StringFlag{"start-date", "", "Creation date formatted as Jan 1 15:04:05 2011", ""}, - cli.DurationFlag{"duration", 365 * 24 * time.Hour, "Duration that certificate is valid for", ""}, - cli.BoolFlag{"ca", "whether this cert should be its own Certificate Authority", ""}, - }, } func runCert(ctx *cli.Context) { diff --git a/cmd/dump.go b/cmd/dump.go index 57f1113ea3..36bb4f0305 100644 --- a/cmd/dump.go +++ b/cmd/dump.go @@ -25,8 +25,8 @@ var CmdDump = cli.Command{ It can be used for backup and capture Gogs server image to send to maintainer`, Action: runDump, Flags: []cli.Flag{ + cli.StringFlag{"config, c", "custom/conf/app.ini", "Custom configuration file path", ""}, cli.BoolFlag{"verbose, v", "show process details", ""}, - cli.StringFlag{"config, c", "custom/conf/app.ini", "Configuration file", ""}, }, } diff --git a/cmd/fix.go b/cmd/fix.go deleted file mode 100644 index eff85d6282..0000000000 --- a/cmd/fix.go +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package cmd - -import ( - "bufio" - "fmt" - "io" - "io/ioutil" - "os" - "path" - "runtime" - "strings" - - "github.com/Unknwon/com" - "github.com/codegangsta/cli" - - "github.com/gogits/gogs/models" - "github.com/gogits/gogs/modules/setting" -) - -var CmdFix = cli.Command{ - Name: "fix", - Usage: "This command for upgrade from old version", - Action: runFix, - Subcommands: fixCommands, - Flags: []cli.Flag{}, -} - -func runFix(ctx *cli.Context) { -} - -var fixCommands = []cli.Command{ - { - Name: "location", - Usage: "Change Gogs app location", - Description: `Command location fixes location change of Gogs - -gogs fix location -`, - Action: runFixLocation, - }, -} - -// rewriteAuthorizedKeys replaces old Gogs path to the new one. -func rewriteAuthorizedKeys(sshPath, oldPath, newPath string) error { - fr, err := os.Open(sshPath) - if err != nil { - return err - } - defer fr.Close() - - tmpPath := sshPath + ".tmp" - fw, err := os.Create(tmpPath) - if err != nil { - return err - } - defer fw.Close() - - oldPath = "command=\"" + oldPath + " serv" - newPath = "command=\"" + newPath + " serv" - buf := bufio.NewReader(fr) - for { - line, errRead := buf.ReadString('\n') - line = strings.TrimSpace(line) - - if errRead != nil { - if errRead != io.EOF { - return errRead - } - - // Reached end of file, if nothing to read then break, - // otherwise handle the last line. - if len(line) == 0 { - break - } - } - - // Still finding the line, copy the line that currently read. - if _, err = fw.WriteString(strings.Replace(line, oldPath, newPath, 1) + "\n"); err != nil { - return err - } - - if errRead == io.EOF { - break - } - } - - if err = os.Remove(sshPath); err != nil { - return err - } - return os.Rename(tmpPath, sshPath) -} - -func rewriteUpdateHook(path, appPath string) error { - if runtime.GOOS == "windows" { - rp := strings.NewReplacer("\\", "/") - appPath = "\"" + rp.Replace(appPath) + "\"" - } else { - rp := strings.NewReplacer("\\", "/", " ", "\\ ") - appPath = rp.Replace(appPath) - } - - if err := ioutil.WriteFile(path, []byte(fmt.Sprintf(models.TPL_UPDATE_HOOK, - setting.ScriptType, appPath)), os.ModePerm); err != nil { - return err - } - return nil -} - -func walkDir(rootPath, recPath, appPath string, depth int) error { - depth++ - if depth > 3 { - return nil - } else if depth == 3 { - if err := rewriteUpdateHook(path.Join(rootPath, "hooks/update"), appPath); err != nil { - return err - } - } - - dir, err := os.Open(rootPath) - if err != nil { - return err - } - defer dir.Close() - - fis, err := dir.Readdir(0) - if err != nil { - return err - } - - for _, fi := range fis { - if strings.Contains(fi.Name(), ".DS_Store") { - continue - } - - relPath := path.Join(recPath, fi.Name()) - curPath := path.Join(rootPath, fi.Name()) - if fi.IsDir() { - if err = walkDir(curPath, relPath, appPath, depth); err != nil { - return err - } - } - } - return nil -} - -func runFixLocation(ctx *cli.Context) { - if len(ctx.Args()) != 1 { - fmt.Println("Incorrect arguments number, expect 1") - os.Exit(2) - } - - execPath, _ := setting.ExecPath() - - oldPath := ctx.Args().First() - fmt.Printf("Old location: %s\n", oldPath) - fmt.Println("This command should be executed in the new Gogs path") - fmt.Printf("Do you want to change Gogs app path from old location to:\n") - fmt.Printf("-> %s?\n", execPath) - fmt.Print("Press to continue, use to exit.") - fmt.Scanln() - - // Fix in authorized_keys file. - sshPath := path.Join(models.SSHPath, "authorized_keys") - if com.IsFile(sshPath) { - fmt.Printf("Fixing pathes in file: %s\n", sshPath) - if err := rewriteAuthorizedKeys(sshPath, oldPath, execPath); err != nil { - fmt.Println(err) - os.Exit(1) - } - } - - // Fix position in gogs-repositories. - setting.NewConfigContext() - fmt.Printf("Fixing pathes in repositories: %s\n", setting.RepoRootPath) - if err := walkDir(setting.RepoRootPath, "", execPath, 0); err != nil { - fmt.Println(err) - os.Exit(1) - } - fmt.Println("Fix position finished!") -} diff --git a/cmd/serve.go b/cmd/serve.go index af18e05c1e..28fd40134a 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -28,7 +28,7 @@ var CmdServ = cli.Command{ Description: `Serv provide access auth for repositories`, Action: runServ, Flags: []cli.Flag{ - cli.StringFlag{"config, c", "custom/conf/app.ini", "Configuration file", ""}, + cli.StringFlag{"config, c", "custom/conf/app.ini", "Custom configuration file path", ""}, }, } diff --git a/cmd/update.go b/cmd/update.go index 2ea7e942dd..c9eaeccf7b 100644 --- a/cmd/update.go +++ b/cmd/update.go @@ -20,7 +20,7 @@ var CmdUpdate = cli.Command{ Description: `Update get pushed info and insert into database`, Action: runUpdate, Flags: []cli.Flag{ - cli.StringFlag{"config, c", "custom/conf/app.ini", "Configuration file", ""}, + cli.StringFlag{"config, c", "custom/conf/app.ini", "Custom configuration file path", ""}, }, } diff --git a/cmd/web.go b/cmd/web.go index ceb2134447..3284acb9df 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -55,7 +55,7 @@ and it takes care of all the other things for you`, Action: runWeb, Flags: []cli.Flag{ cli.StringFlag{"port, p", "3000", "Temporary port number to prevent conflict", ""}, - cli.StringFlag{"config, c", "custom/conf/app.ini", "Configuration file", ""}, + cli.StringFlag{"config, c", "custom/conf/app.ini", "Custom configuration file path", ""}, }, } @@ -166,11 +166,12 @@ func newMacaron() *macaron.Macaron { } func runWeb(ctx *cli.Context) { + checkVersion() + if ctx.IsSet("config") { setting.CustomConf = ctx.String("config") } routers.GlobalInit() - checkVersion() m := newMacaron() diff --git a/conf/locale/locale_de-DE.ini b/conf/locale/locale_de-DE.ini index 2d22d0491c..1dc7523b0f 100755 --- a/conf/locale/locale_de-DE.ini +++ b/conf/locale/locale_de-DE.ini @@ -59,6 +59,8 @@ run_user=Ausführender Benutzer run_user_helper=Der Benutzer muss die Zugriffsberechtigung für das Repository Root-Verzeichnis haben und der ausführende Benutzer von Gogs sein. domain=Domain domain_helper=Dies hat Auswirkung auf die SSH clone URLs. +http_port=HTTP Port +http_port_helper=Port number which application will listen on. app_url=Anwendungs-URL app_url_helper=Dies hat Auswirkung auf die HTTP/HTTPS clone URLs und für die E-Mails. email_title=E-Mail-Service Einstellungen (optional) @@ -512,6 +514,11 @@ dashboard.delete_repo_archives=Alle Repository-Archive löschen dashboard.delete_repo_archives_success=Alle Repositoriy-Archive wurden gelöscht. dashboard.git_gc_repos=Führe Garbage Collection auf Repositories aus dashboard.git_gc_repos_success=Garbage Collection wurde auf allen Repositories erfolgreich ausgeführt. +dashboard.resync_all_sshkeys=Rewrite '.ssh/autorized_key' file (caution: non-Gogs keys will be lost) +dashboard.resync_all_sshkeys_success=All public keys have been rewritten successfully. +dashboard.resync_all_update_hooks=Rewrite all update hook of repositories (needed when custom config path is changed) +dashboard.resync_all_update_hooks_success=All repositories' update hook have been rewritten successfully. + dashboard.server_uptime=Server-Uptime dashboard.current_goroutine=Aktuelle Goroutines dashboard.current_memory_usage=Aktuelle Speichernutzung @@ -631,7 +638,7 @@ config.db_path_helper=(nur für "sqlite3") config.service_config=Service-Einstellungen config.register_email_confirm=E-Mail-Bestätigung bei Registrierung config.disable_register=Registrierung deaktivieren -config.show_registration_button = Registrierungs-Button anzeigen +config.show_registration_button=Show Register Button config.require_sign_in_view=Ansehen erfordert Registrierung config.mail_notify=E-Mail-Benachrichtigung config.enable_cache_avatar=Avatar-Cache aktivieren @@ -687,8 +694,8 @@ notices.delete_success=System-Mitteilung erfolgreich gelöscht. [action] create_repo=hat Repository %s erstellt commit_repo=hat nach %s in %s gepusht -create_issue=hat Issue %s#%s eröffnet -comment_issue=hat Issue %s#%s kommentiert +create_issue=`hat Issue %[1]s#%[2]s eröffnet` +comment_issue=`hat Issue %[1]s#%[2]s kommentiert` transfer_repo=hat Repository %s transferiert an %s push_tag=hat nach %s in %s gepusht compare_2_commits=Zeige Vergleich dieser 2 Commits @@ -714,16 +721,3 @@ years=%[2]s %[1]d Jahren raw_seconds=Sekunden raw_minutes=Minuten - - - - - - - - - - - - - diff --git a/conf/locale/locale_en-US.ini b/conf/locale/locale_en-US.ini index 4b8325ef4e..8ea383f26b 100644 --- a/conf/locale/locale_en-US.ini +++ b/conf/locale/locale_en-US.ini @@ -67,7 +67,7 @@ email_title = E-mail Service Settings (Optional) smtp_host = SMTP Host mailer_user = Sender E-mail mailer_password = Sender Password -notify_title = Notification Settings(Optional) +notify_title = Notification Settings (Optional) register_confirm = Enable Register Confirmation mail_notify = Enable Mail Notification admin_title = Admin Account Settings @@ -280,7 +280,7 @@ license_helper = Select a license file init_readme = Initialize this repository with a README.md create_repo = Create Repository default_branch = Default Branch -mirror_interval = Mirror Interval(hour) +mirror_interval = Mirror Interval (hour) goget_meta = Go-Get Meta goget_meta_helper = This repository will be Go-Getable @@ -514,8 +514,11 @@ dashboard.delete_repo_archives = Delete all repositories archives dashboard.delete_repo_archives_success = All repositories archives have been deleted successfully. dashboard.git_gc_repos = Do garbage collection on repositories dashboard.git_gc_repos_success = All repositories have done garbage collection successfully. -dashboard.resync_all_sshkeys = Rewrite '.ssh/autorized_key' file(caution: non-Gogs keys will be lost) +dashboard.resync_all_sshkeys = Rewrite '.ssh/autorized_key' file (caution: non-Gogs keys will be lost) dashboard.resync_all_sshkeys_success = All public keys have been rewritten successfully. +dashboard.resync_all_update_hooks = Rewrite all update hook of repositories (needed when custom config path is changed) +dashboard.resync_all_update_hooks_success = All repositories' update hook have been rewritten successfully. + dashboard.server_uptime = Server Uptime dashboard.current_goroutine = Current Goroutines dashboard.current_memory_usage = Current Memory Usage @@ -691,8 +694,8 @@ notices.delete_success = System notice has been deleted successfully. [action] create_repo = created repository %s commit_repo = pushed to %s at %s -create_issue = opened issue %s#%s -comment_issue = commented on issue %s#%s +create_issue = `opened issue %[1]s#%[2]s` +comment_issue = `commented on issue %[1]s#%[2]s` transfer_repo = transfered repository %s to %s push_tag = pushed tag %s to %s compare_2_commits = View comparison for these 2 commits diff --git a/conf/locale/locale_es-ES.ini b/conf/locale/locale_es-ES.ini index f76d0a314a..d7fab5f961 100755 --- a/conf/locale/locale_es-ES.ini +++ b/conf/locale/locale_es-ES.ini @@ -516,6 +516,9 @@ dashboard.git_gc_repos=Ejecutar la recolección de basura en los repositorios dashboard.git_gc_repos_success=Todos los repositorios han ejecutado correctamente el recolector de basuras. dashboard.resync_all_sshkeys=Reescribir el fichero '.ssh/authorized_key'(atención: se perderán las claves que no pertenezcan a Gogs) dashboard.resync_all_sshkeys_success=Todas las claves públicas se han reescrito correctamente. +dashboard.resync_all_update_hooks=Rewrite all update hook of repositories (needed when custom config path is changed) +dashboard.resync_all_update_hooks_success=All repositories' update hook have been rewritten successfully. + dashboard.server_uptime=Uptime del Servidor dashboard.current_goroutine=Gorutinas Actuales dashboard.current_memory_usage=Uso de Memoria Actual @@ -691,8 +694,8 @@ notices.delete_success=System notice has been deleted successfully. [action] create_repo=created repository %s commit_repo=pushed to %s at %s -create_issue=opened issue %s#%s -comment_issue=commented on issue %s#%s +create_issue=`opened issue %[1]s#%[2]s` +comment_issue=`commented on issue %[1]s#%[2]s` transfer_repo=transfered repository %s to %s push_tag=pushed tag %s to %s compare_2_commits=View comparison for these 2 commits diff --git a/conf/locale/locale_fr-CA.ini b/conf/locale/locale_fr-CA.ini index ebe74e19bb..94a2e96867 100755 --- a/conf/locale/locale_fr-CA.ini +++ b/conf/locale/locale_fr-CA.ini @@ -59,6 +59,8 @@ run_user=Entrer un Utilisateur run_user_helper=L'utilisateur doit avoir accès à la Racine du Référentiel et éxécuter Gogs. domain=Domaine domain_helper=Cela affecte les doublons d'URL SSH. +http_port=HTTP Port +http_port_helper=Port number which application will listen on. app_url=URL de l'Application app_url_helper=Cela affecte les doublons d'URL HTTP/HTTPS et le contenu d'e-mail. email_title=Paramètres du Service de Messagerie (Facultatif) @@ -512,6 +514,11 @@ dashboard.delete_repo_archives=Supprimer toutes les archives de référentiels dashboard.delete_repo_archives_success=Toutes les archives de référentiels ont été supprimés avec succès. dashboard.git_gc_repos=Collecter les déchets des référentiels dashboard.git_gc_repos_success=Tous les référentiels ont effectué la collecte avec succès. +dashboard.resync_all_sshkeys=Rewrite '.ssh/autorized_key' file (caution: non-Gogs keys will be lost) +dashboard.resync_all_sshkeys_success=All public keys have been rewritten successfully. +dashboard.resync_all_update_hooks=Rewrite all update hook of repositories (needed when custom config path is changed) +dashboard.resync_all_update_hooks_success=All repositories' update hook have been rewritten successfully. + dashboard.server_uptime=Durée de Marche Serveur dashboard.current_goroutine=Goroutines actuelles dashboard.current_memory_usage=Utilisation Mémoire actuelle @@ -631,6 +638,7 @@ config.db_path_helper=("sqlite3" uniquement) config.service_config=Configuration du Service config.register_email_confirm=Nécessite une confirmation par courriel config.disable_register=Désactiver l'Enregistrement +config.show_registration_button=Show Register Button config.require_sign_in_view=Connexion Obligatoire pour Visualiser config.mail_notify=Mailer les Notifications config.enable_cache_avatar=Activer le Cache d'Avatar @@ -686,8 +694,8 @@ notices.delete_success=Note système supprimée avec succès. [action] create_repo=a crée le Référentiel %s commit_repo=a soumis à %s chez %s -create_issue=a ouvert un problème %s#%s -comment_issue=a commenté le problème %s#%s +create_issue=`a ouvert un problème %[1]s#%[2]s` +comment_issue=`a commenté le problème %[1]s#%[2]s` transfer_repo=a transféré le Référentiel %s à %s push_tag=a tagé %s à %s compare_2_commits=Comparer ces 2 commissions @@ -713,16 +721,3 @@ years=%d ans %s raw_seconds=secondes raw_minutes=minutes - - - - - - - - - - - - - diff --git a/conf/locale/locale_ja-JP.ini b/conf/locale/locale_ja-JP.ini index a64ed0071f..c8b70aa1cf 100755 --- a/conf/locale/locale_ja-JP.ini +++ b/conf/locale/locale_ja-JP.ini @@ -516,6 +516,9 @@ dashboard.git_gc_repos=リポジトリでのガベージコレクションを実 dashboard.git_gc_repos_success=すべてのリポジトリは正常にガベージ コレクションを行いました。 dashboard.resync_all_sshkeys='.ssh/ autorized_key' ファイルを再生成します。(警告:Gogsキー以外は失われます) dashboard.resync_all_sshkeys_success=すべての公開鍵が正常に書き換えられました。 +dashboard.resync_all_update_hooks=Rewrite all update hook of repositories (needed when custom config path is changed) +dashboard.resync_all_update_hooks_success=All repositories' update hook have been rewritten successfully. + dashboard.server_uptime=サーバーの稼働時間 dashboard.current_goroutine=現在のGoroutine dashboard.current_memory_usage=現在のメモリ使用量 @@ -691,8 +694,8 @@ notices.delete_success=システム通知が正常に削除されました。 [action] create_repo=リポジトリ %sを作成しました commit_repo=%s%sにプッシュしました -create_issue=問題 %s #%s を開きました -comment_issue=問題 %s #%s のコメント +create_issue=`問題 %[1]s#%[2]s を開きました` +comment_issue=`問題 %[1]s#%[2]s のコメント` transfer_repo=リポジトリ %s%s へ転送しました push_tag=%s に タグ %s をプッシュしました compare_2_commits=これら 2 のコミットの比較を閲覧する diff --git a/conf/locale/locale_lv-LV.ini b/conf/locale/locale_lv-LV.ini index 34430ed64a..6ab814806f 100755 --- a/conf/locale/locale_lv-LV.ini +++ b/conf/locale/locale_lv-LV.ini @@ -516,6 +516,9 @@ dashboard.git_gc_repos=Veikt repozitoriju datu sakārtošānu (git gc) dashboard.git_gc_repos_success=Datu sakārtošana visiem repozitorijiem veiksmīgi pabeigta. dashboard.resync_all_sshkeys=Pārrakstīt '.ssh/authorized_key' failu (brīdinājums: ne-Git atslēgas tiks pazaudētas) dashboard.resync_all_sshkeys_success=Visas publiskās atslēgas tika veiksmīgi pārrakstītas. +dashboard.resync_all_update_hooks=Rewrite all update hook of repositories (needed when custom config path is changed) +dashboard.resync_all_update_hooks_success=All repositories' update hook have been rewritten successfully. + dashboard.server_uptime=Servera darbības laiks dashboard.current_goroutine=Izmantotās Gorutīnas dashboard.current_memory_usage=Pašreiz izmantotā atmiņa @@ -691,8 +694,8 @@ notices.delete_success=Sistēmas paziņojums tika veiksmīgi izdzēsts. [action] create_repo=izveidoja repozitoriju %s commit_repo=veica izmaiņu nosūtīšanu atzaram %s repozitorijā %s -create_issue=reģistrēja problēmu %s#%s -comment_issue=pievienoja komentāru problēmai %s#%s +create_issue=`reģistrēja problēmu %[1]s#%[2]s` +comment_issue=`pievienoja komentāru problēmai %[1]s#%[2]s` transfer_repo=mainīja repozitorija %s īpašnieku uz %s push_tag=pievienoja tagu %s repozitorijam %s compare_2_commits=Veikt salīdzināšanu starp šīm 2 revīzijām diff --git a/conf/locale/locale_nl-NL.ini b/conf/locale/locale_nl-NL.ini index 414eb1ff81..adc98c9d5a 100755 --- a/conf/locale/locale_nl-NL.ini +++ b/conf/locale/locale_nl-NL.ini @@ -516,6 +516,9 @@ dashboard.git_gc_repos=Garbage collectie uitvoeren dashboard.git_gc_repos_success=Garbage collectie met succes uitgevoerd. dashboard.resync_all_sshkeys=Herschrijf '.ssh/authorized_keys' (Let op: alle sleutels die niet van Gogs zijn zullen verloren gaan!) dashboard.resync_all_sshkeys_success=Alle publieke sleutels zijn herschreven. +dashboard.resync_all_update_hooks=Rewrite all update hook of repositories (needed when custom config path is changed) +dashboard.resync_all_update_hooks_success=All repositories' update hook have been rewritten successfully. + dashboard.server_uptime=Uptime server dashboard.current_goroutine=Huidige Goroutines dashboard.current_memory_usage=Huidige geheugen gebruik @@ -691,8 +694,8 @@ notices.delete_success=Systeem bericht is met succes verwijderd. [action] create_repo=repositorie aangemaakt in %s commit_repo=push update naar %s in %s%s#%s -comment_issue=reactie op issue %s#%s +create_issue=`opende issue in %[1]s#%[2]s` +comment_issue=`reactie op issue %[1]s#%[2]s` transfer_repo=repositorie verplaatst naar %s naar %s push_tag=geduwd label %s naar %s compare_2_commits=Weergave vergelijking voor deze 2 commits diff --git a/conf/locale/locale_ru-RU.ini b/conf/locale/locale_ru-RU.ini index dfb5870dfd..aa2c0ee558 100755 --- a/conf/locale/locale_ru-RU.ini +++ b/conf/locale/locale_ru-RU.ini @@ -59,6 +59,8 @@ run_user=Пользователь run_user_helper=У пользователя должен быть доступ к пути к корню репозитория и к запуску Gogs. domain=Домен domain_helper=This affects SSH clone URLs. +http_port=HTTP Port +http_port_helper=Port number which application will listen on. app_url=URL приложения app_url_helper=This affects HTTP/HTTPS clone URL and somewhere in e-mail. email_title=Настройки службы электронной почты (опционально) @@ -278,7 +280,7 @@ license_helper=Выберите файл лицензии init_readme=Создать репозиторий с файлом README.md create_repo=Создание репозитория default_branch=Ветка по умолчанию -mirror_interval=Mirror Interval(hour) +mirror_interval=Mirror Interval (hour) goget_meta=Go-Get Meta goget_meta_helper=This repository will be Go-Getable @@ -512,6 +514,11 @@ dashboard.delete_repo_archives=Удаление всех архивов репо dashboard.delete_repo_archives_success=Все архивы репозиториев были успешно удалены. dashboard.git_gc_repos=Выполнить сборку мусора на репозиториях dashboard.git_gc_repos_success=Сборка мусора на всех репозиториях успешно выполнена. +dashboard.resync_all_sshkeys=Rewrite '.ssh/autorized_key' file (caution: non-Gogs keys will be lost) +dashboard.resync_all_sshkeys_success=All public keys have been rewritten successfully. +dashboard.resync_all_update_hooks=Rewrite all update hook of repositories (needed when custom config path is changed) +dashboard.resync_all_update_hooks_success=All repositories' update hook have been rewritten successfully. + dashboard.server_uptime=Время непрерывной работы сервера dashboard.current_goroutine=Current Goroutines dashboard.current_memory_usage=Текущее использование памяти @@ -631,7 +638,7 @@ config.db_path_helper=(for "sqlite3" only) config.service_config=Service Configuration config.register_email_confirm=Require E-mail Confirmation config.disable_register=Отключить регистрацию -config.show_registration_button = Показать Регистрация Кнопка +config.show_registration_button=Show Register Button config.require_sign_in_view=Для просмотра необходима авторизация config.mail_notify=Почтовые уведомления config.enable_cache_avatar=Кешировать аватар @@ -687,8 +694,8 @@ notices.delete_success=System notice has been deleted successfully. [action] create_repo=создан репозиторий %s commit_repo=pushed to %s at %s -create_issue=opened issue %s#%s -comment_issue=commented on issue %s#%s +create_issue=`opened issue %[1]s#%[2]s` +comment_issue=`commented on issue %[1]s#%[2]s` transfer_repo=transfered repository %s to %s push_tag=pushed tag %s to %s compare_2_commits=View comparison for these 2 commits @@ -714,16 +721,3 @@ years=%d years %s raw_seconds=seconds raw_minutes=minutes - - - - - - - - - - - - - diff --git a/conf/locale/locale_zh-CN.ini b/conf/locale/locale_zh-CN.ini index e188a648ae..efeca15adb 100755 --- a/conf/locale/locale_zh-CN.ini +++ b/conf/locale/locale_zh-CN.ini @@ -516,6 +516,9 @@ dashboard.git_gc_repos=对仓库进行垃圾回收 dashboard.git_gc_repos_success=所有仓库垃圾回收成功! dashboard.resync_all_sshkeys=重新生成 '.ssh/autorized_key' 文件(警告:不是 Gogs 的密钥也会被删除) dashboard.resync_all_sshkeys_success=所有公钥重新生成成功! +dashboard.resync_all_update_hooks=重新生成所有仓库的 Update 钩子(用于自定义配置文件被修改) +dashboard.resync_all_update_hooks_success=所有仓库的 Update 钩子重新生成成功! + dashboard.server_uptime=服务运行时间 dashboard.current_goroutine=当前 Goroutines 数量 dashboard.current_memory_usage=当前内存使用量 @@ -691,8 +694,8 @@ notices.delete_success=系统提示删除成功! [action] create_repo=创建了仓库 %s commit_repo=推送了 %s 分支的代码到 %s -create_issue=创建了工单 %s#%s -comment_issue=评论了工单 %s#%s +create_issue=`创建了工单 %[1]s#%[2]s` +comment_issue=`评论了工单 %[1]s#%[2]s` transfer_repo=将仓库 %s 转移至 %s push_tag=推送了标签 %s%s compare_2_commits=查看 2 次提交的内容对比 diff --git a/conf/locale/locale_zh-HK.ini b/conf/locale/locale_zh-HK.ini index 2fa837896d..0c9ba19091 100755 --- a/conf/locale/locale_zh-HK.ini +++ b/conf/locale/locale_zh-HK.ini @@ -516,6 +516,9 @@ dashboard.git_gc_repos=對倉庫進行垃圾回收 dashboard.git_gc_repos_success=所有倉庫的垃圾回收已成功完成! dashboard.resync_all_sshkeys=重新生成 '.ssh/autorized_key' 文件(警告:不是 Gogs 的密鑰也會被刪除) dashboard.resync_all_sshkeys_success=所有公鑰重新生成成功! +dashboard.resync_all_update_hooks=Rewrite all update hook of repositories (needed when custom config path is changed) +dashboard.resync_all_update_hooks_success=All repositories' update hook have been rewritten successfully. + dashboard.server_uptime=服務執行時間 dashboard.current_goroutine=當前 Goroutines 數量 dashboard.current_memory_usage=當前內存使用量 @@ -691,8 +694,8 @@ notices.delete_success=系統提示刪除成功! [action] create_repo=創建了倉庫 %s commit_repo=推送了 %s 分支的代碼到 %s -create_issue=創建了問題 %s#%s -comment_issue=評論了問題 %s#%s +create_issue=`創建了問題 %[1]s#%[2]s` +comment_issue=`評論了問題 %[1]s#%[2]s` transfer_repo=將倉庫 %s 轉移至 %s push_tag=推送了標籤 %s%s compare_2_commits=查看 2 次提交的內容對比 diff --git a/gogs.go b/gogs.go index c09c4ca196..6edf316f81 100644 --- a/gogs.go +++ b/gogs.go @@ -17,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.5.13.0207 Beta" +const APP_VER = "0.5.13.0208 Beta" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) @@ -33,7 +33,6 @@ func main() { cmd.CmdWeb, cmd.CmdServ, cmd.CmdUpdate, - cmd.CmdFix, cmd.CmdDump, cmd.CmdCert, } diff --git a/models/action.go b/models/action.go index a6c6cfbfaa..5cba2f515a 100644 --- a/models/action.go +++ b/models/action.go @@ -98,7 +98,7 @@ func (a Action) GetRepoName() string { } func (a Action) GetRepoLink() string { - return path.Join(a.RepoUserName, a.RepoName) + return path.Join(setting.AppSubUrl, a.RepoUserName, a.RepoName) } func (a Action) GetBranch() string { diff --git a/models/publickey.go b/models/publickey.go index 893ff5c96a..b1c7b62449 100644 --- a/models/publickey.go +++ b/models/publickey.go @@ -29,7 +29,7 @@ import ( const ( // "### autogenerated by gitgos, DO NOT EDIT\n" - _TPL_PUBLICK_KEY = `command="%s serv --config=%s key-%d",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty %s` + "\n" + _TPL_PUBLICK_KEY = `command="%s serv --config='%s' key-%d",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty %s` + "\n" ) var ( diff --git a/models/repo.go b/models/repo.go index 5a40c5b987..f2f10baff0 100644 --- a/models/repo.go +++ b/models/repo.go @@ -30,7 +30,7 @@ import ( ) const ( - TPL_UPDATE_HOOK = "#!/usr/bin/env %s\n%s update --config=%s $1 $2 $3\n" + _TPL_UPDATE_HOOK = "#!/usr/bin/env %s\n%s update --config='%s' $1 $2 $3\n" ) var ( @@ -402,15 +402,9 @@ func initRepoCommit(tmpPath string, sig *git.Signature) (err error) { return nil } -func createHookUpdate(hookPath, content string) error { - pu, err := os.OpenFile(hookPath, os.O_CREATE|os.O_WRONLY, 0777) - if err != nil { - return err - } - defer pu.Close() - - _, err = pu.WriteString(content) - return err +func createHookUpdate(repoPath string) error { + return ioutil.WriteFile(path.Join(repoPath, "hooks/update"), + []byte(fmt.Sprintf(_TPL_UPDATE_HOOK, setting.ScriptType, "\""+appPath+"\"", setting.CustomConf)), 0777) } // InitRepository initializes README and .gitignore if needed. @@ -423,8 +417,7 @@ func initRepository(f string, u *User, repo *Repository, initReadme bool, repoLa } // hook/post-update - if err := createHookUpdate(filepath.Join(repoPath, "hooks", "update"), - fmt.Sprintf(TPL_UPDATE_HOOK, setting.ScriptType, "\""+appPath+"\"", setting.CustomConf)); err != nil { + if err := createHookUpdate(repoPath); err != nil { return err } @@ -1174,6 +1167,18 @@ func DeleteRepositoryArchives() error { }) } +// RewriteRepositoryUpdateHook rewrites all repositories' update hook. +func RewriteRepositoryUpdateHook() error { + return x.Where("id > 0").Iterate(new(Repository), + func(idx int, bean interface{}) error { + repo := bean.(*Repository) + if err := repo.GetOwner(); err != nil { + return err + } + return createHookUpdate(RepoPath(repo.Owner.Name, repo.Name)) + }) +} + var ( // Prevent duplicate tasks. isMirrorUpdating = false diff --git a/routers/admin/admin.go b/routers/admin/admin.go index ea50d5c4cb..d54bb629fd 100644 --- a/routers/admin/admin.go +++ b/routers/admin/admin.go @@ -119,6 +119,7 @@ const ( CLEAN_REPO_ARCHIVES GIT_GC_REPOS SYNC_SSH_AUTHORIZED_KEY + SYNC_REPOSITORY_UPDATE_HOOK ) func Dashboard(ctx *middleware.Context) { @@ -148,6 +149,9 @@ func Dashboard(ctx *middleware.Context) { case SYNC_SSH_AUTHORIZED_KEY: success = ctx.Tr("admin.dashboard.resync_all_sshkeys_success") err = models.RewriteAllPublicKeys() + case SYNC_REPOSITORY_UPDATE_HOOK: + success = ctx.Tr("admin.dashboard.resync_all_update_hooks_success") + err = models.RewriteRepositoryUpdateHook() } if err != nil { diff --git a/templates/.VERSION b/templates/.VERSION index 5a5ed364d9..a896ddd330 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.5.13.0207 Beta \ No newline at end of file +0.5.13.0208 Beta \ No newline at end of file diff --git a/templates/admin/dashboard.tmpl b/templates/admin/dashboard.tmpl index b570517536..5db717bfe1 100644 --- a/templates/admin/dashboard.tmpl +++ b/templates/admin/dashboard.tmpl @@ -52,7 +52,10 @@ {{.i18n.Tr "admin.dashboard.resync_all_sshkeys"}} {{.i18n.Tr "admin.dashboard.operation_run"}} - + + {{.i18n.Tr "admin.dashboard.resync_all_update_hooks"}} + {{.i18n.Tr "admin.dashboard.operation_run"}} + diff --git a/templates/user/dashboard/feeds.tmpl b/templates/user/dashboard/feeds.tmpl index 834e5f0a56..8acf228963 100644 --- a/templates/user/dashboard/feeds.tmpl +++ b/templates/user/dashboard/feeds.tmpl @@ -12,14 +12,14 @@ {{$.i18n.Tr "action.commit_repo" AppSubUrl .GetRepoLink .GetBranch .GetBranch AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} {{else if eq .GetOpType 6}} {{ $index := index .GetIssueInfos 0}} - {{$.i18n.Tr "action.create_issue" AppSubUrl .GetRepoLink $index .GetRepoLink $index | Str2html}} + {{$.i18n.Tr "action.create_issue" .GetRepoLink $index | Str2html}} {{else if eq .GetOpType 8}} {{$.i18n.Tr "action.transfer_repo" .GetContent AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} {{else if eq .GetOpType 9}} {{$.i18n.Tr "action.push_tag" AppSubUrl .GetRepoLink .GetBranch .GetBranch AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} {{else if eq .GetOpType 10}} {{ $index := index .GetIssueInfos 0}} - {{$.i18n.Tr "action.comment_issue" AppSubUrl .GetRepoLink $index .GetRepoLink $index | Str2html}} + {{$.i18n.Tr "action.comment_issue" .GetRepoLink $index | Str2html}} {{end}}

{{if eq .GetOpType 5}}