- 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)tags/v1.2.0-rc1
| @@ -9,7 +9,6 @@ package cmd | |||||
| import ( | import ( | ||||
| "fmt" | "fmt" | ||||
| "os" | "os" | ||||
| "time" | |||||
| "github.com/codegangsta/cli" | "github.com/codegangsta/cli" | ||||
| ) | ) | ||||
| @@ -20,14 +19,6 @@ var CmdCert = cli.Command{ | |||||
| Description: `Generate a self-signed X.509 certificate for a TLS server. | Description: `Generate a self-signed X.509 certificate for a TLS server. | ||||
| Outputs to 'cert.pem' and 'key.pem' and will overwrite existing files.`, | Outputs to 'cert.pem' and 'key.pem' and will overwrite existing files.`, | ||||
| Action: runCert, | 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) { | func runCert(ctx *cli.Context) { | ||||
| @@ -25,8 +25,8 @@ var CmdDump = cli.Command{ | |||||
| It can be used for backup and capture Gogs server image to send to maintainer`, | It can be used for backup and capture Gogs server image to send to maintainer`, | ||||
| Action: runDump, | Action: runDump, | ||||
| Flags: []cli.Flag{ | Flags: []cli.Flag{ | ||||
| cli.StringFlag{"config, c", "custom/conf/app.ini", "Custom configuration file path", ""}, | |||||
| cli.BoolFlag{"verbose, v", "show process details", ""}, | cli.BoolFlag{"verbose, v", "show process details", ""}, | ||||
| cli.StringFlag{"config, c", "custom/conf/app.ini", "Configuration file", ""}, | |||||
| }, | }, | ||||
| } | } | ||||
| @@ -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 <old Gogs path> | |||||
| `, | |||||
| 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 <enter> to continue, use <Ctrl+c> 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!") | |||||
| } | |||||
| @@ -28,7 +28,7 @@ var CmdServ = cli.Command{ | |||||
| Description: `Serv provide access auth for repositories`, | Description: `Serv provide access auth for repositories`, | ||||
| Action: runServ, | Action: runServ, | ||||
| Flags: []cli.Flag{ | 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", ""}, | |||||
| }, | }, | ||||
| } | } | ||||
| @@ -20,7 +20,7 @@ var CmdUpdate = cli.Command{ | |||||
| Description: `Update get pushed info and insert into database`, | Description: `Update get pushed info and insert into database`, | ||||
| Action: runUpdate, | Action: runUpdate, | ||||
| Flags: []cli.Flag{ | 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", ""}, | |||||
| }, | }, | ||||
| } | } | ||||
| @@ -55,7 +55,7 @@ and it takes care of all the other things for you`, | |||||
| Action: runWeb, | Action: runWeb, | ||||
| Flags: []cli.Flag{ | Flags: []cli.Flag{ | ||||
| cli.StringFlag{"port, p", "3000", "Temporary port number to prevent conflict", ""}, | 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) { | func runWeb(ctx *cli.Context) { | ||||
| checkVersion() | |||||
| if ctx.IsSet("config") { | if ctx.IsSet("config") { | ||||
| setting.CustomConf = ctx.String("config") | setting.CustomConf = ctx.String("config") | ||||
| } | } | ||||
| routers.GlobalInit() | routers.GlobalInit() | ||||
| checkVersion() | |||||
| m := newMacaron() | m := newMacaron() | ||||
| @@ -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. | 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=Domain | ||||
| domain_helper=Dies hat Auswirkung auf die SSH clone URLs. | 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=Anwendungs-URL | ||||
| app_url_helper=Dies hat Auswirkung auf die HTTP/HTTPS clone URLs und für die E-Mails. | 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) | 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.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=Führe Garbage Collection auf Repositories aus | ||||
| dashboard.git_gc_repos_success=Garbage Collection wurde auf allen Repositories erfolgreich ausgeführt. | 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.server_uptime=Server-Uptime | ||||
| dashboard.current_goroutine=Aktuelle Goroutines | dashboard.current_goroutine=Aktuelle Goroutines | ||||
| dashboard.current_memory_usage=Aktuelle Speichernutzung | dashboard.current_memory_usage=Aktuelle Speichernutzung | ||||
| @@ -631,7 +638,7 @@ config.db_path_helper=(nur für "sqlite3") | |||||
| config.service_config=Service-Einstellungen | config.service_config=Service-Einstellungen | ||||
| config.register_email_confirm=E-Mail-Bestätigung bei Registrierung | config.register_email_confirm=E-Mail-Bestätigung bei Registrierung | ||||
| config.disable_register=Registrierung deaktivieren | 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.require_sign_in_view=Ansehen erfordert Registrierung | ||||
| config.mail_notify=E-Mail-Benachrichtigung | config.mail_notify=E-Mail-Benachrichtigung | ||||
| config.enable_cache_avatar=Avatar-Cache aktivieren | config.enable_cache_avatar=Avatar-Cache aktivieren | ||||
| @@ -687,8 +694,8 @@ notices.delete_success=System-Mitteilung erfolgreich gelöscht. | |||||
| [action] | [action] | ||||
| create_repo=hat Repository <a href="%s/%s">%s</a> erstellt | create_repo=hat Repository <a href="%s/%s">%s</a> erstellt | ||||
| commit_repo=hat nach <a href="%s/%s/src/%s">%s</a> in <a href="%s/%s">%s</a> gepusht | commit_repo=hat nach <a href="%s/%s/src/%s">%s</a> in <a href="%s/%s">%s</a> gepusht | ||||
| create_issue=hat Issue <a href="%s/%s/issues/%s">%s#%s</a> eröffnet | |||||
| comment_issue=hat Issue <a href="%s/%s/issues/%s">%s#%s</a> kommentiert | |||||
| create_issue=`hat Issue <a href="%s/issues/%s">%[1]s#%[2]s</a> eröffnet` | |||||
| comment_issue=`hat Issue <a href="%s/issues/%s">%[1]s#%[2]s</a> kommentiert` | |||||
| transfer_repo=hat Repository <code>%s</code> transferiert an <a href="/%s%s">%s</a> | transfer_repo=hat Repository <code>%s</code> transferiert an <a href="/%s%s">%s</a> | ||||
| push_tag=hat nach <a href="%s/%s/src/%s">%s</a> in <a href="%s/%s">%s</a> gepusht | push_tag=hat nach <a href="%s/%s/src/%s">%s</a> in <a href="%s/%s">%s</a> gepusht | ||||
| compare_2_commits=Zeige Vergleich dieser 2 Commits | compare_2_commits=Zeige Vergleich dieser 2 Commits | ||||
| @@ -714,16 +721,3 @@ years=%[2]s %[1]d Jahren | |||||
| raw_seconds=Sekunden | raw_seconds=Sekunden | ||||
| raw_minutes=Minuten | raw_minutes=Minuten | ||||
| @@ -67,7 +67,7 @@ email_title = E-mail Service Settings (Optional) | |||||
| smtp_host = SMTP Host | smtp_host = SMTP Host | ||||
| mailer_user = Sender E-mail | mailer_user = Sender E-mail | ||||
| mailer_password = Sender Password | mailer_password = Sender Password | ||||
| notify_title = Notification Settings(Optional) | |||||
| notify_title = Notification Settings (Optional) | |||||
| register_confirm = Enable Register Confirmation | register_confirm = Enable Register Confirmation | ||||
| mail_notify = Enable Mail Notification | mail_notify = Enable Mail Notification | ||||
| admin_title = Admin Account Settings | admin_title = Admin Account Settings | ||||
| @@ -280,7 +280,7 @@ license_helper = Select a license file | |||||
| init_readme = Initialize this repository with a README.md | init_readme = Initialize this repository with a README.md | ||||
| create_repo = Create Repository | create_repo = Create Repository | ||||
| default_branch = Default Branch | default_branch = Default Branch | ||||
| mirror_interval = Mirror Interval(hour) | |||||
| mirror_interval = Mirror Interval (hour) | |||||
| goget_meta = Go-Get Meta | goget_meta = Go-Get Meta | ||||
| goget_meta_helper = This repository will be <span class="label label-blue label-radius">Go-Getable</span> | goget_meta_helper = This repository will be <span class="label label-blue label-radius">Go-Getable</span> | ||||
| @@ -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.delete_repo_archives_success = All repositories archives have been deleted successfully. | ||||
| dashboard.git_gc_repos = Do garbage collection on repositories | dashboard.git_gc_repos = Do garbage collection on repositories | ||||
| dashboard.git_gc_repos_success = All repositories have done garbage collection successfully. | 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_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.server_uptime = Server Uptime | ||||
| dashboard.current_goroutine = Current Goroutines | dashboard.current_goroutine = Current Goroutines | ||||
| dashboard.current_memory_usage = Current Memory Usage | dashboard.current_memory_usage = Current Memory Usage | ||||
| @@ -691,8 +694,8 @@ notices.delete_success = System notice has been deleted successfully. | |||||
| [action] | [action] | ||||
| create_repo = created repository <a href="%s/%s">%s</a> | create_repo = created repository <a href="%s/%s">%s</a> | ||||
| commit_repo = pushed to <a href="%s/%s/src/%s">%s</a> at <a href="%s/%s">%s</a> | commit_repo = pushed to <a href="%s/%s/src/%s">%s</a> at <a href="%s/%s">%s</a> | ||||
| create_issue = opened issue <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| comment_issue = commented on issue <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| create_issue = `opened issue <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| comment_issue = `commented on issue <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| transfer_repo = transfered repository <code>%s</code> to <a href="/%s%s">%s</a> | transfer_repo = transfered repository <code>%s</code> to <a href="/%s%s">%s</a> | ||||
| push_tag = pushed tag <a href="%s/%s/src/%s">%s</a> to <a href="%s/%s">%s</a> | push_tag = pushed tag <a href="%s/%s/src/%s">%s</a> to <a href="%s/%s">%s</a> | ||||
| compare_2_commits = View comparison for these 2 commits | compare_2_commits = View comparison for these 2 commits | ||||
| @@ -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.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=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_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.server_uptime=Uptime del Servidor | ||||
| dashboard.current_goroutine=Gorutinas Actuales | dashboard.current_goroutine=Gorutinas Actuales | ||||
| dashboard.current_memory_usage=Uso de Memoria Actual | dashboard.current_memory_usage=Uso de Memoria Actual | ||||
| @@ -691,8 +694,8 @@ notices.delete_success=System notice has been deleted successfully. | |||||
| [action] | [action] | ||||
| create_repo=created repository <a href="%s/%s">%s</a> | create_repo=created repository <a href="%s/%s">%s</a> | ||||
| commit_repo=pushed to <a href="%s/%s/src/%s">%s</a> at <a href="%s/%s">%s</a> | commit_repo=pushed to <a href="%s/%s/src/%s">%s</a> at <a href="%s/%s">%s</a> | ||||
| create_issue=opened issue <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| comment_issue=commented on issue <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| create_issue=`opened issue <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| comment_issue=`commented on issue <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| transfer_repo=transfered repository <code>%s</code> to <a href="/%s%s">%s</a> | transfer_repo=transfered repository <code>%s</code> to <a href="/%s%s">%s</a> | ||||
| push_tag=pushed tag <a href="%s/%s/src/%s">%s</a> to <a href="%s/%s">%s</a> | push_tag=pushed tag <a href="%s/%s/src/%s">%s</a> to <a href="%s/%s">%s</a> | ||||
| compare_2_commits=View comparison for these 2 commits | compare_2_commits=View comparison for these 2 commits | ||||
| @@ -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. | run_user_helper=L'utilisateur doit avoir accès à la Racine du Référentiel et éxécuter Gogs. | ||||
| domain=Domaine | domain=Domaine | ||||
| domain_helper=Cela affecte les doublons d'URL SSH. | 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=URL de l'Application | ||||
| app_url_helper=Cela affecte les doublons d'URL HTTP/HTTPS et le contenu d'e-mail. | 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) | 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.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=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.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.server_uptime=Durée de Marche Serveur | ||||
| dashboard.current_goroutine=Goroutines actuelles | dashboard.current_goroutine=Goroutines actuelles | ||||
| dashboard.current_memory_usage=Utilisation Mémoire actuelle | 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.service_config=Configuration du Service | ||||
| config.register_email_confirm=Nécessite une confirmation par courriel | config.register_email_confirm=Nécessite une confirmation par courriel | ||||
| config.disable_register=Désactiver l'Enregistrement | config.disable_register=Désactiver l'Enregistrement | ||||
| config.show_registration_button=Show Register Button | |||||
| config.require_sign_in_view=Connexion Obligatoire pour Visualiser | config.require_sign_in_view=Connexion Obligatoire pour Visualiser | ||||
| config.mail_notify=Mailer les Notifications | config.mail_notify=Mailer les Notifications | ||||
| config.enable_cache_avatar=Activer le Cache d'Avatar | 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] | [action] | ||||
| create_repo=a crée le Référentiel <a href="%s/%s">%s</a> | create_repo=a crée le Référentiel <a href="%s/%s">%s</a> | ||||
| commit_repo=a soumis à <a href="%s/%s/src/%s">%s</a> chez <a href="%s/%s">%s</a> | commit_repo=a soumis à <a href="%s/%s/src/%s">%s</a> chez <a href="%s/%s">%s</a> | ||||
| create_issue=a ouvert un problème <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| comment_issue=a commenté le problème <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| create_issue=`a ouvert un problème <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| comment_issue=`a commenté le problème <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| transfer_repo=a transféré le Référentiel <code>%s</code> à <a href="/%s%s">%s</a> | transfer_repo=a transféré le Référentiel <code>%s</code> à <a href="/%s%s">%s</a> | ||||
| push_tag=a tagé <a href="%s/%s/src/%s">%s</a> à <a href="%s/%s">%s</a> | push_tag=a tagé <a href="%s/%s/src/%s">%s</a> à <a href="%s/%s">%s</a> | ||||
| compare_2_commits=Comparer ces 2 commissions | compare_2_commits=Comparer ces 2 commissions | ||||
| @@ -713,16 +721,3 @@ years=%d ans %s | |||||
| raw_seconds=secondes | raw_seconds=secondes | ||||
| raw_minutes=minutes | raw_minutes=minutes | ||||
| @@ -516,6 +516,9 @@ dashboard.git_gc_repos=リポジトリでのガベージコレクションを実 | |||||
| dashboard.git_gc_repos_success=すべてのリポジトリは正常にガベージ コレクションを行いました。 | dashboard.git_gc_repos_success=すべてのリポジトリは正常にガベージ コレクションを行いました。 | ||||
| dashboard.resync_all_sshkeys='.ssh/ autorized_key' ファイルを再生成します。(警告:Gogsキー以外は失われます) | dashboard.resync_all_sshkeys='.ssh/ autorized_key' ファイルを再生成します。(警告:Gogsキー以外は失われます) | ||||
| dashboard.resync_all_sshkeys_success=すべての公開鍵が正常に書き換えられました。 | 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.server_uptime=サーバーの稼働時間 | ||||
| dashboard.current_goroutine=現在のGoroutine | dashboard.current_goroutine=現在のGoroutine | ||||
| dashboard.current_memory_usage=現在のメモリ使用量 | dashboard.current_memory_usage=現在のメモリ使用量 | ||||
| @@ -691,8 +694,8 @@ notices.delete_success=システム通知が正常に削除されました。 | |||||
| [action] | [action] | ||||
| create_repo=リポジトリ <a href="%s/%s"> %s</a>を作成しました | create_repo=リポジトリ <a href="%s/%s"> %s</a>を作成しました | ||||
| commit_repo=<a href="%s/%s">%s</a>を<a href="%s/%s/src/%s">%s</a>にプッシュしました | commit_repo=<a href="%s/%s">%s</a>を<a href="%s/%s/src/%s">%s</a>にプッシュしました | ||||
| create_issue=問題 <a href="%s/%s/issues/%s"> %s #%s</a> を開きました | |||||
| comment_issue=問題 <a href="%s/%s/issues/%s"> %s #%s</a> のコメント | |||||
| create_issue=`問題 <a href="%s/issues/%s">%[1]s#%[2]s</a> を開きました` | |||||
| comment_issue=`問題 <a href="%s/issues/%s">%[1]s#%[2]s</a> のコメント` | |||||
| transfer_repo=リポジトリ <code>%s</code> を <a href="/%s%s">%s</a> へ転送しました | transfer_repo=リポジトリ <code>%s</code> を <a href="/%s%s">%s</a> へ転送しました | ||||
| push_tag=<a href="%s/%s">%s</a> に タグ <a href="%s/%s/src/%s">%s</a> をプッシュしました | push_tag=<a href="%s/%s">%s</a> に タグ <a href="%s/%s/src/%s">%s</a> をプッシュしました | ||||
| compare_2_commits=これら 2 のコミットの比較を閲覧する | compare_2_commits=これら 2 のコミットの比較を閲覧する | ||||
| @@ -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.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=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_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.server_uptime=Servera darbības laiks | ||||
| dashboard.current_goroutine=Izmantotās Gorutīnas | dashboard.current_goroutine=Izmantotās Gorutīnas | ||||
| dashboard.current_memory_usage=Pašreiz izmantotā atmiņa | 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] | [action] | ||||
| create_repo=izveidoja repozitoriju <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> | 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> | |||||
| create_issue=`reģistrēja problēmu <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| comment_issue=`pievienoja komentāru problēmai <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| transfer_repo=mainīja repozitorija <code>%s</code> īpašnieku uz <a href="/%s%s">%s</a> | transfer_repo=mainīja repozitorija <code>%s</code> īpašnieku uz <a href="/%s%s">%s</a> | ||||
| push_tag=pievienoja tagu <a href="%s/%s/src/%s">%s</a> repozitorijam <a href="%s/%s">%s</a> | push_tag=pievienoja tagu <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 | compare_2_commits=Veikt salīdzināšanu starp šīm 2 revīzijām | ||||
| @@ -516,6 +516,9 @@ dashboard.git_gc_repos=Garbage collectie uitvoeren | |||||
| dashboard.git_gc_repos_success=Garbage collectie met succes uitgevoerd. | 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=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_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.server_uptime=Uptime server | ||||
| dashboard.current_goroutine=Huidige Goroutines | dashboard.current_goroutine=Huidige Goroutines | ||||
| dashboard.current_memory_usage=Huidige geheugen gebruik | dashboard.current_memory_usage=Huidige geheugen gebruik | ||||
| @@ -691,8 +694,8 @@ notices.delete_success=Systeem bericht is met succes verwijderd. | |||||
| [action] | [action] | ||||
| create_repo=repositorie aangemaakt in <a href="%s/%s">%s</a> | create_repo=repositorie aangemaakt in <a href="%s/%s">%s</a> | ||||
| commit_repo=push update naar <a href="%s/%s/src/%s">%s</a> in <a href="%s/%s">%s</a | commit_repo=push update naar <a href="%s/%s/src/%s">%s</a> in <a href="%s/%s">%s</a | ||||
| create_issue=opende issue in <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| comment_issue=reactie op issue <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| create_issue=`opende issue in <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| comment_issue=`reactie op issue <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| transfer_repo=repositorie verplaatst naar <code>%s</code> naar <a href="/%s%s">%s</a> | transfer_repo=repositorie verplaatst naar <code>%s</code> naar <a href="/%s%s">%s</a> | ||||
| push_tag=geduwd label <a href="%s/%s/src/%s"> %s</a> naar <a href="%s/%s"> %s</a> | push_tag=geduwd label <a href="%s/%s/src/%s"> %s</a> naar <a href="%s/%s"> %s</a> | ||||
| compare_2_commits=Weergave vergelijking voor deze 2 commits | compare_2_commits=Weergave vergelijking voor deze 2 commits | ||||
| @@ -59,6 +59,8 @@ run_user=Пользователь | |||||
| run_user_helper=У пользователя должен быть доступ к пути к корню репозитория и к запуску Gogs. | run_user_helper=У пользователя должен быть доступ к пути к корню репозитория и к запуску Gogs. | ||||
| domain=Домен | domain=Домен | ||||
| domain_helper=This affects SSH clone URLs. | 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=URL приложения | ||||
| app_url_helper=This affects HTTP/HTTPS clone URL and somewhere in e-mail. | app_url_helper=This affects HTTP/HTTPS clone URL and somewhere in e-mail. | ||||
| email_title=Настройки службы электронной почты (опционально) | email_title=Настройки службы электронной почты (опционально) | ||||
| @@ -278,7 +280,7 @@ license_helper=Выберите файл лицензии | |||||
| init_readme=Создать репозиторий с файлом README.md | init_readme=Создать репозиторий с файлом README.md | ||||
| create_repo=Создание репозитория | create_repo=Создание репозитория | ||||
| default_branch=Ветка по умолчанию | default_branch=Ветка по умолчанию | ||||
| mirror_interval=Mirror Interval(hour) | |||||
| mirror_interval=Mirror Interval (hour) | |||||
| goget_meta=Go-Get Meta | goget_meta=Go-Get Meta | ||||
| goget_meta_helper=This repository will be <span class="label label-blue label-radius">Go-Getable</span> | goget_meta_helper=This repository will be <span class="label label-blue label-radius">Go-Getable</span> | ||||
| @@ -512,6 +514,11 @@ dashboard.delete_repo_archives=Удаление всех архивов репо | |||||
| dashboard.delete_repo_archives_success=Все архивы репозиториев были успешно удалены. | dashboard.delete_repo_archives_success=Все архивы репозиториев были успешно удалены. | ||||
| dashboard.git_gc_repos=Выполнить сборку мусора на репозиториях | dashboard.git_gc_repos=Выполнить сборку мусора на репозиториях | ||||
| dashboard.git_gc_repos_success=Сборка мусора на всех репозиториях успешно выполнена. | 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.server_uptime=Время непрерывной работы сервера | ||||
| dashboard.current_goroutine=Current Goroutines | dashboard.current_goroutine=Current Goroutines | ||||
| dashboard.current_memory_usage=Текущее использование памяти | dashboard.current_memory_usage=Текущее использование памяти | ||||
| @@ -631,7 +638,7 @@ config.db_path_helper=(for "sqlite3" only) | |||||
| config.service_config=Service Configuration | config.service_config=Service Configuration | ||||
| config.register_email_confirm=Require E-mail Confirmation | config.register_email_confirm=Require E-mail Confirmation | ||||
| config.disable_register=Отключить регистрацию | config.disable_register=Отключить регистрацию | ||||
| config.show_registration_button = Показать Регистрация Кнопка | |||||
| config.show_registration_button=Show Register Button | |||||
| config.require_sign_in_view=Для просмотра необходима авторизация | config.require_sign_in_view=Для просмотра необходима авторизация | ||||
| config.mail_notify=Почтовые уведомления | config.mail_notify=Почтовые уведомления | ||||
| config.enable_cache_avatar=Кешировать аватар | config.enable_cache_avatar=Кешировать аватар | ||||
| @@ -687,8 +694,8 @@ notices.delete_success=System notice has been deleted successfully. | |||||
| [action] | [action] | ||||
| create_repo=создан репозиторий <a href="%s/%s"> %s</a> | create_repo=создан репозиторий <a href="%s/%s"> %s</a> | ||||
| commit_repo=pushed to <a href="%s/%s/src/%s">%s</a> at <a href="%s/%s">%s</a> | commit_repo=pushed to <a href="%s/%s/src/%s">%s</a> at <a href="%s/%s">%s</a> | ||||
| create_issue=opened issue <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| comment_issue=commented on issue <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| create_issue=`opened issue <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| comment_issue=`commented on issue <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| transfer_repo=transfered repository <code>%s</code> to <a href="/%s%s">%s</a> | transfer_repo=transfered repository <code>%s</code> to <a href="/%s%s">%s</a> | ||||
| push_tag=pushed tag <a href="%s/%s/src/%s">%s</a> to <a href="%s/%s">%s</a> | push_tag=pushed tag <a href="%s/%s/src/%s">%s</a> to <a href="%s/%s">%s</a> | ||||
| compare_2_commits=View comparison for these 2 commits | compare_2_commits=View comparison for these 2 commits | ||||
| @@ -714,16 +721,3 @@ years=%d years %s | |||||
| raw_seconds=seconds | raw_seconds=seconds | ||||
| raw_minutes=minutes | raw_minutes=minutes | ||||
| @@ -516,6 +516,9 @@ dashboard.git_gc_repos=对仓库进行垃圾回收 | |||||
| dashboard.git_gc_repos_success=所有仓库垃圾回收成功! | dashboard.git_gc_repos_success=所有仓库垃圾回收成功! | ||||
| dashboard.resync_all_sshkeys=重新生成 '.ssh/autorized_key' 文件(警告:不是 Gogs 的密钥也会被删除) | dashboard.resync_all_sshkeys=重新生成 '.ssh/autorized_key' 文件(警告:不是 Gogs 的密钥也会被删除) | ||||
| dashboard.resync_all_sshkeys_success=所有公钥重新生成成功! | dashboard.resync_all_sshkeys_success=所有公钥重新生成成功! | ||||
| dashboard.resync_all_update_hooks=重新生成所有仓库的 Update 钩子(用于自定义配置文件被修改) | |||||
| dashboard.resync_all_update_hooks_success=所有仓库的 Update 钩子重新生成成功! | |||||
| dashboard.server_uptime=服务运行时间 | dashboard.server_uptime=服务运行时间 | ||||
| dashboard.current_goroutine=当前 Goroutines 数量 | dashboard.current_goroutine=当前 Goroutines 数量 | ||||
| dashboard.current_memory_usage=当前内存使用量 | dashboard.current_memory_usage=当前内存使用量 | ||||
| @@ -691,8 +694,8 @@ notices.delete_success=系统提示删除成功! | |||||
| [action] | [action] | ||||
| create_repo=创建了仓库 <a href="%s/%s">%s</a> | create_repo=创建了仓库 <a href="%s/%s">%s</a> | ||||
| commit_repo=推送了 <a href="%s/%s/src/%s">%s</a> 分支的代码到 <a href="%s/%s">%s</a> | commit_repo=推送了 <a href="%s/%s/src/%s">%s</a> 分支的代码到 <a href="%s/%s">%s</a> | ||||
| create_issue=创建了工单 <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| comment_issue=评论了工单 <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| create_issue=`创建了工单 <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| comment_issue=`评论了工单 <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| transfer_repo=将仓库 <code>%s</code> 转移至 <a href="/%s%s">%s</a> | transfer_repo=将仓库 <code>%s</code> 转移至 <a href="/%s%s">%s</a> | ||||
| push_tag=推送了标签 <a href="%s/%s/src/%s">%s</a> 到 <a href="%s/%s">%s</a> | push_tag=推送了标签 <a href="%s/%s/src/%s">%s</a> 到 <a href="%s/%s">%s</a> | ||||
| compare_2_commits=查看 2 次提交的内容对比 | compare_2_commits=查看 2 次提交的内容对比 | ||||
| @@ -516,6 +516,9 @@ dashboard.git_gc_repos=對倉庫進行垃圾回收 | |||||
| dashboard.git_gc_repos_success=所有倉庫的垃圾回收已成功完成! | dashboard.git_gc_repos_success=所有倉庫的垃圾回收已成功完成! | ||||
| dashboard.resync_all_sshkeys=重新生成 '.ssh/autorized_key' 文件(警告:不是 Gogs 的密鑰也會被刪除) | dashboard.resync_all_sshkeys=重新生成 '.ssh/autorized_key' 文件(警告:不是 Gogs 的密鑰也會被刪除) | ||||
| dashboard.resync_all_sshkeys_success=所有公鑰重新生成成功! | 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.server_uptime=服務執行時間 | ||||
| dashboard.current_goroutine=當前 Goroutines 數量 | dashboard.current_goroutine=當前 Goroutines 數量 | ||||
| dashboard.current_memory_usage=當前內存使用量 | dashboard.current_memory_usage=當前內存使用量 | ||||
| @@ -691,8 +694,8 @@ notices.delete_success=系統提示刪除成功! | |||||
| [action] | [action] | ||||
| create_repo=創建了倉庫 <a href="%s/%s">%s</a> | create_repo=創建了倉庫 <a href="%s/%s">%s</a> | ||||
| commit_repo=推送了 <a href="%s/%s/src/%s">%s</a> 分支的代碼到 <a href="%s/%s">%s</a> | commit_repo=推送了 <a href="%s/%s/src/%s">%s</a> 分支的代碼到 <a href="%s/%s">%s</a> | ||||
| create_issue=創建了問題 <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| comment_issue=評論了問題 <a href="%s/%s/issues/%s">%s#%s</a> | |||||
| create_issue=`創建了問題 <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| comment_issue=`評論了問題 <a href="%s/issues/%s">%[1]s#%[2]s</a>` | |||||
| transfer_repo=將倉庫 <code>%s</code> 轉移至 <a href="/%s%s">%s</a> | transfer_repo=將倉庫 <code>%s</code> 轉移至 <a href="/%s%s">%s</a> | ||||
| push_tag=推送了標籤 <a href="%s/%s/src/%s">%s</a> 到 <a href="%s/%s">%s</a> | push_tag=推送了標籤 <a href="%s/%s/src/%s">%s</a> 到 <a href="%s/%s">%s</a> | ||||
| compare_2_commits=查看 2 次提交的內容對比 | compare_2_commits=查看 2 次提交的內容對比 | ||||
| @@ -17,7 +17,7 @@ import ( | |||||
| "github.com/gogits/gogs/modules/setting" | "github.com/gogits/gogs/modules/setting" | ||||
| ) | ) | ||||
| const APP_VER = "0.5.13.0207 Beta" | |||||
| const APP_VER = "0.5.13.0208 Beta" | |||||
| func init() { | func init() { | ||||
| runtime.GOMAXPROCS(runtime.NumCPU()) | runtime.GOMAXPROCS(runtime.NumCPU()) | ||||
| @@ -33,7 +33,6 @@ func main() { | |||||
| cmd.CmdWeb, | cmd.CmdWeb, | ||||
| cmd.CmdServ, | cmd.CmdServ, | ||||
| cmd.CmdUpdate, | cmd.CmdUpdate, | ||||
| cmd.CmdFix, | |||||
| cmd.CmdDump, | cmd.CmdDump, | ||||
| cmd.CmdCert, | cmd.CmdCert, | ||||
| } | } | ||||
| @@ -98,7 +98,7 @@ func (a Action) GetRepoName() string { | |||||
| } | } | ||||
| func (a Action) GetRepoLink() 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 { | func (a Action) GetBranch() string { | ||||
| @@ -29,7 +29,7 @@ import ( | |||||
| const ( | const ( | ||||
| // "### autogenerated by gitgos, DO NOT EDIT\n" | // "### 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 ( | var ( | ||||
| @@ -30,7 +30,7 @@ import ( | |||||
| ) | ) | ||||
| const ( | 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 ( | var ( | ||||
| @@ -402,15 +402,9 @@ func initRepoCommit(tmpPath string, sig *git.Signature) (err error) { | |||||
| return nil | 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. | // 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 | // 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 | 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 ( | var ( | ||||
| // Prevent duplicate tasks. | // Prevent duplicate tasks. | ||||
| isMirrorUpdating = false | isMirrorUpdating = false | ||||
| @@ -119,6 +119,7 @@ const ( | |||||
| CLEAN_REPO_ARCHIVES | CLEAN_REPO_ARCHIVES | ||||
| GIT_GC_REPOS | GIT_GC_REPOS | ||||
| SYNC_SSH_AUTHORIZED_KEY | SYNC_SSH_AUTHORIZED_KEY | ||||
| SYNC_REPOSITORY_UPDATE_HOOK | |||||
| ) | ) | ||||
| func Dashboard(ctx *middleware.Context) { | func Dashboard(ctx *middleware.Context) { | ||||
| @@ -148,6 +149,9 @@ func Dashboard(ctx *middleware.Context) { | |||||
| case SYNC_SSH_AUTHORIZED_KEY: | case SYNC_SSH_AUTHORIZED_KEY: | ||||
| success = ctx.Tr("admin.dashboard.resync_all_sshkeys_success") | success = ctx.Tr("admin.dashboard.resync_all_sshkeys_success") | ||||
| err = models.RewriteAllPublicKeys() | err = models.RewriteAllPublicKeys() | ||||
| case SYNC_REPOSITORY_UPDATE_HOOK: | |||||
| success = ctx.Tr("admin.dashboard.resync_all_update_hooks_success") | |||||
| err = models.RewriteRepositoryUpdateHook() | |||||
| } | } | ||||
| if err != nil { | if err != nil { | ||||
| @@ -1 +1 @@ | |||||
| 0.5.13.0207 Beta | |||||
| 0.5.13.0208 Beta | |||||
| @@ -52,7 +52,10 @@ | |||||
| <td>{{.i18n.Tr "admin.dashboard.resync_all_sshkeys"}}</td> | <td>{{.i18n.Tr "admin.dashboard.resync_all_sshkeys"}}</td> | ||||
| <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=5">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> | <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=5">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> | ||||
| </tr> | </tr> | ||||
| <tr> | |||||
| <td>{{.i18n.Tr "admin.dashboard.resync_all_update_hooks"}}</td> | |||||
| <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=6">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> | |||||
| </tr> | |||||
| </tbody> | </tbody> | ||||
| </table> | </table> | ||||
| </div> | </div> | ||||
| @@ -12,14 +12,14 @@ | |||||
| {{$.i18n.Tr "action.commit_repo" AppSubUrl .GetRepoLink .GetBranch .GetBranch AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} | {{$.i18n.Tr "action.commit_repo" AppSubUrl .GetRepoLink .GetBranch .GetBranch AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} | ||||
| {{else if eq .GetOpType 6}} | {{else if eq .GetOpType 6}} | ||||
| {{ $index := index .GetIssueInfos 0}} | {{ $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}} | {{else if eq .GetOpType 8}} | ||||
| {{$.i18n.Tr "action.transfer_repo" .GetContent AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} | {{$.i18n.Tr "action.transfer_repo" .GetContent AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} | ||||
| {{else if eq .GetOpType 9}} | {{else if eq .GetOpType 9}} | ||||
| {{$.i18n.Tr "action.push_tag" AppSubUrl .GetRepoLink .GetBranch .GetBranch AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} | {{$.i18n.Tr "action.push_tag" AppSubUrl .GetRepoLink .GetBranch .GetBranch AppSubUrl .GetRepoLink .GetRepoLink | Str2html}} | ||||
| {{else if eq .GetOpType 10}} | {{else if eq .GetOpType 10}} | ||||
| {{ $index := index .GetIssueInfos 0}} | {{ $index := index .GetIssueInfos 0}} | ||||
| {{$.i18n.Tr "action.comment_issue" AppSubUrl .GetRepoLink $index .GetRepoLink $index | Str2html}} | |||||
| {{$.i18n.Tr "action.comment_issue" .GetRepoLink $index | Str2html}} | |||||
| {{end}} | {{end}} | ||||
| </p> | </p> | ||||
| {{if eq .GetOpType 5}} | {{if eq .GetOpType 5}} | ||||