Compare commits

...

73 Commits

Author SHA1 Message Date
GiteaBot
d0fef4395f [skip ci] Updated translations via Crowdin 2018-07-24 10:22:04 +00:00
Michael Kuhn
344dc07239 Add shortcut to save wiki page (#4452)
This allows saving the wiki page with Ctrl-Enter.
2018-07-24 12:20:52 +02:00
Kjell Kvinge
ba358ecbf5 Make max commits in graph configurable (#4498) 2018-07-23 17:12:06 +03:00
Lauris BH
ae9dd239fb Fix migration from older releases (#4495) 2018-07-21 23:15:11 -04:00
GiteaBot
ec43e5619b [skip ci] Updated translations via Crowdin 2018-07-21 18:18:18 +00:00
Kjell Kvinge
bed623600d Accept 'Data:' in commit graph (#4487) 2018-07-21 14:17:09 -04:00
GiteaBot
5fa403c874 [skip ci] Updated translations via Crowdin 2018-07-20 21:09:20 +00:00
Lunny Xiao
0bb1c84208 Add csv file render support defaultly (#4105)
* add csv file render support defaultly

* escaping csv column content
2018-07-21 00:08:15 +03:00
bugreport0
b174817b6a Improve English translation for new features. (#4481) 2018-07-20 12:40:08 -04:00
GiteaBot
cc9fa062e6 [skip ci] Updated translations via Crowdin 2018-07-20 02:11:33 +00:00
Lauris BH
0c59edaafa Update xorm to latest version and fix correct user table referencing in sql (#4473) 2018-07-20 10:10:17 +08:00
GiteaBot
1e2da5d396 [skip ci] Updated translations via Crowdin 2018-07-19 17:59:34 +00:00
techknowlogick
492ec97a46
Redirect to correct page after using scratch token (#4458) 2018-07-19 13:58:33 -04:00
Lunny Xiao
d1337299e2 add valid for lfs oid (#4461) 2018-07-19 11:39:19 -04:00
GiteaBot
9ca8aaecb4 [skip ci] Updated translations via Crowdin 2018-07-19 15:26:27 +00:00
Joel da Rosa
91373901f6 Prevent html entity escaping (#4471) 2018-07-19 18:25:17 +03:00
techknowlogick
fe78154895 relative URLs for LibreJS page (#4460)
Fix #4449
2018-07-18 17:23:40 +08:00
kolaente
1bff02de55 Added dependencies for issues (#2196) (#2531) 2018-07-17 17:23:58 -04:00
Mahmoud Al-Qudsi
7be5935c55 Add BSDmakefile to prevent errors when make is called under FreeBSD (#4446)
The syntax of the gitea Makefile is not platform-agnostic and is
specific to the GNU version of `make`. BSD platforms such as FreeBSD
ship with bmake (BSD make) as their default `make` program; attempting
to compile gitea by simply executing `make` causes a wall of errors to
show as a result of syntax incompatible with BSD make.

If a file named `BSDmakefile` is present, `bmake` will give it
preference over a generic `Makefile`. This `BSDmakefile` is taken from
the BSD-licensed `gmake-proxy` project [0], which transparently proxies
all `make` commands to `gmake` (GNU make) on systems where `bmake` is
the default, and if `gmake` is not installed an error message is
displayed.

[0]: https://github.com/neosmart/gmake-proxy
2018-07-16 20:45:51 +02:00
kolaente
ef6813abc9 Issue due date api (#3890)
* Implemented basic api endpoint to manage deadlines

* Fixed checking for permissions

* Updating a deadline from the ui is now entirely done via the api

* cleanup

* Cosmetics

* fixed lint + fmt

* Added swagger model definition for deadline response

* Updated gitea-sdk

* Updated gitea-sdk

* More cleanup

* Generate swagger json

* Merge branch 'master' of https://github.com/go-gitea/gitea into issue-due-date-api

# Conflicts:
#	public/swagger.v1.json

* Fixed permission to update a deadline via api

* Re-added form to change a deadline

* Added client-side validation + not ignore error messages from the api

* Added locale for error message

* Merge branch 'master' of https://github.com/go-gitea/gitea

# Conflicts:
#	models/issue_comment.go

* Proper date validation

* Fixed indention

* moved css to css file

* added documentation for error codes

* after merge cleanup

* Added swagger description

* DO NOTHING BUT TRIGGER THAT F*CKIN CI SO IT PICKS UP THE LATEST COMMIT AS IT SHOULD

* DO NOTHING BUT TRIGGER THAT F*CKIN CI SO IT PICKS UP THE LATEST COMMIT AS IT SHOULD

* regenerated stylesheets
2018-07-16 14:43:00 +02:00
GiteaBot
55d9ddf24a [skip ci] Updated translations via Crowdin 2018-07-15 00:44:24 +00:00
Alexey Terentyev
ca474af3c6 Added front-end topics validation (#4316) 2018-07-14 20:43:32 -04:00
GiteaBot
8e103d3e76 [skip ci] Updated translations via Crowdin 2018-07-14 06:08:34 +00:00
techknowlogick
a7c5e58635 Clean up arc-green theme (#4443)
* Resolve some issues with Arc Green

* Fix editor styles

* zeebra stripes

* generate CSS file
2018-07-14 09:07:30 +03:00
GiteaBot
ca8c7bb2b5 [skip ci] Updated translations via Crowdin 2018-07-13 20:58:18 +00:00
Joel da Rosa
aa27cbf229 Locale for button Edit on protected branch (#4442) 2018-07-13 16:57:20 -04:00
GiteaBot
6813640d2f [skip ci] Updated translations via Crowdin 2018-07-13 15:22:00 +00:00
Lauris BH
e95417ea2c Fix column droping for MSSQL that need new transaction for that (#4440) 2018-07-13 11:20:40 -04:00
Lauris BH
659bc727bd
Fix query parameter name comment in issue API (#4421) 2018-07-12 16:40:41 +03:00
Thomas Boerger
e6b51200ab Final CSP header fix (#4432) 2018-07-12 19:48:33 +08:00
Lauris BH
a7f90905df
Fix drone git@next plugin Gitea version display when building tag (#4380) 2018-07-12 06:32:01 +03:00
Thomas Boerger
8afd500c48 Add missing font hosts to CSP header (#4429) 2018-07-11 19:24:06 -04:00
Thomas Boerger
8b21cdba78
Fix CSP header for docs (#4428) 2018-07-12 00:27:48 +02:00
Thomas Boerger
3e950ef112 Use correct site id for netlify (#4427) 2018-07-11 23:45:03 +02:00
silverwind
c55caeaf0c Update npm dependencies, regenerate CSS (#4415) 2018-07-11 10:54:28 -04:00
Thomas Boerger
d84490a0df Replaced docker docs with netlify deployment (#4420) 2018-07-11 16:43:33 +02:00
Lauris BH
c2ec38f9b7 Disable swagger validation while it is not fixed in upstream (#4423) 2018-07-11 10:03:52 -04:00
GiteaBot
61f4ad2fc5 [skip ci] Updated translations via Crowdin 2018-07-11 11:37:10 +00:00
Niclas Kroon
c9687c036d update TRANSLATORS (#4406) 2018-07-11 14:36:04 +03:00
GiteaBot
3e445cce06 [skip ci] Updated translations via Crowdin 2018-07-08 20:42:36 +00:00
BNolet
80169460ec Added question for Gitea hosted Gitea (#4397)
Currently some issues need to be resolved and features need to be implemented before we can move the Gitea development workflow to a Gitea instance. Many ask why Gitea isn't hosted on Gitea, now that's in the FAQ.
2018-07-08 22:41:31 +02:00
GiteaBot
efd202f40f [skip ci] Updated translations via Crowdin 2018-07-07 01:55:43 +00:00
techknowlogick
ab55ca7ebd
Add ability to delete a token (#4235)
Fix #4234
2018-07-06 21:54:30 -04:00
Lunny Xiao
1675fc4301 add git timeout settings docs (#4383) 2018-07-06 08:49:37 +03:00
techknowlogick
61b40520ba GPG verification docs (#4381)
* GPG verification docs

* update URL
2018-07-06 09:36:54 +08:00
techknowlogick
f1d6a1fffc
Add the ability to have built in themes in Gitea (#4198)
This makes it easier for user who want to theme but
don't have the ability to know how to customize templates
all that is required is a change in a config option

The reason why I chose the DEFAULT_THEME as variable,
as perhaps in the future we will allow users to chose their
theme whon logged in just like we do with languages
2018-07-05 17:25:04 -04:00
GiteaBot
28c1c90230 [skip ci] Updated translations via Crowdin 2018-07-05 20:42:15 +00:00
Jonas Franz
2a60e72fcd
Replace src with raw to fix image paths (#4377)
Signed-off-by: Jonas Franz <info@jonasfranz.software>
2018-07-05 22:36:45 +02:00
GiteaBot
cfb76cd99e [skip ci] Updated translations via Crowdin 2018-07-05 17:49:07 +00:00
Guido Diepen
7c943b1cad Implemented hover text showing user FullName (#4261)
For each action that is displayed in either the public activity overview
of a user, or in the dashboard overview, the link to the username is now
extended with a title attribute to show the FullName as hover text

Signed-off-by: Guido Diepen <site-github@guidodiepen.nl>
2018-07-05 19:48:18 +02:00
Lanre Adelowo
5bc8782d33 Don't display buttons if there are no system notifications (#4280)
* Don't display buttons if there are no notices

* remove redundant gt check
2018-07-05 17:35:42 +02:00
Nicolas Da Mutten
e07d3ad0fc Fixes repo membership check in API (#4341)
Untested, since I can't compile (yet).
2018-07-05 15:14:56 +08:00
Fluf
f035dcd4f2 Add Recaptcha functionality to Gitea (#4044) 2018-07-05 00:13:05 -04:00
Lauris BH
54fedd4070 Add default merge options when adding new repository (#4369) 2018-07-05 11:02:54 +08:00
GiteaBot
07063e3e11 [skip ci] Updated translations via Crowdin 2018-07-05 00:05:18 +00:00
Lauris BH
69e2ab1611 Allow administrator to create repository for any organization (#4368) 2018-07-05 01:51:02 +02:00
GiteaBot
4eae810d63 [skip ci] Updated translations via Crowdin 2018-07-04 22:53:06 +00:00
Lauris BH
4a8ee0b5cc
Check that repositories can only be migrated to own user or organizations (#4366)
* Repositories can only migrated to own user or organizations

* Add check for organization that user does not belong to

* Allow admin to migrate repositories for other users
2018-07-05 01:45:15 +03:00
Lunny Xiao
b46066f17c fix repository last updated time update when delete a user who watched the repo (#4363) 2018-07-05 00:47:05 +03:00
GiteaBot
95f0f62ea4 [skip ci] Updated translations via Crowdin 2018-07-04 20:24:23 +00:00
Antoine GIRARD
74f9f98f78 Simply remove tidb and deps (#3993) 2018-07-04 16:23:23 -04:00
Matthew Richardson
2e3475f02c Fix typos in i18n variable names. (#4080) 2018-07-04 19:43:21 +08:00
GiteaBot
df77ad31d5 [skip ci] Updated translations via Crowdin 2018-07-04 09:28:27 +00:00
techknowlogick
c3bbf43970 Fix docker build (#4358)
/app/gitea/gitea is the file, and /usr/local/bin is where the symlink will be located
2018-07-04 12:27:30 +03:00
GiteaBot
fc53f95f23 [skip ci] Updated translations via Crowdin 2018-07-04 00:45:44 +00:00
Tao Wang
823318bfbe Add missing path in the Docker app.ini template (#2181) 2018-07-03 20:44:46 -04:00
tarelda
5676f60cba Keep preseeded database password (#4284) 2018-07-03 20:09:55 -04:00
GiteaBot
3fed13b0ee [skip ci] Updated translations via Crowdin 2018-07-03 23:53:28 +00:00
cezar97
51ba3df5ff Add noreferrer to rel='noopener` for <a> tags (#4328) 2018-07-03 19:52:36 -04:00
ucodi
4b654ad17f Update notification icon (#4343) 2018-07-03 19:16:46 -04:00
Pofilo
5d1a6382b6 #4354 Fix translation (#4355) 2018-07-03 19:03:31 -04:00
Clar Charr
c71ee33057 Increase default TOTP secret size to 320 bits (#4287) 2018-07-03 18:10:35 -04:00
techknowlogick
9d4c1ddfa1
Dep upgrade mysql lib (#4161)
*  update gopkg file to add sql dep
2018-07-03 17:58:31 -04:00
618 changed files with 13084 additions and 169866 deletions

View File

@ -75,7 +75,7 @@ pipeline:
- make lint
- make fmt-check
- make swagger-check
- make swagger-validate
# - make swagger-validate
- make misspell-check
- make test-vendor
- make build
@ -203,7 +203,7 @@ pipeline:
when:
event: [ push, tag ]
build_docs:
build-docs:
image: webhippie/hugo:latest
pull: true
commands:
@ -212,26 +212,12 @@ pipeline:
- make clean
- make build
docker_docs:
image: plugins/docker:17.05
publish-docs:
image: lucap/drone-netlify:latest
pull: true
secrets: [ docker_username, docker_password ]
repo: gitea/docs
context: docs
dockerfile: docs/Dockerfile
tags: [ '${DRONE_BRANCH##release/v}' ]
when:
event: [ push ]
branch: [ release/* ]
docker_docs:
image: plugins/docker:17.05
pull: true
secrets: [ docker_username, docker_password ]
repo: gitea/docs
context: docs
dockerfile: docs/Dockerfile
tags: [ 'latest' ]
secrets: [ netlify_token ]
site_id: d2260bae-7861-4c02-8646-8f6440b12672
path: docs/public/
when:
event: [ push ]
branch: [ master ]

51
BSDmakefile Normal file
View File

@ -0,0 +1,51 @@
# GNU makefile proxy script for BSD make
# Written and maintained by Mahmoud Al-Qudsi <mqudsi@neosmart.net>
# Copyright NeoSmart Technologies <https://neosmart.net/> 2014-2018
# Obtain updates from <https://github.com/neosmart/gmake-proxy>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
JARG =
GMAKE = "gmake"
#When gmake is called from another make instance, -w is automatically added
#which causes extraneous messages about directory changes to be emitted.
#--no-print-directory silences these messages.
GARGS = "--no-print-directory"
.if "$(.MAKE.JOBS)" != ""
JARG = -j$(.MAKE.JOBS)
.endif
#by default bmake will cd into ./obj first
.OBJDIR: ./
.PHONY: FRC
$(.TARGETS): FRC
$(GMAKE) $(GARGS) $(.TARGETS:S,.DONE,,) $(JARG)
.DONE .DEFAULT: .SILENT
$(GMAKE) $(GARGS) $(.TARGETS:S,.DONE,,) $(JARG)
.ERROR: .SILENT
if ! which $(GMAKE) > /dev/null; then \
echo "GNU Make is required!"; \
fi

View File

@ -58,3 +58,4 @@ CMD ["/bin/s6-svscan", "/etc/s6"]
COPY docker /
COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
RUN ln -s /app/gitea/gitea /usr/local/bin/gitea

186
Gopkg.lock generated
View File

@ -11,7 +11,7 @@
branch = "master"
name = "code.gitea.io/sdk"
packages = ["gitea"]
revision = "b2308e3f700875a3642a78bd3f6e5db8ef6f974d"
revision = "ec80752c9512cf07fc62ddc42565118183743942"
[[projects]]
name = "github.com/PuerkitoBio/goquery"
@ -143,17 +143,6 @@
packages = ["."]
revision = "098da33fde5f9220736531b3cb26a2dec86a8367"
[[projects]]
name = "github.com/coreos/etcd"
packages = ["error"]
revision = "01c303113d0a3d5a8075864321c3aedb72035bdd"
[[projects]]
branch = "master"
name = "github.com/coreos/go-etcd"
packages = ["etcd"]
revision = "003851be7bb0694fe3cc457a49529a19388ee7cf"
[[projects]]
branch = "master"
name = "github.com/couchbase/vellum"
@ -294,27 +283,24 @@
[[projects]]
name = "github.com/go-sql-driver/mysql"
packages = ["."]
revision = "ce924a41eea897745442daaa1739089b0f3f561d"
revision = "d523deb1b23d913de5bdada721a6071e71283618"
[[projects]]
name = "github.com/go-xorm/builder"
packages = ["."]
revision = "488224409dd8aa2ce7a5baf8d10d55764a913738"
revision = "dc8bf48f58fab2b4da338ffd25191905fd741b8f"
version = "v0.3.0"
[[projects]]
name = "github.com/go-xorm/core"
packages = ["."]
revision = "cb1d0ca71f42d3ee1bf4aba7daa16099bc31a7e9"
[[projects]]
name = "github.com/go-xorm/tidb"
packages = ["."]
revision = "21e49190ce47a766fa741cf7edc831a30c12c6ac"
revision = "c10e21e7e1cec20e09398f2dfae385e58c8df555"
version = "v0.6.0"
[[projects]]
name = "github.com/go-xorm/xorm"
packages = ["."]
revision = "d4149d1eee0c2c488a74a5863fd9caf13d60fd03"
revision = "ad69f7d8f0861a29438154bb0a20b60501298480"
[[projects]]
branch = "master"
@ -370,11 +356,6 @@
packages = ["."]
revision = "8fb95d837f7d6db1913fecfd7bcc5333e6499596"
[[projects]]
name = "github.com/juju/errors"
packages = ["."]
revision = "b2c7a7da5b2995941048f60146e67702a292e468"
[[projects]]
name = "github.com/kballard/go-shellquote"
packages = ["."]
@ -497,134 +478,12 @@
packages = ["."]
revision = "891127d8d1b52734debe1b3c3d7e747502b6c366"
[[projects]]
name = "github.com/ngaut/deadline"
packages = ["."]
revision = "fae8f9dfd7048de16575b9d4c255278e38c28a4f"
[[projects]]
branch = "master"
name = "github.com/ngaut/go-zookeeper"
packages = ["zk"]
revision = "9c3719e318c7cfd072e41eb48cb71fcaa49d5e05"
[[projects]]
name = "github.com/ngaut/log"
packages = ["."]
revision = "d2af3a61f64d093457fb23b25d20f4ce3cd551ce"
[[projects]]
branch = "master"
name = "github.com/ngaut/pools"
packages = ["."]
revision = "b7bc8c42aac787667ba45adea78233f53f548443"
[[projects]]
branch = "master"
name = "github.com/ngaut/sync2"
packages = ["."]
revision = "7a24ed77b2efb460c1468b7dc917821c66e80e55"
[[projects]]
branch = "master"
name = "github.com/ngaut/tso"
packages = [
"client",
"proto",
"util"
]
revision = "118f6c141d58f1e72577ff61f43f649bf39355ee"
[[projects]]
branch = "master"
name = "github.com/ngaut/zkhelper"
packages = ["."]
revision = "6738bdc138d469112c6687fbfcfe049ccabd6a0a"
[[projects]]
branch = "master"
name = "github.com/petar/GoLLRB"
packages = ["llrb"]
revision = "53be0d36a84c2a886ca057d34b6aa4468df9ccb4"
[[projects]]
name = "github.com/philhofer/fwd"
packages = ["."]
revision = "bb6d471dc95d4fe11e432687f8b70ff496cf3136"
version = "v1.0.0"
[[projects]]
name = "github.com/pingcap/go-hbase"
packages = [
".",
"iohelper",
"proto"
]
revision = "7a98d1fe4e9e115de8c77ae0e158c0d08732c550"
[[projects]]
branch = "master"
name = "github.com/pingcap/go-themis"
packages = [
".",
"oracle",
"oracle/oracles"
]
revision = "dbb996606c1d1fe8571fd9ac6da2254c76d2c5c9"
[[projects]]
name = "github.com/pingcap/tidb"
packages = [
".",
"ast",
"column",
"context",
"ddl",
"domain",
"evaluator",
"executor",
"infoschema",
"inspectkv",
"kv",
"kv/memkv",
"meta",
"meta/autoid",
"model",
"mysql",
"optimizer",
"optimizer/plan",
"parser",
"parser/opcode",
"perfschema",
"privilege",
"privilege/privileges",
"sessionctx",
"sessionctx/autocommit",
"sessionctx/db",
"sessionctx/forupdate",
"sessionctx/variable",
"store/hbase",
"store/localstore",
"store/localstore/boltdb",
"store/localstore/engine",
"store/localstore/goleveldb",
"structure",
"table",
"table/tables",
"terror",
"util",
"util/bytes",
"util/charset",
"util/codec",
"util/distinct",
"util/hack",
"util/segmentmap",
"util/sqlexec",
"util/stringutil",
"util/types"
]
revision = "33197485abe227dcb254644cf5081c9a3c281669"
[[projects]]
name = "github.com/pmezard/go-difflib"
packages = ["difflib"]
@ -673,24 +532,6 @@
revision = "12b6f73e6084dad08a7c6e575284b177ecafbc71"
version = "v1.2.1"
[[projects]]
name = "github.com/syndtr/goleveldb"
packages = [
"leveldb",
"leveldb/cache",
"leveldb/comparer",
"leveldb/errors",
"leveldb/filter",
"leveldb/iterator",
"leveldb/journal",
"leveldb/memdb",
"leveldb/opt",
"leveldb/storage",
"leveldb/table",
"leveldb/util"
]
revision = "917f41c560270110ceb73c5b38be2a9127387071"
[[projects]]
branch = "master"
name = "github.com/tinylib/msgp"
@ -703,17 +544,6 @@
packages = ["."]
revision = "d21a03e0b1d9fc1df59ff54e7a513655c1748b0c"
[[projects]]
name = "github.com/twinj/uuid"
packages = ["."]
revision = "89173bcdda19db0eb88aef1e1cb1cb2505561d31"
version = "0.10.0"
[[projects]]
name = "github.com/ugorji/go"
packages = ["codec"]
revision = "c062049c1793b01a3cc3fe786108edabbaf7756b"
[[projects]]
name = "github.com/urfave/cli"
packages = ["."]
@ -873,6 +703,6 @@
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
inputs-digest = "036b8c882671cf8d2c5e2fdbe53b1bdfbd39f7ebd7765bd50276c7c4ecf16687"
inputs-digest = "5ae18d543bbb8186589c003422b333097d67bb5fed8b4c294be70c012ccffc94"
solver-name = "gps-cdcl"
solver-version = 1

View File

@ -30,15 +30,14 @@ ignored = ["google.golang.org/appengine*"]
revision = "f2499483f923065a842d38eb4c7f1927e6fc6e6d"
name = "golang.org/x/net"
[[constraint]]
#version = "v1.0.0"
revision = "33197485abe227dcb254644cf5081c9a3c281669"
name = "github.com/pingcap/tidb"
[[override]]
name = "github.com/go-xorm/xorm"
#version = "0.6.5"
revision = "d4149d1eee0c2c488a74a5863fd9caf13d60fd03"
revision = "ad69f7d8f0861a29438154bb0a20b60501298480"
[[override]]
name = "github.com/go-sql-driver/mysql"
revision = "d523deb1b23d913de5bdada721a6071e71283618"
[[override]]
name = "github.com/gorilla/mux"

View File

@ -21,7 +21,19 @@ GOFMT ?= gofmt -s
GOFLAGS := -i -v
EXTRA_GOFLAGS ?=
LDFLAGS := -X "main.Version=$(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" -X "main.Tags=$(TAGS)"
ifneq ($(DRONE_TAG),)
VERSION ?= $(subst v,,$(DRONE_TAG))
GITEA_VERSION := $(VERSION)
else
ifneq ($(DRONE_BRANCH),)
VERSION ?= $(subst release/v,,$(DRONE_BRANCH))
else
VERSION ?= master
endif
GITEA_VERSION := $(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')
endif
LDFLAGS := -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
PACKAGES ?= $(filter-out code.gitea.io/gitea/integrations,$(shell $(GO) list ./... | grep -v /vendor/))
SOURCES ?= $(shell find . -name "*.go" -type f)
@ -45,15 +57,8 @@ else
EXECUTABLE := gitea
endif
ifneq ($(DRONE_TAG),)
VERSION ?= $(subst v,,$(DRONE_TAG))
else
ifneq ($(DRONE_BRANCH),)
VERSION ?= $(subst release/v,,$(DRONE_BRANCH))
else
VERSION ?= master
endif
endif
# $(call strip-suffix,filename)
strip-suffix = $(firstword $(subst ., ,$(1)))
.PHONY: all
all: build
@ -301,7 +306,7 @@ public/js/index.js: $(JAVASCRIPTS)
.PHONY: stylesheets-check
stylesheets-check: generate-stylesheets
@diff=$$(git diff public/css/index.css); \
@diff=$$(git diff public/css/*); \
if [ -n "$$diff" ]; then \
echo "Please run 'make generate-stylesheets' and commit the result:"; \
echo "$${diff}"; \
@ -311,6 +316,7 @@ stylesheets-check: generate-stylesheets
.PHONY: generate-stylesheets
generate-stylesheets:
node_modules/.bin/lessc --clean-css public/less/index.less public/css/index.css
$(foreach file, $(filter-out public/less/themes/_base.less, $(wildcard public/less/themes/*)),node_modules/.bin/lessc --clean-css public/less/themes/$(notdir $(file)) > public/css/theme-$(notdir $(call strip-suffix,$(file))).css;)
.PHONY: swagger-ui
swagger-ui:

View File

@ -90,6 +90,10 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
Gitea is pronounced [/ɡɪti:/](https://youtu.be/EM71-2uDAoY) as in "gi-tea" with a hard g.
**Why is this not hosted on a Gitea instance?**
We're [working on it](https://github.com/go-gitea/gitea/issues/1029).
## License
This project is licensed under the MIT License.

View File

@ -67,6 +67,8 @@ EXPLORE_PAGING_NUM = 20
ISSUE_PAGING_NUM = 10
; Number of maximum commits displayed in one activity feed
FEED_MAX_COMMIT_NUM = 5
; Number of maximum commits displayed in commit graph.
GRAPH_MAX_COMMIT_NUM = 100
; Value of `theme-color` meta tag, used by Android >= 5.0
; An invalid color like "none" or "disable" will have the default style
; More info: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android
@ -75,6 +77,8 @@ THEME_COLOR_META_TAG = `#6cc644`
MAX_DISPLAY_FILE_SIZE = 8388608
; Whether the email of the user should be shown in the Explore Users page
SHOW_USER_EMAIL = true
; Set the default theme for the Gitea install
DEFAULT_THEME = gitea
[ui.admin]
; Number of users that are displayed on one page
@ -301,13 +305,22 @@ ENABLE_NOTIFY_MAIL = false
ENABLE_REVERSE_PROXY_AUTHENTICATION = false
ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false
; Enable captcha validation for registration
ENABLE_CAPTCHA = true
ENABLE_CAPTCHA = false
; Type of captcha you want to use. Options: image, recaptcha
CAPTCHA_TYPE = image
; Enable recaptcha to use Google's recaptcha service
; Go to https://www.google.com/recaptcha/admin to sign up for a key
RECAPTCHA_SECRET =
RECAPTCHA_SITEKEY =
; Default value for KeepEmailPrivate
; Each new user will get the value of this setting copied into their profile
DEFAULT_KEEP_EMAIL_PRIVATE = false
; Default value for AllowCreateOrganization
; Every new user will have rights set to create organizations depending on this setting
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
; Default value for EnableDependencies
; Repositories will use depencies by default depending on this setting
DEFAULT_ENABLE_DEPENDENCIES = true
; Enable Timetracking
ENABLE_TIMETRACKING = true
; Default value for EnableTimetracking

View File

@ -4,6 +4,9 @@ RUN_MODE = $RUN_MODE
[repository]
ROOT = /data/git/repositories
[repository.local]
LOCAL_COPY_PATH = /data/gitea/tmp/local-repo
[repository.upload]
TEMP_PATH = /data/gitea/uploads
@ -14,6 +17,7 @@ HTTP_PORT = $HTTP_PORT
ROOT_URL = $ROOT_URL
DISABLE_SSH = $DISABLE_SSH
SSH_PORT = $SSH_PORT
LFS_CONTENT_PATH = /data/git/lfs
[database]
PATH = /data/gitea/gitea.db
@ -23,6 +27,9 @@ NAME = $DB_NAME
USER = $DB_USER
PASSWD = $DB_PASSWD
[indexer]
ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve
[session]
PROVIDER_CONFIG = /data/gitea/sessions

View File

@ -1,22 +0,0 @@
# build stage
FROM golang:alpine AS build-env
RUN apk add --no-cache git
RUN go get -d -v github.com/mholt/caddy/caddy github.com/pedronasser/caddy-search github.com/simia-tech/caddy-locale
WORKDIR /go/src/github.com/mholt/caddy/caddy
RUN sed -i '/This is where other plugins get plugged in (imported)/a _ "github.com/pedronasser/caddy-search"' caddymain/run.go \
&& sed -i '/This is where other plugins get plugged in (imported)/a _ "github.com/simia-tech/caddy-locale"' caddymain/run.go \
&& go install -v . \
&& /go/bin/caddy -version
FROM alpine:edge
EXPOSE 80
RUN apk add --no-cache wget mailcap ca-certificates
COPY --from=build-env /go/bin/caddy /usr/sbin/caddy
COPY docker/caddy.conf /etc/caddy.conf
COPY public /srv/www
CMD ["/usr/sbin/caddy", "-conf", "/etc/caddy.conf"]

View File

@ -31,7 +31,7 @@ menu:
post: active
- name: API
url: https://try.gitea.io/api/swagger
weight: 25
weight: 45
pre: plug
- name: Blog
url: https://blog.gitea.io/
@ -79,7 +79,7 @@ languages:
post: active
- name: API
url: https://try.gitea.io/api/swagger
weight: 25
weight: 45
pre: plug
- name: 博客
url: https://blog.gitea.io/
@ -122,7 +122,7 @@ languages:
post: active
- name: API
url: https://try.gitea.io/api/swagger
weight: 25
weight: 45
pre: plug
- name: 部落格
url: https://blog.gitea.io/
@ -165,7 +165,7 @@ languages:
post: active
- name: API
url: https://try.gitea.io/api/swagger
weight: 25
weight: 45
pre: plug
- name: Blog
url: https://blog.gitea.io/
@ -208,7 +208,7 @@ languages:
post: active
- name: API
url: https://try.gitea.io/api/swagger
weight: 25
weight: 45
pre: plug
- name: Blog
url: https://blog.gitea.io/
@ -241,17 +241,17 @@ languages:
menu:
page:
- name: Site
url: /fr-fr/
url: https://gitea.io/en-us/
weight: 10
pre: home
post: active
- name: Documentation
url: https://docs.gitea.io/fr-fr/
url: /fr-fr/
weight: 20
pre: question
- name: API
url: https://try.gitea.io/api/swagger
weight: 25
weight: 45
pre: plug
- name: Blog
url: https://blog.gitea.io/

View File

@ -68,6 +68,8 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
- `EXPLORE_PAGING_NUM`: **20**: Number of repositories that are shown in one explore page.
- `ISSUE_PAGING_NUM`: **10**: Number of issues that are shown in one page (for all pages that list issues).
- `FEED_MAX_COMMIT_NUM`: **5**: Number of maximum commits shown in one activity feed.
- `GRAPH_MAX_COMMIT_NUM`: **100**: Number of maximum commits shown in the commit graph.
- `DEFAULT_THEME`: **gitea**: \[gitea, arc-green\]: Set the default theme for the Gitea install.
### UI - Admin (`ui.admin`)
@ -177,7 +179,11 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
- `ENABLE_REVERSE_PROXY_AUTHENTICATION`: **false**: Enable this to allow reverse proxy authentication.
- `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION`: **false**: Enable this to allow auto-registration
for reverse authentication.
- `ENABLE_CAPTCHA`: **true**: Enable this to use captcha validation for registration.
- `ENABLE_CAPTCHA`: **false**: Enable this to use captcha validation for registration.
- `CAPTCHA_TYPE`: **image**: \[image, recaptcha\]
- `RECAPTCHA_SECRET`: **""**: Go to https://www.google.com/recaptcha/admin to get a secret for recaptcha
- `RECAPTCHA_SITEKEY`: **""**: Go to https://www.google.com/recaptcha/admin to get a sitekey for recaptcha
- `DEFAULT_ENABLE_DEPENDENCIES`: **true** Enable this to have dependencies enabled by default.
## Webhook (`webhook`)
@ -279,6 +285,13 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
- `MAX_GIT_DIFF_FILES`: **100**: Max number of files shown in diff view.
- `GC_ARGS`: **\<empty\>**: Arguments for command `git gc`, e.g. `--aggressive --auto`.
## Git - Timeout settings (`git.timeout`)
- `MIGRATE`: **600**: Migrate external repositories timeout seconds.
- `MIRROR`: **300**: Mirror external repositories timeout seconds.
- `CLONE`: **300**: Git clone from internal repositories timeout seconds.
- `PULL`: **300**: Git pull from internal repositories timeout seconds.
- `GC`: **60**: Git repository GC timeout seconds.
## API (`api`)
- `ENABLE_SWAGGER_ENDPOINT`: **true**: Enables /api/swagger, /api/v1/swagger etc. endpoints. True or false; default is true.

View File

@ -187,6 +187,13 @@ menu:
- `MAX_GIT_DIFF_FILES`: 比较视图中的最大现实文件数目。
- `GC_ARGS`: 执行 `git gc` 命令的参数, 比如: `--aggressive --auto`
## Git - 超时设置 (`git.timeout`)
- `MIGRATE`: **600**: 迁移外部仓库时的超时时间,单位秒
- `MIRROR`: **300**: 镜像外部仓库的超时时间,单位秒
- `CLONE`: **300**: 内部仓库间克隆的超时时间,单位秒
- `PULL`: **300**: 内部仓库间拉取的超时时间,单位秒
- `GC`: **60**: git仓库GC的超时时间单位秒
## markup (`markup`)
外部渲染工具支持,你可以用你熟悉的文档渲染工具. 比如一下将新增一个名字为 `asciidoc` 的渲染工具which is followed `markup.` ini section. And there are some config items below.

View File

@ -91,3 +91,7 @@ Apart from `extra_links.tmpl` and `extra_tabs.tmpl`, there are other useful temp
## Customizing gitignores, labels, licenses, locales, and readmes.
Place custom files in corresponding sub-folder under `custom/options`.
## Customizing the look of Gitea
Gitea has two built-in themes, the default theme `gitea`, and a dark theme `arc-green`. To change the look of your Gitea install change the value of `DEFAULT_THEME` in the [ui](https://docs.gitea.io/en-us/config-cheat-sheet/#ui-ui) section of `app.ini` to another one of the available options.

View File

@ -21,10 +21,18 @@ the destination platform from the [downloads page](https://dl.gitea.io/gitea), c
the URL and replace the URL within the commands below:
```sh
wget -O gitea https://dl.gitea.io/gitea/1.4.2/gitea-1.4.2-linux-amd64
wget -O gitea https://dl.gitea.io/gitea/1.4.3/gitea-1.4.3-linux-amd64
chmod +x gitea
```
## Verify GPG signature
Gitea signs all binaries with a [GPG key](https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0x2D9AE806EC1592E2) to prevent against unwanted modification of binaries. To validate the binary download the signature file which ends in `.asc` for the binary you downloaded and use the gpg command line tool.
```sh
gpg --keyserver pgp.mit.edu --recv 0x2D9AE806EC1592E2
gpg --verify gitea-1.5.0-linux-amd64.asc gitea-1.5.0-linux-amd64
```
## Test
After getting a binary, it can be tested with `./gitea web` or moved to a permanent

View File

@ -1,44 +0,0 @@
:80 {
root /srv/www
locale en-US zh-CN zh-TW pt-BR nl-NL fr-FR {
detect header
}
redir 301 {
if {path} match ^/$
/ /{>Detected-Locale}/
}
rewrite /en-US/ {
regexp (.*)
to /en-us/{1}
}
rewrite /zh-CN/ {
regexp (.*)
to /zh-cn/{1}
}
rewrite /zh-TW/ {
regexp (.*)
to /zh-tw/{1}
}
rewrite /pt-BR/ {
regexp (.*)
to /pt-br/{1}
}
rewrite /nl-NL/ {
regexp (.*)
to /nl-nl/{1}
}
rewrite /fr-FR/ {
regexp (.*)
to /fr-fr/{1}
}
header / Vary "Accept-Language"
}

View File

6
docs/static/_headers vendored Normal file
View File

@ -0,0 +1,6 @@
/*
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' https://fonts.googleapis.com https://cdnjs.cloudflare.com; font-src 'self' data: https://cdnjs.cloudflare.com https://fonts.gstatic.com
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin

8
docs/static/_redirects vendored Normal file
View File

@ -0,0 +1,8 @@
https://gitea-docs.netlify.com/* https://docs.gitea.io/:splat 302!
/ /fr-fr/ 302! Language=fr
/ /nl-nl/ 302! Language=nl
/ /pt-br/ 302! Language=pt-br
/ /zh-cn/ 302! Language=zh-cn
/ /zh-tw/ 302! Language=zh-tw
/ /en-us/ 302!

View File

@ -235,3 +235,53 @@ func TestAPIGetRepoByIDUnauthorized(t *testing.T) {
req := NewRequestf(t, "GET", "/api/v1/repositories/2")
sess.MakeRequest(t, req, http.StatusNotFound)
}
func TestAPIRepoMigrate(t *testing.T) {
testCases := []struct {
ctxUserID, userID int64
cloneURL, repoName string
expectedStatus int
}{
{ctxUserID: 1, userID: 2, cloneURL: "https://github.com/go-gitea/git.git", repoName: "git-admin", expectedStatus: http.StatusCreated},
{ctxUserID: 2, userID: 2, cloneURL: "https://github.com/go-gitea/git.git", repoName: "git-own", expectedStatus: http.StatusCreated},
{ctxUserID: 2, userID: 1, cloneURL: "https://github.com/go-gitea/git.git", repoName: "git-bad", expectedStatus: http.StatusForbidden},
{ctxUserID: 2, userID: 3, cloneURL: "https://github.com/go-gitea/git.git", repoName: "git-org", expectedStatus: http.StatusCreated},
{ctxUserID: 2, userID: 6, cloneURL: "https://github.com/go-gitea/git.git", repoName: "git-bad-org", expectedStatus: http.StatusForbidden},
}
prepareTestEnv(t)
for _, testCase := range testCases {
user := models.AssertExistsAndLoadBean(t, &models.User{ID: testCase.ctxUserID}).(*models.User)
session := loginUser(t, user.Name)
req := NewRequestWithJSON(t, "POST", "/api/v1/repos/migrate", &api.MigrateRepoOption{
CloneAddr: testCase.cloneURL,
UID: int(testCase.userID),
RepoName: testCase.repoName,
})
session.MakeRequest(t, req, testCase.expectedStatus)
}
}
func TestAPIOrgRepoCreate(t *testing.T) {
testCases := []struct {
ctxUserID int64
orgName, repoName string
expectedStatus int
}{
{ctxUserID: 1, orgName: "user3", repoName: "repo-admin", expectedStatus: http.StatusCreated},
{ctxUserID: 2, orgName: "user3", repoName: "repo-own", expectedStatus: http.StatusCreated},
{ctxUserID: 2, orgName: "user6", repoName: "repo-bad-org", expectedStatus: http.StatusForbidden},
}
prepareTestEnv(t)
for _, testCase := range testCases {
user := models.AssertExistsAndLoadBean(t, &models.User{ID: testCase.ctxUserID}).(*models.User)
session := loginUser(t, user.Name)
req := NewRequestWithJSON(t, "POST", fmt.Sprintf("/api/v1/org/%s/repos", testCase.orgName), &api.CreateRepoOption{
Name: testCase.repoName,
})
session.MakeRequest(t, req, testCase.expectedStatus)
}
}

View File

@ -0,0 +1,50 @@
// Copyright 2018 The Gitea 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 integrations
import (
"net/http"
"testing"
"code.gitea.io/gitea/models"
api "code.gitea.io/sdk/gitea"
)
// TestAPICreateAndDeleteToken tests that token that was just created can be deleted
func TestAPICreateAndDeleteToken(t *testing.T) {
prepareTestEnv(t)
user := models.AssertExistsAndLoadBean(t, &models.User{ID: 1}).(*models.User)
req := NewRequestWithJSON(t, "POST", "/api/v1/users/user1/tokens", map[string]string{
"name": "test-key-1",
})
req = AddBasicAuthHeader(req, user.Name)
resp := MakeRequest(t, req, http.StatusCreated)
var newAccessToken api.AccessToken
DecodeJSON(t, resp, &newAccessToken)
models.AssertExistsAndLoadBean(t, &models.AccessToken{
ID: newAccessToken.ID,
Name: newAccessToken.Name,
Sha1: newAccessToken.Sha1,
UID: user.ID,
})
req = NewRequestf(t, "DELETE", "/api/v1/users/user1/tokens/%d", newAccessToken.ID)
req = AddBasicAuthHeader(req, user.Name)
MakeRequest(t, req, http.StatusNoContent)
models.AssertNotExistsBean(t, &models.AccessToken{ID: newAccessToken.ID})
}
// TestAPIDeleteMissingToken ensures that error is thrown when token not found
func TestAPIDeleteMissingToken(t *testing.T) {
prepareTestEnv(t)
user := models.AssertExistsAndLoadBean(t, &models.User{ID: 1}).(*models.User)
req := NewRequestf(t, "DELETE", "/api/v1/users/user1/tokens/%d", models.NonexistentID)
req = AddBasicAuthHeader(req, user.Name)
MakeRequest(t, req, http.StatusNotFound)
}

View File

@ -256,6 +256,11 @@ func NewRequestWithBody(t testing.TB, method, urlStr string, body io.Reader) *ht
return request
}
func AddBasicAuthHeader(request *http.Request, username string) *http.Request {
request.SetBasicAuth(username, userPassword)
return request
}
const NoExpectedStatus = -1
func MakeRequest(t testing.TB, req *http.Request, expectedStatus int) *httptest.ResponseRecorder {

View File

@ -14,6 +14,7 @@ import (
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
// register supported doc types
_ "code.gitea.io/gitea/modules/markup/csv"
_ "code.gitea.io/gitea/modules/markup/markdown"
_ "code.gitea.io/gitea/modules/markup/orgmode"

View File

@ -122,6 +122,12 @@ func (a *Action) loadRepo() {
}
}
// GetActFullName gets the action's user full name.
func (a *Action) GetActFullName() string {
a.loadActUser()
return a.ActUser.FullName
}
// GetActUserName gets the action's user name.
func (a *Action) GetActUserName() string {
a.loadActUser()
@ -471,6 +477,10 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
}
if err = issue.ChangeStatus(doer, repo, true); err != nil {
// Don't return an error when dependencies are open as this would let the push fail
if IsErrDependenciesLeft(err) {
return nil
}
return err
}
}

View File

@ -1259,3 +1259,88 @@ func IsErrU2FRegistrationNotExist(err error) bool {
_, ok := err.(ErrU2FRegistrationNotExist)
return ok
}
// .___ ________ .___ .__
// | | ______ ________ __ ____ \______ \ ____ ______ ____ ____ __| _/____ ____ ____ |__| ____ ______
// | |/ ___// ___/ | \_/ __ \ | | \_/ __ \\____ \_/ __ \ / \ / __ |/ __ \ / \_/ ___\| |/ __ \ / ___/
// | |\___ \ \___ \| | /\ ___/ | ` \ ___/| |_> > ___/| | \/ /_/ \ ___/| | \ \___| \ ___/ \___ \
// |___/____ >____ >____/ \___ >_______ /\___ > __/ \___ >___| /\____ |\___ >___| /\___ >__|\___ >____ >
// \/ \/ \/ \/ \/|__| \/ \/ \/ \/ \/ \/ \/ \/
// ErrDependencyExists represents a "DependencyAlreadyExists" kind of error.
type ErrDependencyExists struct {
IssueID int64
DependencyID int64
}
// IsErrDependencyExists checks if an error is a ErrDependencyExists.
func IsErrDependencyExists(err error) bool {
_, ok := err.(ErrDependencyExists)
return ok
}
func (err ErrDependencyExists) Error() string {
return fmt.Sprintf("issue dependency does already exist [issue id: %d, dependency id: %d]", err.IssueID, err.DependencyID)
}
// ErrDependencyNotExists represents a "DependencyAlreadyExists" kind of error.
type ErrDependencyNotExists struct {
IssueID int64
DependencyID int64
}
// IsErrDependencyNotExists checks if an error is a ErrDependencyExists.
func IsErrDependencyNotExists(err error) bool {
_, ok := err.(ErrDependencyNotExists)
return ok
}
func (err ErrDependencyNotExists) Error() string {
return fmt.Sprintf("issue dependency does not exist [issue id: %d, dependency id: %d]", err.IssueID, err.DependencyID)
}
// ErrCircularDependency represents a "DependencyCircular" kind of error.
type ErrCircularDependency struct {
IssueID int64
DependencyID int64
}
// IsErrCircularDependency checks if an error is a ErrCircularDependency.
func IsErrCircularDependency(err error) bool {
_, ok := err.(ErrCircularDependency)
return ok
}
func (err ErrCircularDependency) Error() string {
return fmt.Sprintf("circular dependencies exists (two issues blocking each other) [issue id: %d, dependency id: %d]", err.IssueID, err.DependencyID)
}
// ErrDependenciesLeft represents an error where the issue you're trying to close still has dependencies left.
type ErrDependenciesLeft struct {
IssueID int64
}
// IsErrDependenciesLeft checks if an error is a ErrDependenciesLeft.
func IsErrDependenciesLeft(err error) bool {
_, ok := err.(ErrDependenciesLeft)
return ok
}
func (err ErrDependenciesLeft) Error() string {
return fmt.Sprintf("issue has open dependencies [issue id: %d]", err.IssueID)
}
// ErrUnknownDependencyType represents an error where an unknown dependency type was passed
type ErrUnknownDependencyType struct {
Type DependencyType
}
// IsErrUnknownDependencyType checks if an error is ErrUnknownDependencyType
func IsErrUnknownDependencyType(err error) bool {
_, ok := err.(ErrUnknownDependencyType)
return ok
}
func (err ErrUnknownDependencyType) Error() string {
return fmt.Sprintf("unknown dependency type [type: %d]", err.Type)
}

View File

@ -9,6 +9,7 @@ import (
"strings"
"code.gitea.io/git"
"code.gitea.io/gitea/modules/setting"
)
// GraphItem represent one commit, or one relation in timeline
@ -41,7 +42,7 @@ func GetCommitGraph(r *git.Repository) (GraphItems, error) {
"--all",
"-C",
"-M",
"-n 100",
fmt.Sprintf("-n %d", setting.UI.GraphMaxCommitNum),
"--date=iso",
fmt.Sprintf("--pretty=format:%s", format),
)
@ -66,7 +67,7 @@ func graphItemFromString(s string, r *git.Repository) (GraphItem, error) {
var ascii string
var data = "|||||||"
lines := strings.Split(s, "DATA:")
lines := strings.SplitN(s, "DATA:", 2)
switch len(lines) {
case 1:

View File

@ -5,6 +5,7 @@
package models
import (
"fmt"
"testing"
"code.gitea.io/git"
@ -43,3 +44,32 @@ func BenchmarkParseCommitString(b *testing.B) {
}
}
}
func TestCommitStringParsing(t *testing.T) {
dataFirstPart := "* DATA:||4e61bacab44e9b4730e44a6615d04098dd3a8eaf|2016-12-20 21:10:41 +0100|Author|user@mail.something|4e61bac|"
tests := []struct {
shouldPass bool
testName string
commitMessage string
}{
{true, "normal", "not a fancy message"},
{true, "extra pipe", "An extra pipe: |"},
{true, "extra 'Data:'", "DATA: might be trouble"},
}
for _, test := range tests {
t.Run(test.testName, func(t *testing.T) {
testString := fmt.Sprintf("%s%s", dataFirstPart, test.commitMessage)
graphItem, err := graphItemFromString(testString, nil)
if err != nil && test.shouldPass {
t.Errorf("Could not parse %s", testString)
return
}
if test.commitMessage != graphItem.Subject {
t.Errorf("%s does not match %s", test.commitMessage, graphItem.Subject)
}
})
}
}

View File

@ -649,6 +649,20 @@ func (issue *Issue) changeStatus(e *xorm.Session, doer *User, repo *Repository,
if issue.IsClosed == isClosed {
return nil
}
// Check for open dependencies
if isClosed && issue.Repo.IsDependenciesEnabled() {
// only check if dependencies are enabled and we're about to close an issue, otherwise reopening an issue would fail when there are unsatisfied dependencies
noDeps, err := IssueNoDependenciesLeft(issue)
if err != nil {
return err
}
if !noDeps {
return ErrDependenciesLeft{issue.ID}
}
}
issue.IsClosed = isClosed
if isClosed {
issue.ClosedUnix = util.TimeStampNow()
@ -1283,7 +1297,7 @@ func getParticipantsByIssueID(e Engine, issueID int64) ([]*User, error) {
And("`comment`.type = ?", CommentTypeComment).
And("`user`.is_active = ?", true).
And("`user`.prohibit_login = ?", false).
Join("INNER", "user", "`user`.id = `comment`.poster_id").
Join("INNER", "`user`", "`user`.id = `comment`.poster_id").
Distinct("poster_id").
Find(&userIDs); err != nil {
return nil, fmt.Errorf("get poster IDs: %v", err)
@ -1598,3 +1612,33 @@ func UpdateIssueDeadline(issue *Issue, deadlineUnix util.TimeStamp, doer *User)
return sess.Commit()
}
// Get Blocked By Dependencies, aka all issues this issue is blocked by.
func (issue *Issue) getBlockedByDependencies(e Engine) (issueDeps []*Issue, err error) {
return issueDeps, e.
Table("issue_dependency").
Select("issue.*").
Join("INNER", "issue", "issue.id = issue_dependency.dependency_id").
Where("issue_id = ?", issue.ID).
Find(&issueDeps)
}
// Get Blocking Dependencies, aka all issues this issue blocks.
func (issue *Issue) getBlockingDependencies(e Engine) (issueDeps []*Issue, err error) {
return issueDeps, e.
Table("issue_dependency").
Select("issue.*").
Join("INNER", "issue", "issue.id = issue_dependency.issue_id").
Where("dependency_id = ?", issue.ID).
Find(&issueDeps)
}
// BlockedByDependencies finds all Dependencies an issue is blocked by
func (issue *Issue) BlockedByDependencies() ([]*Issue, error) {
return issue.getBlockedByDependencies(x)
}
// BlockingDependencies returns all blocking dependencies, aka all other issues a given issue blocks
func (issue *Issue) BlockingDependencies() ([]*Issue, error) {
return issue.getBlockingDependencies(x)
}

View File

@ -66,6 +66,10 @@ const (
CommentTypeModifiedDeadline
// Removed a due date
CommentTypeRemovedDeadline
// Dependency added
CommentTypeAddDependency
//Dependency removed
CommentTypeRemoveDependency
)
// CommentTag defines comment tag type
@ -81,23 +85,25 @@ const (
// Comment represents a comment in commit and issue page.
type Comment struct {
ID int64 `xorm:"pk autoincr"`
Type CommentType
PosterID int64 `xorm:"INDEX"`
Poster *User `xorm:"-"`
IssueID int64 `xorm:"INDEX"`
Issue *Issue `xorm:"-"`
LabelID int64
Label *Label `xorm:"-"`
OldMilestoneID int64
MilestoneID int64
OldMilestone *Milestone `xorm:"-"`
Milestone *Milestone `xorm:"-"`
AssigneeID int64
RemovedAssignee bool
Assignee *User `xorm:"-"`
OldTitle string
NewTitle string
ID int64 `xorm:"pk autoincr"`
Type CommentType
PosterID int64 `xorm:"INDEX"`
Poster *User `xorm:"-"`
IssueID int64 `xorm:"INDEX"`
Issue *Issue `xorm:"-"`
LabelID int64
Label *Label `xorm:"-"`
OldMilestoneID int64
MilestoneID int64
OldMilestone *Milestone `xorm:"-"`
Milestone *Milestone `xorm:"-"`
AssigneeID int64
RemovedAssignee bool
Assignee *User `xorm:"-"`
OldTitle string
NewTitle string
DependentIssueID int64
DependentIssue *Issue `xorm:"-"`
CommitID int64
Line int64
@ -281,6 +287,15 @@ func (c *Comment) LoadAssigneeUser() error {
return nil
}
// LoadDepIssueDetails loads Dependent Issue Details
func (c *Comment) LoadDepIssueDetails() (err error) {
if c.DependentIssueID <= 0 || c.DependentIssue != nil {
return nil
}
c.DependentIssue, err = getIssueByID(x, c.DependentIssueID)
return err
}
// MailParticipants sends new comment emails to repository watchers
// and mentioned people.
func (c *Comment) MailParticipants(e Engine, opType ActionType, issue *Issue) (err error) {
@ -332,22 +347,24 @@ func createComment(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err
if opts.Label != nil {
LabelID = opts.Label.ID
}
comment := &Comment{
Type: opts.Type,
PosterID: opts.Doer.ID,
Poster: opts.Doer,
IssueID: opts.Issue.ID,
LabelID: LabelID,
OldMilestoneID: opts.OldMilestoneID,
MilestoneID: opts.MilestoneID,
RemovedAssignee: opts.RemovedAssignee,
AssigneeID: opts.AssigneeID,
CommitID: opts.CommitID,
CommitSHA: opts.CommitSHA,
Line: opts.LineNum,
Content: opts.Content,
OldTitle: opts.OldTitle,
NewTitle: opts.NewTitle,
Type: opts.Type,
PosterID: opts.Doer.ID,
Poster: opts.Doer,
IssueID: opts.Issue.ID,
LabelID: LabelID,
OldMilestoneID: opts.OldMilestoneID,
MilestoneID: opts.MilestoneID,
RemovedAssignee: opts.RemovedAssignee,
AssigneeID: opts.AssigneeID,
CommitID: opts.CommitID,
CommitSHA: opts.CommitSHA,
Line: opts.LineNum,
Content: opts.Content,
OldTitle: opts.OldTitle,
NewTitle: opts.NewTitle,
DependentIssueID: opts.DependentIssueID,
}
if _, err = e.Insert(comment); err != nil {
return nil, err
@ -549,6 +566,39 @@ func createDeleteBranchComment(e *xorm.Session, doer *User, repo *Repository, is
})
}
// Creates issue dependency comment
func createIssueDependencyComment(e *xorm.Session, doer *User, issue *Issue, dependentIssue *Issue, add bool) (err error) {
cType := CommentTypeAddDependency
if !add {
cType = CommentTypeRemoveDependency
}
// Make two comments, one in each issue
_, err = createComment(e, &CreateCommentOptions{
Type: cType,
Doer: doer,
Repo: issue.Repo,
Issue: issue,
DependentIssueID: dependentIssue.ID,
})
if err != nil {
return
}
_, err = createComment(e, &CreateCommentOptions{
Type: cType,
Doer: doer,
Repo: issue.Repo,
Issue: dependentIssue,
DependentIssueID: issue.ID,
})
if err != nil {
return
}
return
}
// CreateCommentOptions defines options for creating comment
type CreateCommentOptions struct {
Type CommentType
@ -557,17 +607,18 @@ type CreateCommentOptions struct {
Issue *Issue
Label *Label
OldMilestoneID int64
MilestoneID int64
AssigneeID int64
RemovedAssignee bool
OldTitle string
NewTitle string
CommitID int64
CommitSHA string
LineNum int64
Content string
Attachments []string // UUIDs of attachments
DependentIssueID int64
OldMilestoneID int64
MilestoneID int64
AssigneeID int64
RemovedAssignee bool
OldTitle string
NewTitle string
CommitID int64
CommitSHA string
LineNum int64
Content string
Attachments []string // UUIDs of attachments
}
// CreateComment creates comment of issue or commit.

137
models/issue_dependency.go Normal file
View File

@ -0,0 +1,137 @@
// Copyright 2018 The Gitea 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 models
import (
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
)
// IssueDependency represents an issue dependency
type IssueDependency struct {
ID int64 `xorm:"pk autoincr"`
UserID int64 `xorm:"NOT NULL"`
IssueID int64 `xorm:"UNIQUE(issue_dependency) NOT NULL"`
DependencyID int64 `xorm:"UNIQUE(issue_dependency) NOT NULL"`
CreatedUnix util.TimeStamp `xorm:"created"`
UpdatedUnix util.TimeStamp `xorm:"updated"`
}
// DependencyType Defines Dependency Type Constants
type DependencyType int
// Define Dependency Types
const (
DependencyTypeBlockedBy DependencyType = iota
DependencyTypeBlocking
)
// CreateIssueDependency creates a new dependency for an issue
func CreateIssueDependency(user *User, issue, dep *Issue) error {
sess := x.NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return err
}
// Check if it aleready exists
exists, err := issueDepExists(sess, issue.ID, dep.ID)
if err != nil {
return err
}
if exists {
return ErrDependencyExists{issue.ID, dep.ID}
}
// And if it would be circular
circular, err := issueDepExists(sess, dep.ID, issue.ID)
if err != nil {
return err
}
if circular {
return ErrCircularDependency{issue.ID, dep.ID}
}
if _, err := sess.Insert(&IssueDependency{
UserID: user.ID,
IssueID: issue.ID,
DependencyID: dep.ID,
}); err != nil {
return err
}
// Add comment referencing the new dependency
if err = createIssueDependencyComment(sess, user, issue, dep, true); err != nil {
return err
}
return sess.Commit()
}
// RemoveIssueDependency removes a dependency from an issue
func RemoveIssueDependency(user *User, issue *Issue, dep *Issue, depType DependencyType) (err error) {
sess := x.NewSession()
defer sess.Close()
if err = sess.Begin(); err != nil {
return err
}
var issueDepToDelete IssueDependency
switch depType {
case DependencyTypeBlockedBy:
issueDepToDelete = IssueDependency{IssueID: issue.ID, DependencyID: dep.ID}
case DependencyTypeBlocking:
issueDepToDelete = IssueDependency{IssueID: dep.ID, DependencyID: issue.ID}
default:
return ErrUnknownDependencyType{depType}
}
affected, err := sess.Delete(&issueDepToDelete)
if err != nil {
return err
}
// If we deleted nothing, the dependency did not exist
if affected <= 0 {
return ErrDependencyNotExists{issue.ID, dep.ID}
}
// Add comment referencing the removed dependency
if err = createIssueDependencyComment(sess, user, issue, dep, false); err != nil {
return err
}
return sess.Commit()
}
// Check if the dependency already exists
func issueDepExists(e Engine, issueID int64, depID int64) (bool, error) {
return e.Where("(issue_id = ? AND dependency_id = ?)", issueID, depID).Exist(&IssueDependency{})
}
// IssueNoDependenciesLeft checks if issue can be closed
func IssueNoDependenciesLeft(issue *Issue) (bool, error) {
exists, err := x.
Table("issue_dependency").
Select("issue.*").
Join("INNER", "issue", "issue.id = issue_dependency.dependency_id").
Where("issue_dependency.issue_id = ?", issue.ID).
And("issue.is_closed = ?", "0").
Exist(&Issue{})
return !exists, err
}
// IsDependenciesEnabled returns if dependecies are enabled and returns the default setting if not set.
func (repo *Repository) IsDependenciesEnabled() bool {
var u *RepoUnit
var err error
if u, err = repo.GetUnit(UnitTypeIssues); err != nil {
log.Trace("%s", err)
return setting.Service.DefaultEnableDependencies
}
return u.IssuesConfig().EnableDependencies
}

View File

@ -0,0 +1,57 @@
// Copyright 2018 The Gitea 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 models
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCreateIssueDependency(t *testing.T) {
// Prepare
assert.NoError(t, PrepareTestDatabase())
user1, err := GetUserByID(1)
assert.NoError(t, err)
issue1, err := GetIssueByID(1)
assert.NoError(t, err)
issue2, err := GetIssueByID(2)
assert.NoError(t, err)
// Create a dependency and check if it was successful
err = CreateIssueDependency(user1, issue1, issue2)
assert.NoError(t, err)
// Do it again to see if it will check if the dependency already exists
err = CreateIssueDependency(user1, issue1, issue2)
assert.Error(t, err)
assert.True(t, IsErrDependencyExists(err))
// Check for circular dependencies
err = CreateIssueDependency(user1, issue2, issue1)
assert.Error(t, err)
assert.True(t, IsErrCircularDependency(err))
_ = AssertExistsAndLoadBean(t, &Comment{Type: CommentTypeAddDependency, PosterID: user1.ID, IssueID: issue1.ID})
// Check if dependencies left is correct
left, err := IssueNoDependenciesLeft(issue1)
assert.NoError(t, err)
assert.False(t, left)
// Close #2 and check again
err = issue2.ChangeStatus(user1, issue2.Repo, true)
assert.NoError(t, err)
left, err = IssueNoDependenciesLeft(issue1)
assert.NoError(t, err)
assert.True(t, left)
// Test removing the dependency
err = RemoveIssueDependency(user1, issue1, issue2, DependencyTypeBlockedBy)
assert.NoError(t, err)
}

View File

@ -166,7 +166,7 @@ func (issues IssueList) loadAssignees(e Engine) error {
var assignees = make(map[int64][]*User, len(issues))
rows, err := e.Table("issue_assignees").
Join("INNER", "user", "`user`.id = `issue_assignees`.assignee_id").
Join("INNER", "`user`", "`user`.id = `issue_assignees`.assignee_id").
In("`issue_assignees`.issue_id", issues.getIssueIDs()).
Rows(new(AssigneeIssue))
if err != nil {

View File

@ -67,7 +67,7 @@ func getIssueWatchers(e Engine, issueID int64) (watches []*IssueWatch, err error
Where("`issue_watch`.issue_id = ?", issueID).
And("`user`.is_active = ?", true).
And("`user`.prohibit_login = ?", false).
Join("INNER", "user", "`user`.id = `issue_watch`.user_id").
Join("INNER", "`user`", "`user`.id = `issue_watch`.user_id").
Find(&watches)
return
}

View File

@ -192,6 +192,8 @@ var migrations = []Migration{
NewMigration("Reformat and remove incorrect topics", reformatAndRemoveIncorrectTopics),
// v69 -> v70
NewMigration("move team units to team_unit table", moveTeamUnitsToTeamUnitTable),
// v70 -> v71
NewMigration("add issue_dependencies", addIssueDependencies),
}
// Migrate database to current version

View File

@ -34,7 +34,7 @@ func releaseAddColumnIsTagAndSyncTags(x *xorm.Engine) error {
pageSize := models.RepositoryListDefaultPageSize
for {
repos := make([]*models.Repository, 0, pageSize)
if err := x.Table("repository").Asc("id").Limit(pageSize, offset).Find(&repos); err != nil {
if err := x.Table("repository").Cols("id", "name", "owner_id").Asc("id").Limit(pageSize, offset).Find(&repos); err != nil {
return fmt.Errorf("select repos [offset: %d]: %v", offset, err)
}
for _, repo := range repos {

View File

@ -120,6 +120,14 @@ func addMultipleAssignees(x *xorm.Engine) error {
}
}
// Commit and begin new transaction for dropping columns
if err := sess.Commit(); err != nil {
return err
}
if err := sess.Begin(); err != nil {
return err
}
if err := dropTableColumns(sess, "issue", "assignee_id"); err != nil {
return err
}

View File

@ -73,6 +73,14 @@ func moveTeamUnitsToTeamUnitTable(x *xorm.Engine) error {
}
}
// Commit and begin new transaction for dropping columns
if err := sess.Commit(); err != nil {
return err
}
if err := sess.Begin(); err != nil {
return err
}
if err := dropTableColumns(sess, "team", "unit_types"); err != nil {
return err
}

100
models/migrations/v70.go Normal file
View File

@ -0,0 +1,100 @@
// Copyright 2018 The Gitea 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 migrations
import (
"fmt"
"time"
"code.gitea.io/gitea/modules/setting"
"github.com/go-xorm/xorm"
)
func addIssueDependencies(x *xorm.Engine) (err error) {
type IssueDependency struct {
ID int64 `xorm:"pk autoincr"`
UserID int64 `xorm:"NOT NULL"`
IssueID int64 `xorm:"NOT NULL"`
DependencyID int64 `xorm:"NOT NULL"`
Created time.Time `xorm:"-"`
CreatedUnix int64 `xorm:"created"`
Updated time.Time `xorm:"-"`
UpdatedUnix int64 `xorm:"updated"`
}
if err = x.Sync(new(IssueDependency)); err != nil {
return fmt.Errorf("Error creating issue_dependency_table column definition: %v", err)
}
// Update Comment definition
// This (copied) struct does only contain fields used by xorm as the only use here is to update the database
// CommentType defines the comment type
type CommentType int
// TimeStamp defines a timestamp
type TimeStamp int64
type Comment struct {
ID int64 `xorm:"pk autoincr"`
Type CommentType
PosterID int64 `xorm:"INDEX"`
IssueID int64 `xorm:"INDEX"`
LabelID int64
OldMilestoneID int64
MilestoneID int64
OldAssigneeID int64
AssigneeID int64
OldTitle string
NewTitle string
DependentIssueID int64
CommitID int64
Line int64
Content string `xorm:"TEXT"`
CreatedUnix TimeStamp `xorm:"INDEX created"`
UpdatedUnix TimeStamp `xorm:"INDEX updated"`
// Reference issue in commit message
CommitSHA string `xorm:"VARCHAR(40)"`
}
if err = x.Sync(new(Comment)); err != nil {
return fmt.Errorf("Error updating issue_comment table column definition: %v", err)
}
// RepoUnit describes all units of a repository
type RepoUnit struct {
ID int64
RepoID int64 `xorm:"INDEX(s)"`
Type int `xorm:"INDEX(s)"`
Config map[string]interface{} `xorm:"JSON"`
CreatedUnix int64 `xorm:"INDEX CREATED"`
Created time.Time `xorm:"-"`
}
//Updating existing issue units
units := make([]*RepoUnit, 0, 100)
err = x.Where("`type` = ?", V16UnitTypeIssues).Find(&units)
if err != nil {
return fmt.Errorf("Query repo units: %v", err)
}
for _, unit := range units {
if unit.Config == nil {
unit.Config = make(map[string]interface{})
}
if _, ok := unit.Config["EnableDependencies"]; !ok {
unit.Config["EnableDependencies"] = setting.Service.DefaultEnableDependencies
}
if _, err := x.ID(unit.ID).Cols("config").Update(unit); err != nil {
return err
}
}
return err
}

View File

@ -118,6 +118,7 @@ func init() {
new(TrackedTime),
new(DeletedBranch),
new(RepoIndexerStatus),
new(IssueDependency),
new(LFSLock),
new(Reaction),
new(IssueAssignees),

View File

@ -1,18 +0,0 @@
// +build tidb
// Copyright 2015 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 models
import (
_ "github.com/go-xorm/tidb"
"github.com/ngaut/log"
_ "github.com/pingcap/tidb"
)
func init() {
EnableTiDB = true
log.SetLevelByString("error")
}

View File

@ -383,7 +383,7 @@ func GetOwnedOrgsByUserIDDesc(userID int64, desc string) ([]*User, error) {
func GetOrgUsersByUserID(uid int64, all bool) ([]*OrgUser, error) {
ous := make([]*OrgUser, 0, 10)
sess := x.
Join("LEFT", "user", "`org_user`.org_id=`user`.id").
Join("LEFT", "`user`", "`org_user`.org_id=`user`.id").
Where("`org_user`.uid=?", uid)
if !all {
// Only show public organizations
@ -575,7 +575,7 @@ func (org *User) getUserTeams(e Engine, userID int64, cols ...string) ([]*Team,
return teams, e.
Where("`team_user`.org_id = ?", org.ID).
Join("INNER", "team_user", "`team_user`.team_id = team.id").
Join("INNER", "user", "`user`.id=team_user.uid").
Join("INNER", "`user`", "`user`.id=team_user.uid").
And("`team_user`.uid = ?", userID).
Asc("`user`.name").
Cols(cols...).

View File

@ -781,7 +781,7 @@ var (
// DescriptionHTML does special handles to description and return HTML string.
func (repo *Repository) DescriptionHTML() template.HTML {
sanitize := func(s string) string {
return fmt.Sprintf(`<a href="%[1]s" target="_blank" rel="noopener">%[1]s</a>`, s)
return fmt.Sprintf(`<a href="%[1]s" target="_blank" rel="noopener noreferrer">%[1]s</a>`, s)
}
return template.HTML(descPattern.ReplaceAllStringFunc(markup.Sanitize(repo.Description), sanitize))
}
@ -1345,7 +1345,17 @@ func createRepository(e *xorm.Session, doer, u *User, repo *Repository) (err err
units = append(units, RepoUnit{
RepoID: repo.ID,
Type: tp,
Config: &IssuesConfig{EnableTimetracker: setting.Service.DefaultEnableTimetracking, AllowOnlyContributorsToTrackTime: setting.Service.DefaultAllowOnlyContributorsToTrackTime},
Config: &IssuesConfig{
EnableTimetracker: setting.Service.DefaultEnableTimetracking,
AllowOnlyContributorsToTrackTime: setting.Service.DefaultAllowOnlyContributorsToTrackTime,
EnableDependencies: setting.Service.DefaultEnableDependencies,
},
})
} else if tp == UnitTypePullRequests {
units = append(units, RepoUnit{
RepoID: repo.ID,
Type: tp,
Config: &PullRequestsConfig{AllowMerge: true, AllowRebase: true, AllowSquash: true},
})
} else {
units = append(units, RepoUnit{
@ -1948,7 +1958,7 @@ func DeleteRepository(doer *User, uid, repoID int64) error {
func GetRepositoryByOwnerAndName(ownerName, repoName string) (*Repository, error) {
var repo Repository
has, err := x.Select("repository.*").
Join("INNER", "user", "`user`.id = repository.owner_id").
Join("INNER", "`user`", "`user`.id = repository.owner_id").
Where("repository.lower_name = ?", strings.ToLower(repoName)).
And("`user`.lower_name = ?", strings.ToLower(ownerName)).
Get(&repo)

View File

@ -73,6 +73,7 @@ func (cfg *ExternalTrackerConfig) ToDB() ([]byte, error) {
type IssuesConfig struct {
EnableTimetracker bool
AllowOnlyContributorsToTrackTime bool
EnableDependencies bool
}
// FromDB fills up a IssuesConfig from serialized format.
@ -165,7 +166,6 @@ func (r *RepoUnit) IssuesConfig() *IssuesConfig {
func (r *RepoUnit) ExternalTrackerConfig() *ExternalTrackerConfig {
return r.Config.(*ExternalTrackerConfig)
}
func getUnitsByRepoID(e Engine, repoID int64) (units []*RepoUnit, err error) {
return units, e.Where("repo_id = ?", repoID).Find(&units)
}

View File

@ -54,7 +54,7 @@ func getWatchers(e Engine, repoID int64) ([]*Watch, error) {
return watches, e.Where("`watch`.repo_id=?", repoID).
And("`user`.is_active=?", true).
And("`user`.prohibit_login=?", false).
Join("INNER", "user", "`user`.id = `watch`.user_id").
Join("INNER", "`user`", "`user`.id = `watch`.user_id").
Find(&watches)
}

View File

@ -374,9 +374,9 @@ func (u *User) GetFollowers(page int) ([]*User, error) {
Limit(ItemsPerPage, (page-1)*ItemsPerPage).
Where("follow.follow_id=?", u.ID)
if setting.UsePostgreSQL {
sess = sess.Join("LEFT", "follow", `"user".id=follow.user_id`)
sess = sess.Join("LEFT", "follow", "`user`.id=follow.user_id")
} else {
sess = sess.Join("LEFT", "follow", "user.id=follow.user_id")
sess = sess.Join("LEFT", "follow", "`user`.id=follow.user_id")
}
return users, sess.Find(&users)
}
@ -393,9 +393,9 @@ func (u *User) GetFollowing(page int) ([]*User, error) {
Limit(ItemsPerPage, (page-1)*ItemsPerPage).
Where("follow.user_id=?", u.ID)
if setting.UsePostgreSQL {
sess = sess.Join("LEFT", "follow", `"user".id=follow.follow_id`)
sess = sess.Join("LEFT", "follow", "`user`.id=follow.follow_id")
} else {
sess = sess.Join("LEFT", "follow", "user.id=follow.follow_id")
sess = sess.Join("LEFT", "follow", "`user`.id=follow.follow_id")
}
return users, sess.Find(&users)
}
@ -956,7 +956,7 @@ func deleteUser(e *xorm.Session, u *User) error {
Where("watch.user_id = ?", u.ID).Find(&watchedRepoIDs); err != nil {
return fmt.Errorf("get all watches: %v", err)
}
if _, err = e.Decr("num_watches").In("id", watchedRepoIDs).Update(new(Repository)); err != nil {
if _, err = e.Decr("num_watches").In("id", watchedRepoIDs).NoAutoTime().Update(new(Repository)); err != nil {
return fmt.Errorf("decrease repository num_watches: %v", err)
}
// ***** END: Watch *****
@ -966,7 +966,7 @@ func deleteUser(e *xorm.Session, u *User) error {
if err = e.Table("star").Cols("star.repo_id").
Where("star.uid = ?", u.ID).Find(&starredRepoIDs); err != nil {
return fmt.Errorf("get all stars: %v", err)
} else if _, err = e.Decr("num_stars").In("id", starredRepoIDs).Update(new(Repository)); err != nil {
} else if _, err = e.Decr("num_stars").In("id", starredRepoIDs).NoAutoTime().Update(new(Repository)); err != nil {
return fmt.Errorf("decrease repository num_stars: %v", err)
}
// ***** END: Star *****

View File

@ -113,6 +113,7 @@ type RepoSettingForm struct {
PullsAllowSquash bool
EnableTimetracker bool
AllowOnlyContributorsToTrackTime bool
EnableIssueDependencies bool
// Admin settings
EnableHealthCheck bool

View File

@ -72,10 +72,11 @@ func (f *InstallForm) Validate(ctx *macaron.Context, errs binding.Errors) bindin
// RegisterForm form for registering
type RegisterForm struct {
UserName string `binding:"Required;AlphaDashDot;MaxSize(35)"`
Email string `binding:"Required;Email;MaxSize(254)"`
Password string `binding:"Required;MaxSize(255)"`
Retype string
UserName string `binding:"Required;AlphaDashDot;MaxSize(35)"`
Email string `binding:"Required;Email;MaxSize(254)"`
Password string `binding:"Required;MaxSize(255)"`
Retype string
GRecaptchaResponse string `form:"g-recaptcha-response"`
}
// Validate valideates the fields

View File

@ -22,8 +22,9 @@ func (f *SignInOpenIDForm) Validate(ctx *macaron.Context, errs binding.Errors) b
// SignUpOpenIDForm form for signin up with OpenID
type SignUpOpenIDForm struct {
UserName string `binding:"Required;AlphaDashDot;MaxSize(35)"`
Email string `binding:"Required;Email;MaxSize(254)"`
UserName string `binding:"Required;AlphaDashDot;MaxSize(35)"`
Email string `binding:"Required;Email;MaxSize(254)"`
GRecaptchaResponse string `form:"g-recaptcha-response"`
}
// Validate valideates the fields

View File

@ -104,6 +104,11 @@ func (r *Repository) CanUseTimetracker(issue *models.Issue, user *models.User) b
r.IsWriter() || issue.IsPoster(user.ID) || isAssigned)
}
// CanCreateIssueDependencies returns whether or not a user can create dependencies.
func (r *Repository) CanCreateIssueDependencies(user *models.User) bool {
return r.Repository.IsDependenciesEnabled() && r.IsWriter()
}
// GetCommitsCount returns cached commit count for current view
func (r *Repository) GetCommitsCount() (int64, error) {
var contextName string

View File

@ -85,9 +85,12 @@ type link struct {
var oidRegExp = regexp.MustCompile(`^[A-Fa-f0-9]+$`)
func isOidValid(oid string) bool {
return oidRegExp.MatchString(oid)
}
// ObjectOidHandler is the main request routing entry point into LFS server functions
func ObjectOidHandler(ctx *context.Context) {
if !setting.LFS.StartServer {
writeStatus(ctx, 404)
return
@ -110,6 +113,11 @@ func ObjectOidHandler(ctx *context.Context) {
}
func getAuthenticatedRepoAndMeta(ctx *context.Context, rv *RequestVars, requireWrite bool) (*models.LFSMetaObject, *models.Repository) {
if !isOidValid(rv.Oid) {
writeStatus(ctx, 404)
return nil, nil
}
repository, err := models.GetRepositoryByOwnerAndName(rv.User, rv.Repo)
if err != nil {
log.Debug("Could not find repository: %s/%s - %s", rv.User, rv.Repo, err)
@ -222,7 +230,7 @@ func PostHandler(ctx *context.Context) {
return
}
if !oidRegExp.MatchString(rv.Oid) {
if !isOidValid(rv.Oid) {
writeStatus(ctx, 404)
return
}
@ -249,7 +257,6 @@ func PostHandler(ctx *context.Context) {
// BatchHandler provides the batch api
func BatchHandler(ctx *context.Context) {
if !setting.LFS.StartServer {
writeStatus(ctx, 404)
return
@ -266,6 +273,10 @@ func BatchHandler(ctx *context.Context) {
// Create a response object
for _, object := range bv.Objects {
if !isOidValid(object.Oid) {
continue
}
repository, err := models.GetRepositoryByOwnerAndName(object.User, object.Repo)
if err != nil {
@ -292,12 +303,10 @@ func BatchHandler(ctx *context.Context) {
continue
}
if oidRegExp.MatchString(object.Oid) {
// Object is not found
meta, err = models.NewLFSMetaObject(&models.LFSMetaObject{Oid: object.Oid, Size: object.Size, RepositoryID: repository.ID})
if err == nil {
responseObjects = append(responseObjects, Represent(object, meta, meta.Existing, !contentStore.Exists(meta)))
}
// Object is not found
meta, err = models.NewLFSMetaObject(&models.LFSMetaObject{Oid: object.Oid, Size: object.Size, RepositoryID: repository.ID})
if err == nil {
responseObjects = append(responseObjects, Represent(object, meta, meta.Existing, !contentStore.Exists(meta)))
}
}

58
modules/markup/csv/csv.go Normal file
View File

@ -0,0 +1,58 @@
// Copyright 2018 The Gitea 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 markup
import (
"bytes"
"encoding/csv"
"html"
"io"
"code.gitea.io/gitea/modules/markup"
)
func init() {
markup.RegisterParser(Parser{})
}
// Parser implements markup.Parser for orgmode
type Parser struct {
}
// Name implements markup.Parser
func (Parser) Name() string {
return "csv"
}
// Extensions implements markup.Parser
func (Parser) Extensions() []string {
return []string{".csv"}
}
// Render implements markup.Parser
func (Parser) Render(rawBytes []byte, urlPrefix string, metas map[string]string, isWiki bool) []byte {
rd := csv.NewReader(bytes.NewReader(rawBytes))
var tmpBlock bytes.Buffer
tmpBlock.WriteString(`<table class="table">`)
for {
fields, err := rd.Read()
if err == io.EOF {
break
}
if err != nil {
continue
}
tmpBlock.WriteString("<tr>")
for _, field := range fields {
tmpBlock.WriteString("<td>")
tmpBlock.WriteString(html.EscapeString(field))
tmpBlock.WriteString("</td>")
}
tmpBlock.WriteString("<tr>")
}
tmpBlock.WriteString("</table>")
return tmpBlock.Bytes()
}

View File

@ -0,0 +1,25 @@
// Copyright 2018 The Gitea 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 markup
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestRenderCSV(t *testing.T) {
var parser Parser
var kases = map[string]string{
"a": "<table class=\"table\"><tr><td>a</td><tr></table>",
"1,2": "<table class=\"table\"><tr><td>1</td><td>2</td><tr></table>",
"<br/>": "<table class=\"table\"><tr><td>&lt;br/&gt;</td><tr></table>",
}
for k, v := range kases {
res := parser.Render([]byte(k), "", nil, false)
assert.EqualValues(t, v, string(res))
}
}

View File

@ -101,7 +101,7 @@ var (
func (r *Renderer) Image(out *bytes.Buffer, link []byte, title []byte, alt []byte) {
prefix := r.URLPrefix
if r.IsWiki {
prefix = util.URLJoin(prefix, "wiki", "src")
prefix = util.URLJoin(prefix, "wiki", "raw")
}
prefix = strings.Replace(prefix, "/src/", "/raw/", 1)
if len(link) > 0 {

View File

@ -0,0 +1,47 @@
// Copyright 2018 The Gitea 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 recaptcha
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"time"
"code.gitea.io/gitea/modules/setting"
)
// Response is the structure of JSON returned from API
type Response struct {
Success bool `json:"success"`
ChallengeTS time.Time `json:"challenge_ts"`
Hostname string `json:"hostname"`
ErrorCodes []string `json:"error-codes"`
}
const apiURL = "https://www.google.com/recaptcha/api/siteverify"
// Verify calls Google Recaptcha API to verify token
func Verify(response string) (bool, error) {
resp, err := http.PostForm(apiURL,
url.Values{"secret": {setting.Service.RecaptchaSecret}, "response": {response}})
if err != nil {
return false, fmt.Errorf("Failed to send CAPTCHA response: %s", err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return false, fmt.Errorf("Failed to read CAPTCHA response: %s", err)
}
var jsonResponse Response
err = json.Unmarshal(body, &jsonResponse)
if err != nil {
return false, fmt.Errorf("Failed to parse CAPTCHA response: %s", err)
}
return jsonResponse.Success, nil
}

View File

@ -75,6 +75,12 @@ const (
RepoCreatingPublic = "public"
)
// enumerates all the types of captchas
const (
ImageCaptcha = "image"
ReCaptcha = "recaptcha"
)
// settings
var (
// AppVer settings
@ -270,10 +276,12 @@ var (
IssuePagingNum int
RepoSearchPagingNum int
FeedMaxCommitNum int
GraphMaxCommitNum int
ReactionMaxUserNum int
ThemeColorMetaTag string
MaxDisplayFileSize int64
ShowUserEmail bool
DefaultTheme string
Admin struct {
UserPagingNum int
@ -294,9 +302,11 @@ var (
IssuePagingNum: 10,
RepoSearchPagingNum: 10,
FeedMaxCommitNum: 5,
GraphMaxCommitNum: 100,
ReactionMaxUserNum: 10,
ThemeColorMetaTag: `#6cc644`,
MaxDisplayFileSize: 8388608,
DefaultTheme: `gitea`,
Admin: struct {
UserPagingNum int
RepoPagingNum int
@ -1165,10 +1175,14 @@ var Service struct {
EnableReverseProxyAuth bool
EnableReverseProxyAutoRegister bool
EnableCaptcha bool
CaptchaType string
RecaptchaSecret string
RecaptchaSitekey string
DefaultKeepEmailPrivate bool
DefaultAllowCreateOrganization bool
EnableTimetracking bool
DefaultEnableTimetracking bool
DefaultEnableDependencies bool
DefaultAllowOnlyContributorsToTrackTime bool
NoReplyAddress string
@ -1189,13 +1203,17 @@ func newService() {
Service.RequireSignInView = sec.Key("REQUIRE_SIGNIN_VIEW").MustBool()
Service.EnableReverseProxyAuth = sec.Key("ENABLE_REVERSE_PROXY_AUTHENTICATION").MustBool()
Service.EnableReverseProxyAutoRegister = sec.Key("ENABLE_REVERSE_PROXY_AUTO_REGISTRATION").MustBool()
Service.EnableCaptcha = sec.Key("ENABLE_CAPTCHA").MustBool()
Service.EnableCaptcha = sec.Key("ENABLE_CAPTCHA").MustBool(false)
Service.CaptchaType = sec.Key("CAPTCHA_TYPE").MustString(ImageCaptcha)
Service.RecaptchaSecret = sec.Key("RECAPTCHA_SECRET").MustString("")
Service.RecaptchaSitekey = sec.Key("RECAPTCHA_SITEKEY").MustString("")
Service.DefaultKeepEmailPrivate = sec.Key("DEFAULT_KEEP_EMAIL_PRIVATE").MustBool()
Service.DefaultAllowCreateOrganization = sec.Key("DEFAULT_ALLOW_CREATE_ORGANIZATION").MustBool(true)
Service.EnableTimetracking = sec.Key("ENABLE_TIMETRACKING").MustBool(true)
if Service.EnableTimetracking {
Service.DefaultEnableTimetracking = sec.Key("DEFAULT_ENABLE_TIMETRACKING").MustBool(true)
}
Service.DefaultEnableDependencies = sec.Key("DEFAULT_ENABLE_DEPENDENCIES").MustBool(true)
Service.DefaultAllowOnlyContributorsToTrackTime = sec.Key("DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME").MustBool(true)
Service.NoReplyAddress = sec.Key("NO_REPLY_ADDRESS").MustString("noreply.example.org")

View File

@ -186,6 +186,9 @@ func NewFuncMap() []template.FuncMap {
"ParseDeadline": func(deadline string) []string {
return strings.Split(deadline, "|")
},
"DefaultTheme": func() string {
return setting.UI.DefaultTheme
},
}}
}

View File

@ -56,6 +56,7 @@ Morten Sørensen <klim8d AT gmail DOT com>
Muhammad Fawwaz Orabi <mfawwaz93 AT gmail DOT com>
Nakao Takamasa <at.mattenn AT gmail DOT com>
Natan Albuquerque <natanalbuquerque5 AT gmail DOT com>
Niclas Kroon <niclas DOT kroon AT gmail DOT com>
Odilon Junior <odilon DOT junior93 AT gmail DOT com>
Pablo Saavedra <psaavedra AT igalia DOT com>
Richard Bukovansky <richard DOT bukovansky @ gmail DOT com>

View File

@ -569,7 +569,6 @@ total=Общо: %d
dashboard.operation_name=Име на операцията
dashboard.operation_switch=Превключи
dashboard.operation_run=Изпълни
dashboard.delete_inactivate_accounts=Изтрий всички неактивни профили
dashboard.server_uptime=Операционно време
dashboard.current_goroutine=Текущи Goroutines
dashboard.current_memory_usage=Текущо използвана памет

View File

@ -508,7 +508,6 @@ total=Celkem: %d
dashboard.operation_name=Název operace
dashboard.operation_switch=Přepnout
dashboard.operation_run=Spustit
dashboard.delete_inactivate_accounts=Smazat všechny neaktivní účty
dashboard.server_uptime=Doba provozu serveru
dashboard.current_goroutine=Aktuální Goroutines
dashboard.current_memory_usage=Aktuální využití paměti

View File

@ -32,16 +32,16 @@ twofa_scratch=Zwei-Faktor-Einmalpasswort
passcode=PIN
u2f_insert_key=Hardware-Sicherheitsschlüssel einstecken
u2f_sign_in=Drücke den Knopf auf deinem Sicherheitsschlüssel. Wenn deiner keinen Knopf hat, stecke ihn erneut ein.
u2f_sign_in=Drücke den Knopf auf deinem Sicherheitsschlüssel. Wenn dein Sicherheitsschlüssel keinen Knopf hat, stecke ihn erneut ein.
u2f_press_button=Drücke den Knopf auf deinem Sicherheitsschlüssel…
u2f_use_twofa=Zwei-Faktor-Authentifizierung via Handy verwenden
u2f_error=Wir können deinen Hardware-Sicherheitsschlüssel nicht lesen!
u2f_unsupported_browser=Dein Browser unterstützt keine U2F-Geräte. Bitte benutze einen anderen Browser.
u2f_error=Dein Sicherheitsschlüssel konnte nicht gelesen werden.
u2f_unsupported_browser=Dein Browser unterstützt keine U2F-Sicherheitsschlüssel.
u2f_error_1=Ein unbekannter Fehler ist aufgetreten. Bitte versuche es erneut.
u2f_error_2=Stelle sicher, dass du einen verschlüsselte Verbindung (https://) benutzt und die richtige URL eingeben hast.
u2f_error_3=Der Server kann deine Anfrage nicht bearbeiten.
u2f_error_4=Dieser Sicherheitsschlüssel ist nicht berechtigt. Wenn du versuchst, einen neuen Sicherheitsschlüssel zu registrieren, stelle bitte sicher, dass du ihn nicht bereits registriert hast.
u2f_error_5=Das Zeitlimit wurde erreicht bevor dein Schlüssel gelesen werden konnte. Bitte lade die Seite neu.
u2f_error_2=Bitte stell sicher, dass die korrekte verschlüsselte URL benutzt wird (https://).
u2f_error_3=Der Server konnte deine Anfrage nicht bearbeiten.
u2f_error_4=Für diese Anfrage ist der Sicherheitsschlüssel nicht erlaubt. Bitte stell sicher, dass er nicht bereits registriert ist.
u2f_error_5=Das Zeitlimit wurde erreicht, bevor dein Schlüssel gelesen werden konnte. Bitte lade die Seite erneut.
u2f_reload=Neu laden
repository=Repository
@ -75,7 +75,7 @@ cancel=Abbrechen
[install]
install=Installation
title=Erstkonfiguration
docker_helper=Wenn du Gitea in einem Docker-Container nutzt, lies bitte die <a target="_blank" rel="noopener" href="%s">Dokumentation</a>, bevor du irgendwelche Einstellungen veränderst.
docker_helper=Wenn du Gitea in einem Docker-Container nutzt, lies bitte die <a target="_blank" rel="noopener noreferrer" href="%s">Dokumentation</a>, bevor du irgendwelche Einstellungen veränderst.
requite_db_desc=Gitea benötigt MySQL, PostgreSQL, MSSQL, SQLite3 oder TiDB.
db_title=Datenbankeinstellungen
db_type=Datenbanktyp
@ -130,7 +130,7 @@ federated_avatar_lookup=Föderierte Profilbilder einschalten
federated_avatar_lookup_popup=Föderierte Profilbilder via Libravatar aktivieren.
disable_registration=Registrierung deaktivieren
disable_registration_popup=Registrierung neuer Benutzer deaktivieren. Nur Administratoren werden neue Benutzerkonten anlegen können.
allow_only_external_registration_popup=Registrierung nur über externe Services aktiveren.
allow_only_external_registration_popup=Registrierung nur über externe Services erlauben
openid_signin=OpenID-Anmeldung aktivieren
openid_signin_popup=Benutzeranmeldung via OpenID aktivieren.
openid_signup=OpenID-Selbstregistrierung aktivieren
@ -463,13 +463,13 @@ then_enter_passcode=Und gebe dann die angezeigte PIN der Anwendung ein:
passcode_invalid=Die PIN ist falsch. Probiere es erneut.
twofa_enrolled=Die Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Bewahre dein Einmalpasswort (%s) an einem sicheren Ort auf, da es nicht wieder angezeigt werden wird.
u2f_desc=Hardware-Sicherheitsschlüssel sind Geräte, die kryptografische Schlüssel beinhalten. Diese können für die Zwei-Faktor-Authentifizierung verwendet werden. Der Sicherheitsschlüssel muss den Standard <a href="https://fidoalliance.org/">FIDO U2F</a> unterstützen.
u2f_require_twofa=Du musst die Zwei-Faktor-Authentifizierung aktivieren, um Hardware-Sicherheitsschlüssel nutzen zu können.
u2f_desc=Sicherheitsschlüssel sind Geräte, die kryptografische Schlüssel beeinhalten. Diese können für die Zwei-Faktor-Authentifizierung verwendet werden. Der Sicherheitsschlüssel muss den Standard <a href="https://fidoalliance.org/">FIDO U2F</a> unterstützen.
u2f_require_twofa=Du musst die Zwei-Faktor-Authentifizierung für deinen Account aktivieren, um Sicherheitsschlüssel benutzen zu können.
u2f_register_key=Sicherheitsschlüssel hinzufügen
u2f_nickname=Nickname
u2f_press_button=Drücke den Knopf auf deinem Sicherheitsschlüssel, um diesen zu registrieren.
u2f_delete_key=Sicherheitsschlüssel entfernen
u2f_delete_key_desc=Wenn du den Sicherheitsschlüssel entfernst, kannst du dich nicht mehr mit diesem einloggen. Bist du sicher?
u2f_delete_key_desc=Wenn du einen Sicherheitsschlüssel entfernst, kannst du dich nicht mehr mit ihm anmelden. Fortfahren?
manage_account_links=Verknüpfte Accounts verwalten
manage_account_links_desc=Diese externen Accounts sind mit deinem Gitea-Account verknüpft.
@ -492,13 +492,13 @@ owner=Besitzer
repo_name=Repository-Name
repo_name_helper=Ein guter Repository-Name besteht normalerweise aus kurzen, unvergesslichen und einzigartigen Schlagwörtern.
visibility=Sichtbarkeit
visiblity_helper=privates Repository
visiblity_helper_forced=Auf dieser Gitea-Instanz können nur private Repositories angelegt werden.
visiblity_fork_helper=(Eine Änderung dieses Wertes wirkt sich auf alle Forks aus)
clone_helper=Brauchst du Hilfe beim Klonen? Öffne die <a target="_blank" rel="noopener" href="%s">Hilfe</a>.
visibility_helper=Markiere das Repository als privat
visibility_helper_forced=Auf dieser Gitea-Instanz können nur private Repositories angelegt werden.
visibility_fork_helper=(Eine Änderung dieses Wertes wirkt sich auf alle Forks aus)
clone_helper=Benötigst du Hilfe beim Klonen? Öffne die <a target="_blank" rel="noopener noreferrer" href="%s">Hilfe</a>.
fork_repo=Repository forken
fork_from=Fork von
fork_visiblity_helper=Die Sichtbarkeit einer geforkten Repository kann nicht geändert werden.
fork_visibility_helper=Die Sichtbarkeit eines geforkten Repositorys kann nicht geändert werden.
repo_desc=Beschreibung
repo_lang=Sprache
repo_gitignore_helper=Wähle eine .gitignore-Vorlage aus.
@ -613,7 +613,7 @@ editor.directory_is_a_file=Der Verzeichnisname „%s“ wird bereits als Dateina
editor.file_is_a_symlink='%s' ist ein symolischer Link. Symbolische Links können mit dem Web Editor nicht bearbeitet werden.
editor.filename_is_a_directory=Der Dateiname „%s“ wird bereits als Verzeichnisname in diesem Repository verwendet.
editor.file_editing_no_longer_exists=Die bearbeitete Datei „%s“ existiert nicht mehr in diesem Repository.
editor.file_changed_while_editing=Der Inhalt der Datei hat sich seit dem Beginn der Bearbeitung geändert. <a target="_blank" rel="noopener" href="%s">Hier klicken</a>, um die Änderungen anzusehen, oder <strong>Änderungen erneut comitten</strong>, um sie zu überschreiben.
editor.file_changed_while_editing=Der Inhalt der Datei hat sich seit dem Beginn der Bearbeitung geändert. <a target="_blank" rel="noopener noreferrer" href="%s">Hier klicken</a>, um die Änderungen anzusehen, oder <strong>Änderungen erneut comitten</strong>, um sie zu überschreiben.
editor.file_already_exists=Eine Datei mit dem Namen „%s“ ist bereits in diesem Repository vorhanden.
editor.no_changes_to_show=Keine Änderungen vorhanden.
editor.fail_to_update_file=Fehler beim Ändern/Erstellen der Datei „%s“. Fehler: %v
@ -650,7 +650,7 @@ issues.new.open_milestone=Offene Meilensteine
issues.new.closed_milestone=Geschlossene Meilensteine
issues.new.assignees=Zuständig
issues.new.clear_assignees=Zuständige entfernen
issues.new.no_assignees=Niemand zugewiesen
issues.new.no_assignees=Niemand zuständig
issues.no_ref=Keine Branch/Tag angegeben
issues.create=Issue erstellen
issues.new_label=Neues Label
@ -669,7 +669,7 @@ issues.change_milestone_at=`hat den Meilenstein %[3]s von <b>%[1]s</b> zu <b>%[2
issues.remove_milestone_at=`hat diesen Issue %[2]s vom <b>%[1]s</b> Meilenstein entfernt`
issues.deleted_milestone=`(gelöscht)`
issues.self_assign_at=`hat sich das Issue %s selbst zugewiesen`
issues.add_assignee_at=`wurde %[1]s zugewiesen von <b>%[2]s</b>`
issues.add_assignee_at=`wurde von <b>%s</b> %s zugewiesen`
issues.remove_assignee_at=`hat seine Zuweisung %s entfernt`
issues.change_title_at=`Titel von <b>%s</b> nach <b>%s</b> %s geändert`
issues.delete_branch_at=`löschte die Branch <b>%s</b> %s`
@ -759,7 +759,7 @@ issues.stop_tracking_history=hat die Zeiterfassung %s angehalten
issues.add_time=Zeit manuell hinzufügen
issues.add_time_short=Zeit hinzufügen
issues.add_time_cancel=Abbrechen
issues.add_time_history=hat %s gearbeitete Zeit hinzugefügt
issues.add_time_history=`hat %s gearbeitete Zeit hinzugefügt`
issues.add_time_hours=Stunden
issues.add_time_minutes=Minuten
issues.add_time_sum_to_small=Es wurde keine Zeit eingegeben.
@ -781,6 +781,33 @@ issues.due_date_added=hat %[2]s das Fälligkeitsdatum %[1]s hinzugefügt
issues.due_date_modified=hat %[3]s das Fälligkeitsdatum von %[2]s zu %[1]s geändert
issues.due_date_remove=hat %[2]s das Fälligkeitsdatum %[1]s entfernt
issues.due_date_overdue=Überfällig
issues.due_date_invalid=Das Fälligkeitsdatum ist ungültig oder außerhalb des zulässigen Bereichs. Bitte verwende das Format „jjjj-mm-tt“.
issues.dependency.title=Abhängigkeiten
issues.dependency.issue_no_dependencies=Dieses Issue hat momentan keine Abhängigkeiten.
issues.dependency.pr_no_dependencies=Dieser Pull-Request hat momentan keine Abhängigkeiten.
issues.dependency.add=Abhängigkeit hinzufügen…
issues.dependency.cancel=Abbrechen
issues.dependency.remove=Entfernen
issues.dependency.added_dependency=`<a href="%[1]s">%[2]s</a> hat %[3]s eine neue Abhängigkeit hinzugefügt`
issues.dependency.removed_dependency=`<a href="%[1]s">%[2]s</a> hat %[3]s eine Abhängigkeit entfernt`
issues.dependency.issue_closing_blockedby=Das Schließen dieses Pull-Requests wird von den folgenden Issues blockiert
issues.dependency.pr_closing_blockedby=Das Schließen dieses Issues wird von den folgenden Issues blockiert
issues.dependency.issue_close_blocks=Dieses Issue blockiert die Schließung der folgenden Issues
issues.dependency.pr_close_blocks=Dieser Pull-Request blockiert die Schließung der folgenden Issues
issues.dependency.issue_close_blocked=Du musst alle Issues, die dieses Issue blockieren, schließen, bevor du es schließen kannst.
issues.dependency.pr_close_blocked=Du musst alle Issues, die diesen Pull-Request blockieren, schließen, bevor du ihn mergen kannst.
issues.dependency.blocks_short=Blockiert
issues.dependency.blocked_by_short=Abhängig von
issues.dependency.remove_header=Abhängigkeit löschen
issues.dependency.issue_remove_text=Dies entfernt die Abhängigkeit von diesem Issue. Fortfahren?
issues.dependency.pr_remove_text=Dies entfernt die Abhängigkeit von diesem Pull-Request. Fortfahren?
issues.dependency.setting=Abhängigkeiten für Issues und Pull-Requests aktivieren
issues.dependency.add_error_same_issue=Du kannst ein Issue nicht von sich selbst abhängig machen.
issues.dependency.add_error_dep_issue_not_exist=Abhängiges Issue existiert nicht.
issues.dependency.add_error_dep_not_exist=Abhängigkeit existiert nicht.
issues.dependency.add_error_dep_exists=Abhängigkeit existiert bereits.
issues.dependency.add_error_cannot_create_circular=Du kannst keine Abhängigkeit erstellen, bei welcher sich zwei Issues gegenseitig blockieren.
issues.dependency.add_error_dep_not_same_repo=Beide Issues müssen sich im selben Repository befinden.
pulls.desc=Merge-Requests und Code-Reviews aktivieren.
pulls.new=Neuer Pull-Request
@ -994,7 +1021,7 @@ settings.search_user_placeholder=Benutzer suchen…
settings.org_not_allowed_to_be_collaborator=Organisationen können nicht als Mitarbeiter hinzugefügt werden.
settings.user_is_org_member=Der Benutzer ist ein Organisationsmitglied und kann nicht als Mitarbeiter hinzugefügt werden.
settings.add_webhook=Webhook hinzufügen
settings.hooks_desc=Webhooks senden bei bestimmten Gitea-Events automatisch „HTTP POST“-Anfragen an einen Server. Lies mehr in unserer <a target="_blank" rel="noopener" href="%s">Anleitung zu Webhooks (auf Englisch)</a>.
settings.hooks_desc=Webhooks senden bei bestimmten Gitea-Events automatisch „HTTP POST“-Anfragen an einen Server. Lies mehr in unserer <a target="_blank" rel="noopener noreferrer" href="%s">Anleitung zu Webhooks (auf Englisch)</a>.
settings.webhook_deletion=Webhook löschen
settings.webhook_deletion_desc=Das Entfernen eines Webhooks löscht seine Einstellungen und Zustellungsverlauf. Fortfahren?
settings.webhook_deletion_success=Webhook wurde entfernt.
@ -1011,7 +1038,7 @@ settings.githook_edit_desc=Wenn ein Hook nicht aktiv ist, wird der Standardinhal
settings.githook_name=Hook-Name
settings.githook_content=Hook-Inhalt
settings.update_githook=Hook aktualisieren
settings.add_webhook_desc=Gitea sendet einen <code>POST</code>-Request mit festgelegtem Content-Type an die Ziel-URL. Mehr Informationen findest du in der <a target="_blank" rel="noopener" href="%s">Anleitung zu Webhooks (Englisch)</a>.
settings.add_webhook_desc=Gitea sendet einen <code>POST</code>-Request mit festgelegtem Content-Type an die Ziel-URL. Mehr Informationen findest du in der <a target="_blank" rel="noopener noreferrer" href="%s">Anleitung zu Webhooks (Englisch)</a>.
settings.payload_url=Ziel-URL
settings.content_type=POST-Content-Type
settings.secret=Secret
@ -1097,6 +1124,7 @@ settings.protected_branch_deletion_desc=Wenn du den Branch-Schutz deaktivierst,
settings.default_branch_desc=Wähle einen Standardbranch für Pull-Requests und Code-Commits:
settings.choose_branch=Wähle einen Branch …
settings.no_protected_branch=Es gibt keine geschützten Branches.
settings.edit_protected_branch=Bearbeiten
diff.browse_source=Quellcode durchsuchen
diff.parent=Ursprung
@ -1168,7 +1196,7 @@ branch.protected_deletion_failed=Branch „%s“ ist geschützt und kann nicht g
topic.manage_topics=Themen verwalten
topic.done=Fertig
topic.count_prompt=Du kannst nicht mehr als 25 Themen auswählen
topic.format_prompt=Themen müssen mit einem Buchstaben oder einer Zahl beginnen. Sie können Bindestriche (-) enthalten und dürfen nicht länger als 35 Zeichen sein
topic.format_prompt=Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
[org]
org_name_holder=Name der Organisation
@ -1273,8 +1301,8 @@ dashboard.operation_switch=Wechseln
dashboard.operation_run=Ausführen
dashboard.clean_unbind_oauth=Nicht verbundene OAuth-Verbindungen löschen
dashboard.clean_unbind_oauth_success=Alle unverbundene OAuth-Verbindungen wurden gelöscht.
dashboard.delete_inactivate_accounts=Deaktivierte Konten löschen
dashboard.delete_inactivate_accounts_success=Alle deaktivierten Konten wurden erfolgreich gelöscht.
dashboard.delete_inactivate_accounts=Alle nicht aktivierten Accounts löschen
dashboard.delete_inactivate_accounts_success=Alle nicht aktivierten Accounts wurden gelöscht.
dashboard.delete_repo_archives=Alle Repository-Archive löschen
dashboard.delete_repo_archives_success=Alle Repository-Archive wurden gelöscht.
dashboard.delete_missing_repos=Alle Repository-Datensätze mit verlorenen gegangenen Git-Dateien löschen
@ -1482,7 +1510,7 @@ config.db_path=Verzeichnis
config.service_config=Service-Konfiguration
config.register_email_confirm=E-Mail-Bestätigung benötigt zum Registrieren
config.disable_register=Selbstegistrierung deaktivieren
config.allow_only_external_registration=Registrierung nur über externe Services aktiveren
config.allow_only_external_registration=Registrierung nur über externe Services erlauben
config.enable_openid_signup=OpenID-Selbstregistrierung aktivieren
config.enable_openid_signin=OpenID-Anmeldung aktivieren
config.show_registration_button=Schaltfläche zum Registrieren anzeigen
@ -1498,6 +1526,7 @@ config.enable_timetracking=Zeiterfassung aktivieren
config.default_enable_timetracking=Zeiterfassung standardmäßig aktivieren
config.default_allow_only_contributors_to_track_time=Nur Mitarbeitern erlauben, die Zeiterfassung zu nutzen
config.no_reply_address=Versteckte E-Mail-Domain
config.default_enable_dependencies=Issue-Abhängigkeiten standardmäßig aktivieren
config.webhook_config=Webhook-Konfiguration
config.queue_length=Warteschlangenlänge

View File

@ -32,16 +32,16 @@ twofa_scratch = Two-Factor Scratch Code
passcode = Passcode
u2f_insert_key = Insert your security key
u2f_sign_in = Press the button on your security key. If you can't find a button, re-insert it.
u2f_sign_in = Press the button on your security key. If your security key has no button, re-insert it.
u2f_press_button = Please press the button on your security key…
u2f_use_twofa = Use a two-factor code from your phone
u2f_error = We can't read your security key!
u2f_unsupported_browser = Your browser don't support U2F keys. Please try another browser.
u2f_error_1 = An unknown error occured. Please retry.
u2f_error_2 = Please make sure that you're using an encrypted connection (https://) and visiting the correct URL.
u2f_error_3 = The server could not proceed your request.
u2f_error_4 = The presented key is not eligible for this request. If you try to register it, make sure that the key isn't already registered.
u2f_error_5 = Timeout reached before your key could be read. Please reload to retry.
u2f_error = Could not read your security key.
u2f_unsupported_browser = Your browser does not support U2F security keys.
u2f_error_1 = An unknown error occurred. Please retry.
u2f_error_2 = Please make sure to use the correct, encrypted (https://) URL.
u2f_error_3 = The server could not process your request.
u2f_error_4 = The security key is not permitted for this request. Please make sure that the key is not already registered.
u2f_error_5 = Timeout reached before your key could be read. Please reload this page and retry.
u2f_reload = Reload
repository = Repository
@ -75,7 +75,7 @@ cancel = Cancel
[install]
install = Installation
title = Initial Configuration
docker_helper = If you run Gitea inside Docker, please read the <a target="_blank" rel="noopener" href="%s">documentation</a> before changing any settings.
docker_helper = If you run Gitea inside Docker, please read the <a target="_blank" rel="noopener noreferrer" href="%s">documentation</a> before changing any settings.
requite_db_desc = Gitea requires MySQL, PostgreSQL, MSSQL, SQLite3 or TiDB.
db_title = Database Settings
db_type = Database Type
@ -130,7 +130,7 @@ federated_avatar_lookup = Enable Federated Avatars
federated_avatar_lookup_popup = Enable federated avatar lookup using Libravatar.
disable_registration = Disable Self-Registration
disable_registration_popup = Disable user self-registration. Only administrators will be able to create new user accounts.
allow_only_external_registration_popup=Enable the registration only through external services.
allow_only_external_registration_popup = Allow Registration Only Through External Services
openid_signin = Enable OpenID Sign-In
openid_signin_popup = Enable user sign-in via OpenID.
openid_signup = Enable OpenID Self-Registration
@ -463,13 +463,13 @@ then_enter_passcode = And enter the passcode shown in the application:
passcode_invalid = The passcode is incorrect. Try again.
twofa_enrolled = Your account has been enrolled into two-factor authentication. Store your scratch token (%s) in a safe place as it is only shown once!
u2f_desc = Security keys are hardware devices containing cryptographic keys. They could be used for two factor authentication. The security key must support the <a href="https://fidoalliance.org/">FIDO U2F</a> standard.
u2f_require_twofa = Two-Factor-Authentication must be enrolled in order to use security keys.
u2f_desc = Security keys are hardware devices containing cryptographic keys. They can be used for two-factor authentication. Security keys must support the <a rel="noreferrer" href="https://fidoalliance.org/">FIDO U2F</a> standard.
u2f_require_twofa = Your account must be enrolled in two-factor authentication to use security keys.
u2f_register_key = Add Security Key
u2f_nickname = Nickname
u2f_press_button = Press the button on your security key to register it.
u2f_delete_key = Remove Security Key
u2f_delete_key_desc= If you remove a security key you cannot login with it anymore. Are you sure?
u2f_delete_key_desc = If you remove a security key you can no longer sign in with it. Continue?
manage_account_links = Manage Linked Accounts
manage_account_links_desc = These external accounts are linked to your Gitea account.
@ -492,13 +492,13 @@ owner = Owner
repo_name = Repository Name
repo_name_helper = Good repository names use short, memorable and unique keywords.
visibility = Visibility
visiblity_helper = Make Repository Private
visiblity_helper_forced = Your site administrator forces new repositories to be private.
visiblity_fork_helper = (Changing this will affect all forks.)
clone_helper = Need help cloning? Visit <a target="_blank" rel="noopener" href="%s">Help</a>.
visibility_helper = Make Repository Private
visibility_helper_forced = Your site administrator forces new repositories to be private.
visibility_fork_helper = (Changing this will affect all forks.)
clone_helper = Need help cloning? Visit <a target="_blank" rel="noopener noreferrer" href="%s">Help</a>.
fork_repo = Fork Repository
fork_from = Fork From
fork_visiblity_helper = The visibility of a forked repository cannot be changed.
fork_visibility_helper = The visibility of a forked repository cannot be changed.
repo_desc = Description
repo_lang = Language
repo_gitignore_helper = Select .gitignore templates.
@ -613,7 +613,7 @@ editor.directory_is_a_file = Directory name '%s' is already used as a filename i
editor.file_is_a_symlink = '%s' is a symbolic link. Symbolic links cannot be edited in the web editor
editor.filename_is_a_directory = Filename '%s' is already used as a directory name in this repository.
editor.file_editing_no_longer_exists = The file being edited, '%s', no longer exists in this repository.
editor.file_changed_while_editing = The file contents have changed since you started editing. <a target="_blank" rel="noopener" href="%s">Click here</a> to see them or <strong>Commit Changes again</strong> to overwrite them.
editor.file_changed_while_editing = The file contents have changed since you started editing. <a target="_blank" rel="noopener noreferrer" href="%s">Click here</a> to see them or <strong>Commit Changes again</strong> to overwrite them.
editor.file_already_exists = A file named '%s' already exists in this repository.
editor.no_changes_to_show = There are no changes to show.
editor.fail_to_update_file = Failed to update/create file '%s' with error: %v
@ -650,7 +650,7 @@ issues.new.open_milestone = Open Milestones
issues.new.closed_milestone = Closed Milestones
issues.new.assignees = Assignees
issues.new.clear_assignees = Clear assignees
issues.new.no_assignees = Nobody assigned
issues.new.no_assignees = No Assignees
issues.no_ref = No Branch/Tag Specified
issues.create = Create Issue
issues.new_label = New Label
@ -781,6 +781,33 @@ issues.due_date_added = "added the due date %s %s"
issues.due_date_modified = "modified the due date to %s from %s %s"
issues.due_date_remove = "removed the due date %s %s"
issues.due_date_overdue = "Overdue"
issues.due_date_invalid = "The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'."
issues.dependency.title = Dependencies
issues.dependency.issue_no_dependencies = This issue currently doesn't have any dependencies.
issues.dependency.pr_no_dependencies = This pull request currently doesn't have any dependencies.
issues.dependency.add = Add dependency...
issues.dependency.cancel = Cancel
issues.dependency.remove = Remove
issues.dependency.added_dependency = `<a href="%[1]s">%[2]s</a> added a new dependency %[3]s`
issues.dependency.removed_dependency = `<a href="%[1]s">%[2]s</a> removed a dependency %[3]s`
issues.dependency.issue_closing_blockedby = Closing this pull request is blocked by the following issues
issues.dependency.pr_closing_blockedby = Closing this issue is blocked by the following issues
issues.dependency.issue_close_blocks = This issue blocks closing of the following issues
issues.dependency.pr_close_blocks = This pull request blocks closing of the following issues
issues.dependency.issue_close_blocked = You need to close all issues blocking this issue before you can close it.
issues.dependency.pr_close_blocked = You need to close all issues blocking this pull request before you can merge it.
issues.dependency.blocks_short = Blocks
issues.dependency.blocked_by_short = Depends on
issues.dependency.remove_header = Remove Dependency
issues.dependency.issue_remove_text = This will remove the dependency from this issue. Continue?
issues.dependency.pr_remove_text = This will remove the dependency from this pull request. Continue?
issues.dependency.setting = Enable Dependencies For Issues and Pull Requests
issues.dependency.add_error_same_issue = You cannot make an issue depend on itself.
issues.dependency.add_error_dep_issue_not_exist = Dependent issue does not exist.
issues.dependency.add_error_dep_not_exist = Dependency does not exist.
issues.dependency.add_error_dep_exists = Dependency already exists.
issues.dependency.add_error_cannot_create_circular = You cannot create a dependency with two issues blocking each other.
issues.dependency.add_error_dep_not_same_repo = Both issues must be in the same repository.
pulls.desc = Enable merge requests and code reviews.
pulls.new = New Pull Request
@ -994,7 +1021,7 @@ settings.search_user_placeholder = Search user…
settings.org_not_allowed_to_be_collaborator = Organizations cannot be added as a collaborator.
settings.user_is_org_member = The user is an organization member who cannot be added as a collaborator.
settings.add_webhook = Add Webhook
settings.hooks_desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Read more in the <a target="_blank" rel="noopener" href="%s">webhooks guide</a>.
settings.hooks_desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Read more in the <a target="_blank" rel="noopener noreferrer" href="%s">webhooks guide</a>.
settings.webhook_deletion = Remove Webhook
settings.webhook_deletion_desc = Removing a webhook deletes its settings and delivery history. Continue?
settings.webhook_deletion_success = The webhook has been removed.
@ -1011,7 +1038,7 @@ settings.githook_edit_desc = If the hook is inactive, sample content will be pre
settings.githook_name = Hook Name
settings.githook_content = Hook Content
settings.update_githook = Update Hook
settings.add_webhook_desc = Gitea will send <code>POST</code> requests with a specified content type to the target URL. Read more in the <a target="_blank" rel="noopener" href="%s">webhooks guide</a>.
settings.add_webhook_desc = Gitea will send <code>POST</code> requests with a specified content type to the target URL. Read more in the <a target="_blank" rel="noopener noreferrer" href="%s">webhooks guide</a>.
settings.payload_url = Target URL
settings.content_type = POST Content Type
settings.secret = Secret
@ -1097,6 +1124,7 @@ settings.protected_branch_deletion_desc = Disabling branch protection allows use
settings.default_branch_desc = Select a default repository branch for pull requests and code commits:
settings.choose_branch = Choose a branch…
settings.no_protected_branch = There are no protected branches.
settings.edit_protected_branch = Edit
diff.browse_source = Browse Source
diff.parent = parent
@ -1167,8 +1195,8 @@ branch.protected_deletion_failed = Branch '%s' is protected. It cannot be delete
topic.manage_topics = Manage Topics
topic.done = Done
topic.count_prompt = You can't select more than 25 topics
topic.format_prompt = Topics must start with a letter or number, can include hyphens(-) and must be no more than 35 characters long
topic.count_prompt = You can not select more than 25 topics
topic.format_prompt = Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
[org]
org_name_holder = Organization Name
@ -1273,8 +1301,8 @@ dashboard.operation_switch = Switch
dashboard.operation_run = Run
dashboard.clean_unbind_oauth = Clean unbound OAuth connections
dashboard.clean_unbind_oauth_success = All unbound OAuth connections have been deleted.
dashboard.delete_inactivate_accounts = Delete all inactive accounts
dashboard.delete_inactivate_accounts_success = All inactive accounts have been deleted.
dashboard.delete_inactivate_accounts = Delete all unactivated accounts
dashboard.delete_inactivate_accounts_success = All unactivated accounts have been deleted.
dashboard.delete_repo_archives = Delete all repository archives
dashboard.delete_repo_archives_success = All repository archives have been deleted.
dashboard.delete_missing_repos = Delete all repositories missing their Git files
@ -1482,7 +1510,7 @@ config.db_path = Path
config.service_config = Service Configuration
config.register_email_confirm = Require Email Confirmation to Register
config.disable_register = Disable Self-Registration
config.allow_only_external_registration = Enable the registration only through external services
config.allow_only_external_registration = Allow Registration Only Through External Services
config.enable_openid_signup = Enable OpenID Self-Registration
config.enable_openid_signin = Enable OpenID Sign-In
config.show_registration_button = Show Register Button
@ -1498,6 +1526,7 @@ config.enable_timetracking = Enable Time Tracking
config.default_enable_timetracking = Enable Time Tracking by Default
config.default_allow_only_contributors_to_track_time = Let Only Contributors Track Time
config.no_reply_address = Hidden Email Domain
config.default_enable_dependencies = Enable Issue Dependencies by Default
config.webhook_config = Webhook Configuration
config.queue_length = Queue Length

View File

@ -27,16 +27,11 @@ email=Correo electrónico
password=Contraseña
re_type=Vuelva a escribir la contraseña
captcha=CAPTCHA
twofa=Autenticación de dos factores
twofa=Autenticación en dos pasos
passcode=Contraseña
u2f_insert_key=Inserte su clave de seguridad
u2f_use_twofa=Use un código de dos factores de su celular
u2f_error=No podemos leer su llave de seguridad!
u2f_unsupported_browser=Su navegador no soporta llaves U2F. Por favor utilicé otro navegador.
u2f_error_1=Un error desconocido ha ocurrido. Por favor vuelva a intentarlo.
u2f_error_2=Por favor asegúrese de que está utilizando una conexión cifrada (https://) y que esta visitando la dirección URL correcta.
u2f_error_3=El servidor no pudo procesar su petición.
u2f_reload=Recargar
repository=Repositorio
@ -69,7 +64,6 @@ cancel=Cancelar
[install]
install=Instalación
title=Configuración inicial
docker_helper=Si esta ejecutando Gitea dentro de un contenedor Docker, por favor lea la <a target="_blank" rel="noopener" href="%s">documentaciónn</a> antes de realizar cambios a la configuración.
requite_db_desc=Gitea requiere una base de datos MySQL, PostgreSQL, MSSQL, SQLite3 o TiDB.
db_title=Configuración de base de datos
db_type=Tipo de base de datos
@ -728,8 +722,6 @@ dashboard.operation_name=Nombre de la operación
dashboard.operation_switch=Interruptor
dashboard.operation_run=Ejecutar
dashboard.clean_unbind_oauth_success=Se han eliminado las conexiones de OAuth no vinculadas.
dashboard.delete_inactivate_accounts=Eliminar todas las cuentas inactivas
dashboard.delete_inactivate_accounts_success=Todas las cuentas inactivas han sido eliminadas.
dashboard.resync_all_sshkeys=Actualizar el archivo '.ssh/authorized_keys' con las claves SSH de Gitea (no es necesario para el servidor SSH incorporado).
dashboard.reinit_missing_repos=Reiniciar todos los repositorios Git faltantes de los que existen registros
dashboard.reinit_missing_repos_success=Todos los repositorios Git faltantes para los que existen registros se han reinicializado.

View File

@ -63,7 +63,6 @@ cancel=Peruuta
[install]
install=Asennus
title=Alkuperäiset asetukset
docker_helper=Jos ajat Giteaa Dockerissa, tutustuthan <a target="_blank" rel="noopener" href="%s">dokumentaatioon</a> ennen asetusten muuttamista.
requite_db_desc=Gitea tarvitsee toimiakseen MySQL-, PostgreSQL-, MSSQL-, SQLite3 tai TiDB-tietokannan.
db_title=Tietokanta asetukset
db_type=Tietokanta tyyppi
@ -589,7 +588,6 @@ total=Yhteensä: %d
dashboard.operation_name=Toiminnon nimi
dashboard.operation_switch=Vaihda
dashboard.operation_run=Suorita
dashboard.delete_inactivate_accounts=Poista kaikki passiiviset tunnukset
dashboard.server_uptime=Palvelimen Uptime
dashboard.current_goroutine=Nykyiset Goroutinet
dashboard.current_memory_usage=Nykyinen muistinkäyttö

View File

@ -32,16 +32,8 @@ twofa_scratch=Code de secours pour l'authentification à deux facteurs
passcode=Code d'accès
u2f_insert_key=Insérez votre clef de sécurité
u2f_sign_in=Appuyez sur le bouton de votre clef de sécurité. Si vous ne voyez pas de bouton, ré-insérez là.
u2f_press_button=Veuillez appuyer sur le bouton de votre clef de sécurité…
u2f_use_twofa=Utilisez l'authentification à deux facteurs avec votre téléphone
u2f_error=Nous ne pouvons pas lire votre clé de sécurité !
u2f_unsupported_browser=Votre navigateur n'est pas compatible avec les clefs U2F. Veuillez réessayer avec un autre navigateur.
u2f_error_1=Une erreur inconnue s'est produite. Veuillez réessayer.
u2f_error_2=Veuillez vous assurer que vous utilisez une connexion chiffrée (https) et que vous visitez la bonne adresse.
u2f_error_3=Le serveur n'a pas pu répondre à votre requête.
u2f_error_4=Cette clef n'est pas compatible avec votre requête. Si vous êtes en train de l'enregistrer, veuillez vous assurer que cette clef n'est pas déjà enregistrée.
u2f_error_5=Le délai d'attente imparti a été atteint avant que votre clef ne puisse être lue. Veuillez recharger la page pour réessayer.
u2f_reload=Recharger
repository=Dépôt
@ -75,7 +67,6 @@ cancel=Annuler
[install]
install=Installation
title=Configuration initiale
docker_helper=Si vous utilisez Gitea avec Docker, veuillez lire la <a target="_blank" rel="noopener" href="%s">documentation</a> avant de modifier les paramètres.
requite_db_desc=Gitea requiert MySQL, PostgreSQL, MSSQL, SQLite3 ou TiDB.
db_title=Paramètres de la base de données
db_type=Type de base de données
@ -130,7 +121,6 @@ federated_avatar_lookup=Activer les avatars unifiés
federated_avatar_lookup_popup=Activer la recherche unifiée d'avatars en utilisant le service open source unifié basé sur libravatar.
disable_registration=Désactiver le formulaire d'inscription
disable_registration_popup=Désactiver les nouvelles inscriptions. Seuls les administrateurs pourront créer de nouveaux comptes utilisateurs.
allow_only_external_registration_popup=N'autoriser l'inscription qu'à partir des services externes.
openid_signin=Activer l'inscription OpenID
openid_signin_popup=Activer l'authentification via OpenID.
openid_signup=Activer l'inscription OpenID
@ -463,13 +453,10 @@ then_enter_passcode=Et entrez le mot de passe s'affichant dans l'application :
passcode_invalid=Le mot de passe est invalide. Réessayez.
twofa_enrolled=L'authentification à deux facteurs a été activée pour votre compte. Gardez votre jeton de secours (%s) en lieu sûr car il ne vous sera montré qu'une seule fois !
u2f_desc=Les clefs de sécurité sont des dispositifs matériels contenant des clefs cryptographiques. Elles peuvent être utilisées pour l'authentification à deux facteurs. La clef de sécurité doit supporter le standard <a href="https://fidoalliance.org/">FIDO U2F</a>.
u2f_require_twofa=L'authentification à deux facteurs doit être activée afin d'utiliser une clef de sécurité.
u2f_register_key=Ajouter une clef de sécurité
u2f_nickname=Pseudonyme
u2f_press_button=Appuyer sur le bouton de votre clef de sécurité pour l'enregistrer.
u2f_delete_key=Supprimer une clef de sécurité
u2f_delete_key_desc=Si vous supprimez une clef de sécurité vous ne pourrez plus l'utiliser pour vous connecter. Continuer?
manage_account_links=Gérer les comptes liés
manage_account_links_desc=Ces comptes externes sont liés à votre compte Gitea.
@ -492,13 +479,8 @@ owner=Propriétaire
repo_name=Nom du dépôt
repo_name_helper=Idéalement, le nom d'un dépôt devrait être court, mémorisable et unique.
visibility=Visibilité
visiblity_helper=Rendre le dépôt privé
visiblity_helper_forced=L'administrateur de votre site impose que les nouveaux dépôts soient privés.
visiblity_fork_helper=(Les changement de cette valeur affecteront toutes les bifurcations.)
clone_helper=Besoin d'aide pour dupliquer ? Visitez <a target="_blank" rel="noopener" href="%s">l'aide</a>.
fork_repo=Créer une bifurcation du dépôt
fork_from=Bifurquer depuis
fork_visiblity_helper=La visibilité d'un dépôt bifurqué ne peut être changée.
repo_desc=Description
repo_lang=Langue
repo_gitignore_helper=Choisissez un modèle de fichier .gitignore.
@ -613,7 +595,6 @@ editor.directory_is_a_file=Le nom de dossier '%s' est déjà utilisé comme nom
editor.file_is_a_symlink='%s' est un lien symbolique. Les liens symboliques ne peuvent être édités dans l'interface web
editor.filename_is_a_directory=Le nom de fichier '%s' est déjà utilisé comme nom de dossier dans ce dépôt.
editor.file_editing_no_longer_exists=Le fichier en cours d'édition, '%s', n'existe plus dans ce dépôt.
editor.file_changed_while_editing=Le contenu de ce fichier a changé depuis le début de l'édition. <a target="_blank" rel="noopener" href="%s">Cliquez ici</a> pour voir les changements ou <strong>soumettez de nouveau</strong> pour écraser ces changements.
editor.file_already_exists=Un fichier nommé '%s' existe déjà dans ce dépôt.
editor.no_changes_to_show=Il ny a aucun changement à afficher.
editor.fail_to_update_file=Échec lors de la mise à jour/création du fichier '%s' avec lerreur : %v
@ -650,7 +631,6 @@ issues.new.open_milestone=Ouvrir un jalon
issues.new.closed_milestone=Jalons fermés
issues.new.assignees=Affecté à
issues.new.clear_assignees=Supprimer les affectations
issues.new.no_assignees=Aucune affectation
issues.no_ref=Aucune branche/tag spécifiés
issues.create=Créer un ticket
issues.new_label=Nouvelle étiquette
@ -994,7 +974,6 @@ settings.search_user_placeholder=Rechercher un utilisateur…
settings.org_not_allowed_to_be_collaborator=Les organisations ne peuvent être ajoutées en tant que collaborateur.
settings.user_is_org_member=L'utilisateur est un membre d'organisation qui ne peut être ajouté comme collaborateur.
settings.add_webhook=Ajouter un déclencheur Web
settings.hooks_desc=Les webhooks envoient automatiquement des requêtes HTTP POST vers un serveur lorsque certains événements Gitea sont déclenchés. Apprenez-en plus dans le <a target="_blank" rel="noopener" href="%s">guide webhooks</a>.
settings.webhook_deletion=Retirer le Webhook
settings.webhook_deletion_desc=Supprimer un webhook supprime ses paramètres et son historique. Continuer ?
settings.webhook_deletion_success=Le webhook a été supprimé.
@ -1011,7 +990,6 @@ settings.githook_edit_desc=Si un Hook est inactif, un exemple de contenu vous se
settings.githook_name=Nom du Hook
settings.githook_content=Contenu du Hook
settings.update_githook=Mettre le Hook à jour
settings.add_webhook_desc=Gitea enverra des requêtes <code>POST</code> avec un type de contenu donné à l'URL cible. Apprenez-en plus dans le <a target="_blank" rel="noopener" href="%s">guide webhooks</a>.
settings.payload_url=URL cible
settings.content_type=Type de contenu POST
settings.secret=Confidentiel
@ -1167,8 +1145,6 @@ branch.protected_deletion_failed=La branche '%s' est protégé. Il ne peut pas
topic.manage_topics=Gérer les sujets
topic.done=Terminé
topic.count_prompt=Vous ne pouvez pas sélectionner plus de 25 sujets
topic.format_prompt=Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets (-), sans dépasser 35 caractères
[org]
org_name_holder=Nom de l'organisation
@ -1273,8 +1249,6 @@ dashboard.operation_switch=Basculer
dashboard.operation_run=Exécuter
dashboard.clean_unbind_oauth=Effacer les connexions OAuth associées
dashboard.clean_unbind_oauth_success=Toutes les connexions OAuth associées ont été supprimées.
dashboard.delete_inactivate_accounts=Supprimer tous les comptes inactifs
dashboard.delete_inactivate_accounts_success=Tous les comptes inactifs ont été supprimés.
dashboard.delete_repo_archives=Supprimer toutes les archives du dépôt
dashboard.delete_repo_archives_success=Toutes les archives du dépôt ont été supprimées.
dashboard.delete_missing_repos=Supprimer tous les dépôts dont les fichiers Git sont manquants
@ -1482,7 +1456,6 @@ config.db_path=Emplacement
config.service_config=Configuration du service
config.register_email_confirm=Exiger la confirmation de l'e-mail lors de l'inscription
config.disable_register=Désactiver le formulaire d'inscription
config.allow_only_external_registration=N'autoriser l'inscription qu'à partir des services externes
config.enable_openid_signup=Activer l'inscription avec OpenID
config.enable_openid_signin=Activer la connexion avec OpenID
config.show_registration_button=Afficher le bouton d'enregistrement

View File

@ -708,8 +708,6 @@ dashboard.operation_switch=Váltás
dashboard.operation_run=Futtatás
dashboard.clean_unbind_oauth=Megszüntetett OAuth kapcsolatok törlése
dashboard.clean_unbind_oauth_success=Az összes megszüntetett OAuth kapcsolat törölve.
dashboard.delete_inactivate_accounts=Minden inaktív fiók törlése
dashboard.delete_inactivate_accounts_success=Minden inaktív fiók törölve.
dashboard.reinit_missing_repos=Az összes Git tároló újra-inicializálása amihez léteznek bejegyzések
dashboard.reinit_missing_repos_success=Az összes Git tároló amihez létezett bejegyzés újra lett iniciaizálva.
dashboard.sync_external_users=Külső felhasználói adatok szinkronizálása

View File

@ -32,16 +32,8 @@ twofa_scratch=Kode Awal Dua Faktor
passcode=Kode Akses
u2f_insert_key=Masukkan kunci keamanan anda
u2f_sign_in=Tekan tombol pada kunci keamanan anda. Jika anda tidak menemukan tombol, masukkan kembali.
u2f_press_button=Silahkan tekan tombol pada kunci keamanan anda…
u2f_use_twofa=Menggunakan kode dua faktor dari telepon anda
u2f_error=Kami tidak bisa membaca kunci keamanan anda!
u2f_unsupported_browser=Browser anda tidak mendukung kunci U2F. Silakan mencoba browser lain.
u2f_error_1=Terdapat kesalahan yang tidak diketahui. Mohon coba lagi.
u2f_error_2=Pastikan bahwa anda menggunakan koneksi terenkripsi (https://) dan mengunjungi URL yang benar.
u2f_error_3=Server tidak bisa melanjutkan permintaan anda.
u2f_error_4=Kunci tidak layak untuk permintaan ini. Jika Anda mencoba untuk mendaftarkanya, pastikan bahwa kunci sudah tidak terdaftar.
u2f_error_5=Timeout tercapai sebelum kunci anda bisa terbaca. Silahkan muat ulang untuk mencoba kembali.
u2f_reload=Muat Ulang
repository=Repositori
@ -75,7 +67,6 @@ cancel=Batal
[install]
install=Pemasangan
title=Konfigurasi Awal
docker_helper=Jika Anda menjalankan Gitea di dalam Docker, baca <a target="_blank" rel="noopener" href="%s">dokumentasi </a> sebelum mengubah pengaturan.
requite_db_desc=Gitea memerlukan MySQL, PostgreSQL, MSSQL, SQLite3 atau TiDB.
db_title=Pengaturan Basis Data
db_type=Tipe Basis Data
@ -789,8 +780,6 @@ dashboard.operation_switch=Beralih
dashboard.operation_run=Lari
dashboard.clean_unbind_oauth=Bersihkan koneksi OAuth yang tidak terikat
dashboard.clean_unbind_oauth_success=Semua koneksi OAuth yang tidak terikat telah dihapus.
dashboard.delete_inactivate_accounts=Hapus semua akun yang tidak aktif
dashboard.delete_inactivate_accounts_success=Semua akun yang tidak aktif telah dihapus.
dashboard.reinit_missing_repos=Menginstal kembali semua repositori Git yang hilang dimana ada catatan
dashboard.reinit_missing_repos_success=Semua repositori Git yang hilang yang catatannya dan telah diinisialisasi ulang.
dashboard.sync_external_users=Sinkronkan data pengguna eksternal

View File

@ -32,16 +32,8 @@ twofa_scratch=Codice di recupero per la verifica in due passaggi
passcode=Codice di sicurezza
u2f_insert_key=Inserisci la chiave di sicurezza
u2f_sign_in=Premi il pulsante sulla tua chiave di sicurezza. Se non riesci a trovare alcun pulsante, reinseriscilo.
u2f_press_button=Si prega di premere il pulsante sulla tua chiave di sicurezza…
u2f_use_twofa=Usa un codice di verifica in due passaggi dal tuo telefono
u2f_error=Non riusciamo a leggere la tua chiave di sicurezza!
u2f_unsupported_browser=Il tuo browser non supporta le chiavi U2F. Si prega di provare un altro browser.
u2f_error_1=Si è verificato un errore sconosciuto. Si prega di riprovare.
u2f_error_2=Si prega di assicurarsi che si sta utilizza una connessione crittografata (https://) e visitando l'URL corretto.
u2f_error_3=Il server non ha potuto eseguire la richiesta.
u2f_error_4=La chiave data non è idonea per questa richiesta. Se stai provando a registrarla, assicurati che la chiave non sia già stata registrata.
u2f_error_5=Timeout raggiunto prima che la tua chiave potesse essere letta. Si prega di ricaricare per riprovare.
u2f_reload=Ricarica
repository=Repository
@ -75,7 +67,6 @@ cancel=Annulla
[install]
install=Installazione
title=Configurazione Iniziale
docker_helper=Se stai usando Gitea con Docker, si prega di leggere <a target="_blank" rel="noopener" href="%s">la documentazione</a> prima di cambiare qualsiasi impostazione.
requite_db_desc=Gitea necessita di MySQL, PostgreSQL, MSSQL, SQLite3 o TiDB.
db_title=Impostazioni Database
db_type=Tipo di database
@ -130,7 +121,6 @@ federated_avatar_lookup=Attiva i Federated Avatar
federated_avatar_lookup_popup=Enable federated avatars lookup to use federated open source service based on libravatar.
disable_registration=Disattiva Self-Registration
disable_registration_popup=Disattiva la user self-registration. Solo gli amministratori saranno in grado di creare account.
allow_only_external_registration_popup=Attiva la registrazione solo tramite servizi esterni.
openid_signin=Attiva l'accesso OpenID
openid_signin_popup=Attiva registrazione utente via OpenID.
openid_signup=Attiva OpenID Self-Registration
@ -463,14 +453,10 @@ then_enter_passcode=E immetti il codice di accesso indicato nell'applicazione:
passcode_invalid=Il codice di accesso non è corretto. Riprova.
twofa_enrolled=Il tuo account è stato registrato alla verifica in due passaggi. Conserva il token di sicurezza (%s) in un luogo sicuro in quanto viene visualizzato sono una volta!
u2f_desc=Le chiavi di sicurezza sono dispositivi hardware contenenti chiavi crittografiche. Potrebbero essere usate per la verifica in due passaggi.
La chiave di sicurezza deve supportare lo standard <a href="https://fidoalliance.org/">FIDO U2F</a>.
u2f_require_twofa=La verifica in due passaggi deve essere attiva per poter utilizzare le chiavi di protezione.
u2f_register_key=Aggiungi chiave di sicurezza
u2f_nickname=Nickname
u2f_press_button=Premi il pulsante sulla tua chiave di sicurezza per registrarla.
u2f_delete_key=Rimuovi chiave di sicurezza
u2f_delete_key_desc=Se si rimuove una chiave di sicurezza non sarà più possibile effettuare l'accesso con essa. Sei sicuro?
manage_account_links=Gestisci gli account collegati
manage_account_links_desc=Questi account esterni sono collegati al tuo account Gitea.
@ -493,13 +479,8 @@ owner=Proprietario
repo_name=Nome Repository
repo_name_helper=Un buon nome per un repository è costituito da parole chiave corte, facili da ricordare e uniche.
visibility=Visibilità
visiblity_helper=Rendi il repository privato
visiblity_helper_forced=L'amministratore del sito impone che le nuove repositories siano private.
visiblity_fork_helper=(Questa modifica avrà effetto su tutti i fork)
clone_helper=Hai bisogno di aiuto per la clonazione? Visita <a target="_blank" rel="noopener" href="%s">Aiuto</a>.
fork_repo=Forka Repository
fork_from=Forka da
fork_visiblity_helper=La visibilità di un repository forkato non può essere modificata.
repo_desc=Descrizione
repo_lang=Lingua
repo_gitignore_helper=Seleziona i templates di .gitignore.
@ -614,7 +595,6 @@ editor.directory_is_a_file=Il nome di directory '%s' è già utilizzato come nom
editor.file_is_a_symlink='%s' è un collegamento simbolico. I collegamenti simbolici non possono essere modificati nell'editor web
editor.filename_is_a_directory=Il nome di file '%s' è già utilizzato come nome di una directory in questo repository.
editor.file_editing_no_longer_exists=Il file in fase di modifica, '%s', non esiste più in questo repository.
editor.file_changed_while_editing=I contenuti di questo file hanno subito dei cambiamento da quando hai iniziato la modifica. <a target="_blank" rel="noopener" href="%s">Clicca qui</a> per visualizzarli o <strong>Committa nuovemente i Cambiamenti</strong> per sovrascriverli.
editor.file_already_exists=Un file di nome '%s' esiste già in questo repository.
editor.no_changes_to_show=Non ci sono cambiamenti da mostrare.
editor.fail_to_update_file=Errore durante l'aggiornamento/ creazione del file '%s' con errore: %v
@ -651,7 +631,6 @@ issues.new.open_milestone=Apri Milestone
issues.new.closed_milestone=Milestone chiuse
issues.new.assignees=Assegnatari
issues.new.clear_assignees=Cancella assegnatari
issues.new.no_assignees=Nessuno assegnato
issues.no_ref=Nessun Branch/Tag specificato
issues.create=Crea Problema
issues.new_label=Nuova etichetta
@ -995,7 +974,6 @@ settings.search_user_placeholder=Ricerca utente…
settings.org_not_allowed_to_be_collaborator=Le organizzazioni non possono essere aggiunte come un collaboratore.
settings.user_is_org_member=L'utente è un membro di organizzazione che non può essere aggiunto come un collaboratore.
settings.add_webhook=Aggiungi Webhook
settings.hooks_desc=I Webhook effettuano automaticamente richieste HTTP POST ad un server quando si verificano determinati eventi Gitea. Per saperne di più leggi la <a target="_blank" rel="noopener" href="%s">guida ai webhooks</a>.
settings.webhook_deletion=Rimuovi Webhook
settings.webhook_deletion_desc=Rimuovere un webhook rimuove le sue impostazioni e la sua cronologia di consegna. Continuare?
settings.webhook_deletion_success=Il webhook è stato rimosso.
@ -1012,7 +990,6 @@ settings.githook_edit_desc=Se l'hook è inattivo, sarà presentato un contenuto
settings.githook_name=Nome hook
settings.githook_content=Contenuto hook
settings.update_githook=Aggiorna Hook
settings.add_webhook_desc=Gitea enverra des requêtes <code>POST</code> avec un type de contenu donné à l'URL cible. Apprenez-en plus dans le <a target="_blank" rel="noopener noreferrer" href="%s">guide webhooks</a>.
settings.payload_url=URL di destinazione
settings.content_type=Tipo di contenuto POST
settings.secret=Segreto
@ -1168,8 +1145,6 @@ branch.protected_deletion_failed=Il branch '%s' è protetto. Non può essere eli
topic.manage_topics=Gestisci argomenti
topic.done=Fatto
topic.count_prompt=Non puoi selezione più di 25 argomenti
topic.format_prompt=Gli argomenti devono iniziare con una lettera o un numero, possono includere il carattere hiphens(-) e non possono essere più lunghi di 35 caratteri
[org]
org_name_holder=Nome dell'Organizzazione
@ -1274,8 +1249,6 @@ dashboard.operation_switch=Cambia
dashboard.operation_run=Esegui
dashboard.clean_unbind_oauth=Elimina connessione OAuth slegate
dashboard.clean_unbind_oauth_success=Tutte le connessione OAuth slegate sono state eliminate.
dashboard.delete_inactivate_accounts=Elimina tutti gli account inattivi
dashboard.delete_inactivate_accounts_success=Tutti gli account inattivi sono stati eliminati.
dashboard.delete_repo_archives=Elimina tutti gli archivi dei repository
dashboard.delete_repo_archives_success=Tutti gli archivi del repository sono stati eliminati.
dashboard.delete_missing_repos=Elimina tutti i repository mancanti dei loro file Git
@ -1483,7 +1456,6 @@ config.db_path=Percorso
config.service_config=Configurazione Servizio
config.register_email_confirm=Richiedere la conferma Email per registrarsi
config.disable_register=Disattiva Self-Registration
config.allow_only_external_registration=Attiva la registrazione solo tramite servizi esterni
config.enable_openid_signup=Attiva OpenID Self-Registration
config.enable_openid_signin=Attiva l'accesso tramite OpenID
config.show_registration_button=Mostra Pulsane Registrazione

View File

@ -708,8 +708,6 @@ dashboard.operation_switch=スイッチ
dashboard.operation_run=実行
dashboard.clean_unbind_oauth=関連付けられていないOAuth接続を削除
dashboard.clean_unbind_oauth_success=すべての関連付けられていないOAuth接続は削除されました。
dashboard.delete_inactivate_accounts=非アクティブのアカウントをすべて削除
dashboard.delete_inactivate_accounts_success=すべての非アクティブなアカウントは削除されました。
dashboard.reinit_missing_repos=レコードが存在するが見当たらないすべてのGitリポジトリを再初期化する
dashboard.reinit_missing_repos_success=レコードが存在するが見当たらないすべてのGitリポジトリが再初期化されました。
dashboard.sync_external_users=外部ユーザーデータの同期

View File

@ -591,7 +591,6 @@ total=총: %d
dashboard.operation_name=작업 명
dashboard.operation_switch=스위치
dashboard.operation_run=실행
dashboard.delete_inactivate_accounts=활성화되지 않은 모든 계정을 삭제합니다.
dashboard.server_uptime=서버를 켠 시간
dashboard.current_goroutine=현재 Go루틴
dashboard.current_memory_usage=현재 메모리 사용율

View File

@ -32,16 +32,8 @@ twofa_scratch=Divu faktoru vienreizējais kods
passcode=Kods
u2f_insert_key=Ievietojiet Jūsu drošības atslēgu
u2f_sign_in=Nospiediet drošības atslēgas pogu. Ja nevarat to atrast, ievietojiet atkārtoti.
u2f_press_button=Nospiediet drošības atslēgas pogu…
u2f_use_twofa=Izmantot divu faktoru kodu no tālruņa
u2f_error=Nav iespējams nolasīt drošības atslēgu!
u2f_unsupported_browser=Jūsu pārlūks neatbalsta U2F atslēgas. Izmantojiet citu pārlūku.
u2f_error_1=Notikusi nezināma kļūda. Atkārtojiet darbību vēlreiz.
u2f_error_2=Pārliecinieties, ka izmantojat šifrētu savienojumu (https://) un apmeklējat pareizo URL.
u2f_error_3=Serveris nevar apstrādāt Jūsu pieprasījumu.
u2f_error_4=Nav iespējams izmantot atslēgu šim pieprasījumam. Ja mēģināt to reģistrēt, pārliecinieties, ka atslēga jau nav reģistrēta.
u2f_error_5=Iestājusies noildze nolasot atslēgu. Pārlādējiet lapu, lai atkārtotu vēlreiz.
u2f_reload=Pārlādēt
repository=Repozitorijs
@ -75,7 +67,7 @@ cancel=Atcelt
[install]
install=Instalācija
title=Sākotnējā konfigurācija
docker_helper=Ja Gitea ir uzstādīts Docker konteinerī, izlasiet <a target="_blank" rel="noopener" href="%s">vadlīninas</a> pirms maināt iestatījumus.
docker_helper=Ja Gitea ir uzstādīts Docker konteinerī, izlasiet <a target="_blank" rel="noopener noreferrer" href="%s">vadlīninas</a> pirms maināt iestatījumus.
requite_db_desc=Gitea nepieciešams MySQL, PostgreSQL, MSSQL, SQLite3 vai TiDB.
db_title=Datu bāzes iestatījumi
db_type=Datu bāzes veids
@ -130,7 +122,6 @@ federated_avatar_lookup=Iespējot apvienotās profila bildes
federated_avatar_lookup_popup=Iespējot apvienoto profila bilžu meklētāju, lai izmantotu atvērtā koda apvienoto servisu balstītu uz libravatar.
disable_registration=Atspējot lietotāju reģistrāciju
disable_registration_popup=Atspējot iespēju reģistrēties. Tikai administratori varēs izveidot jaunus kontus.
allow_only_external_registration_popup=Ļaut reģistrēties tikai izmantojot ārējos pakalpojumus.
openid_signin=Iespējot OpenID autorizāciju
openid_signin_popup=Iespējot lietotāju autorizāciju ar OpenID.
openid_signup=Iespējot reģistrāciju, izmantojot OpenID
@ -463,13 +454,10 @@ then_enter_passcode=Ievadiet piekļuves kodu no lietojumprogrammas:
passcode_invalid=Nederīgs piekļuves kods. Mēģiniet ievadīt atkārtoti.
twofa_enrolled=Kontam tagad ir ieslēgta divu faktoru autentifikācija. Saglabājiet savu vienreizējo kodu (%s), jo tas vairāk netiks parādīts!
u2f_desc=Drošības atslēgas ir aparatūras ierīces, kas satur kriptogrāfiskās atslēgas. Tās var tikt izmantotas, lai nodrošinātu divu faktoru autentifikāciju. Drošības atslēgām ir jāatbalsta <a href="https://fidoalliance.org/">FIDO U2F</a> standarts.
u2f_require_twofa=Jābūt iespējotai divu faktoru autentifikācija, lai varētu izmantot drošības atslēgas.
u2f_register_key=Pievienot drošības atslēgu
u2f_nickname=Segvārds
u2f_press_button=Nospiediet pogu uz Jūsu drošības atslēgas, lai to reģistrētu.
u2f_delete_key=Noņemt drošības atslēgu
u2f_delete_key_desc=Noņemot drošības atslēgu ar to vairs nebūs iespējams autorizēties. Vai turpināt?
manage_account_links=Pārvaldīt saistītos kontus
manage_account_links_desc=Šādi ārējie konti ir piesaistīti Jūsu Gitea kontam.
@ -492,13 +480,9 @@ owner=Īpašnieks
repo_name=Repozitorija nosaukums
repo_name_helper=Labi repozitorija nosaukumi ir īsi, unikāli un tādi, ko viegli atcerēties.
visibility=Redzamība
visiblity_helper=Padarīt repozitoriju privātu
visiblity_helper_forced=Jūsu sistēmas administrators ir noteicis, ka visiem no jauna izveidotajiem repozitorijiem ir jābūt privātiem.
visiblity_fork_helper=(Šīs vērtības maiņa ietekmēs arī visus atdalītos repozitorijus)
clone_helper=Nepieciešama palīdzība kā veikt klonēšana? Apmeklējiet <a target="_blank" rel="noopener" href="%s">Palīdzība</a> lapu.
clone_helper=Nepieciešama palīdzība klonēšanā? Apmeklē <a target="_blank" rel="noopener noreferrer" href="%s">palīdzības</a> sadaļu.
fork_repo=Atdalīt repozitoriju
fork_from=Atdalīt no
fork_visiblity_helper=Atdalītam repozitorijam nav iespējams nomainīt tā redzamību.
repo_desc=Apraksts
repo_lang=Valoda
repo_gitignore_helper=Izvēlieties .gitignore sagatavi.
@ -613,7 +597,7 @@ editor.directory_is_a_file=Ieraksts '%s' vecāka ceļā ir fails nevis direktori
editor.file_is_a_symlink=Fails '%s' ir norāde, kuru nav iespējams labot no tīmekļa redaktora
editor.filename_is_a_directory=Faila nosaukums '%s' sakrīt ar direktorijas nosaukumu šajā repozitorijā.
editor.file_editing_no_longer_exists=Fails '%s', ko labojat, vairs neeksistē šajā repozitorijā.
editor.file_changed_while_editing=Faila saturs ir mainījies kopš sākāt to labot. Noklikšķiniet <a target="_blank" rel="noopener" href="%s">šeit</a>, lai apskatītu, vai <strong>Nosūtiet izmaiņas atkārtoti</strong>, lai pārrakstītu.
editor.file_changed_while_editing=Faila saturs ir mainījies kopš sākāt to labot. Noklikšķiniet <a target="_blank" rel="noopener noreferrer" href="%s">šeit</a>, lai apskatītu, vai <strong>Nosūtiet izmaiņas atkārtoti</strong>, lai pārrakstītu.
editor.file_already_exists=Fails ar nosaukumu '%s' šajā repozitorijā jau eksistē.
editor.no_changes_to_show=Nav izmaiņu, ko rādīt.
editor.fail_to_update_file=Neizdevās izmainīt/izveidot failu '%s', kļūda: %v
@ -650,7 +634,6 @@ issues.new.open_milestone=Atvērtie atskaites punktus
issues.new.closed_milestone=Aizvērtie atskaites punkti
issues.new.assignees=Atbildīgie
issues.new.clear_assignees=Noņemt atbildīgo
issues.new.no_assignees=Nav atbildīgā
issues.no_ref=Nav norādīts atzars/tags
issues.create=Pieteikt problēmu
issues.new_label=Jauna etiķete
@ -994,7 +977,7 @@ settings.search_user_placeholder=Meklēt lietotāju…
settings.org_not_allowed_to_be_collaborator=Organizācijas nevar tikt pievienotas kā līdzstrādnieki.
settings.user_is_org_member=Lietotājs ir organizācijas biedrs, kas nevar tikt pievienots kā līdzstrādnieks.
settings.add_webhook=Pievienot tīmekļa āķi
settings.hooks_desc=Tīmekļa āķi ļauj paziņot ārējiem servisiem par noteiktiem notikumiem, kas notiek Gitea. Kad iestāsies kāds notikums, katram ārējā servisa URL tiks nosūtīts POST pieprasījums. Lai uzzinātu sīkāk skatieties <a target="_blank" rel="noopener" href="%s">tīmekļa āķu rokasgrāmatā</a>.
settings.hooks_desc=Tīmekļa āķi ļauj paziņot ārējiem servisiem par noteiktiem notikumiem, kas notiek Gitea. Kad iestāsies kāds notikums, katram ārējā servisa URL tiks nosūtīts POST pieprasījums. Lai uzzinātu sīkāk skatieties <a target="_blank" rel="noopener noreferrer" href="%s">tīmekļa āķu rokasgrāmatā</a>.
settings.webhook_deletion=Noņemt tīmekļa āķi
settings.webhook_deletion_desc=Noņemot tīmekļa āķi, tiks dzēsti visi tā iestatījumi un piegādes vēsture. Vai turpināt?
settings.webhook_deletion_success=Tīmekļa āķis tika noņemts.
@ -1011,7 +994,7 @@ settings.githook_edit_desc=Ja āķis nav aktīvs, tiks attēlots piemērs kā to
settings.githook_name=Āķa nosaukums
settings.githook_content=Āķa saturs
settings.update_githook=Labot āķi
settings.add_webhook_desc=Uz norādīto URL tiks nosūtīts <code>POST</code> pieprasījums ar notikuma datiem. Detalizētāku informāciju ir iespējams uzzināt <a target="_blank" rel="noopener" href="%s">tīmekļa āķu rokasgrāmatā</a>.
settings.add_webhook_desc=Uz norādīto URL tiks nosūtīts <code>POST</code> pieprasījums ar notikuma datiem. Detalizētāku informāciju ir iespējams uzzināt <a target="_blank" rel="noopener noreferrer" href="%s">tīmekļa āķu rokasgrāmatā</a>.
settings.payload_url=Saņēmēja URL
settings.content_type=POST satura tips
settings.secret=Noslēpums
@ -1167,8 +1150,6 @@ branch.protected_deletion_failed=Atzars '%s' ir aizsargāts. To nevar izdzēst.
topic.manage_topics=Pārvaldīt tēmas
topic.done=Gatavs
topic.count_prompt=Nevar pievienot vairāk kā 25 tēmas
topic.format_prompt=Tēmas nosaukumam ir jāsākas ar burtu vai ciparu, tas var saturēt defisi(-), kā arī tas nevar būt garāks par 35 simboliem
[org]
org_name_holder=Organizācijas nosaukums
@ -1273,8 +1254,6 @@ dashboard.operation_switch=Pārslēgt
dashboard.operation_run=Palaist
dashboard.clean_unbind_oauth=Notīrīt nepiesaistītos OAuth savienojumus
dashboard.clean_unbind_oauth_success=Visi nepiesaistītie OAuth savienojumu tika izdzēsti.
dashboard.delete_inactivate_accounts=Dzēst visus neaktīvos kontus
dashboard.delete_inactivate_accounts_success=Visi neaktīvie konti tika izdzēsti.
dashboard.delete_repo_archives=Dzēst visu repozitoriju arhīvus
dashboard.delete_repo_archives_success=Visu repozitoriju arhīvi tika izdzēsti.
dashboard.delete_missing_repos=Dzēst visus repozitorijus, kam trūkst Git failu
@ -1482,7 +1461,6 @@ config.db_path=Ceļš
config.service_config=Pakalpojuma konfigurācija
config.register_email_confirm=Reģistrējoties pieprasīt apstiprināt e-pasta adresi
config.disable_register=Atspējot lietotāju reģistrāciju
config.allow_only_external_registration=Ļaut reģistrēties tikai izmantojot ārējos pakalpojumus
config.enable_openid_signup=Iespējot reģistrāciju, izmantojot OpenID
config.enable_openid_signin=Iespējot OpenID autorizāciju
config.show_registration_button=Rādīt reģistrēšanās pogu

View File

@ -32,14 +32,16 @@ twofa_scratch=Eenmalige twee factor authenticatie code
passcode=PIN
u2f_insert_key=Uw beveiligingssleutel invoegen
u2f_sign_in=Druk op de knop op uw beveiligingssleutel. Als u een knop niet kunt vinden, deze opnieuw invoegen.
u2f_sign_in=Druk op de knop op uw beveiligingssleutel. Als u geen knop kunt vinden, voeg deze opnieuw in.
u2f_press_button=Druk op de knop op uw beveiligingssleutel…
u2f_use_twofa=Gebruik een twee-factor code van uw telefoon
u2f_error=Wij kunnen niet uw beveiligingssleutel lezen!
u2f_unsupported_browser=Uw browser geen ondersteund U2F keys. Probeer een andere browser.
u2f_error=Wij kunnen uw beveiligingssleutel niet lezen.
u2f_unsupported_browser=Uw browser ondersteunt geen U2F beveiligingssleutels.
u2f_error_1=Er is een onbekende fout opgetreden. Probeer het opnieuw.
u2f_error_2=Zorg voor een versleutelde verbinding (https://) en een bezoek aan de juiste URL.
u2f_error_3=De server kan uw aanvraag niet verhandelen.
u2f_error_2=Zorg ervoor dat u de juiste URL (https://) gebruikt.
u2f_error_3=De server kan uw aanvraag niet verwerken.
u2f_error_4=De beveiligingssleutel is niet toegestaan voor dit verzoek. Gelieve ervoor te zorgen dat de sleutel niet al is geregistreerd.
u2f_error_5=Timeout bereikt voordat uw sleutel kon worden gelezen. Gelieve deze pagina opnieuw laden en probeer opnieuw.
u2f_reload=Herladen
repository=Repository
@ -51,9 +53,11 @@ new_mirror=Nieuwe kopie
new_fork=Nieuwe Repository Fork
new_org=Nieuwe organisatie
manage_org=Beheer organisaties
admin_panel=Website Administratie
account_settings=Accountinstellingen
settings=Instellingen
your_profile=Profiel
your_starred=Favoriet
your_settings=Instellingen
all=Alles
@ -71,7 +75,7 @@ cancel=Annuleren
[install]
install=Installatie
title=Initiële configuratie
docker_helper=Als u gebruik maakt van Gitea in Docker, lees dan de <a target="_blank" rel="noopener" href="%s">documentatie</a> voordat u iets verandert op deze pagina.
docker_helper=Als je gitea draait in Docker, Lees eerst de <a target="_blank" rel="noopener noreferrer" href="%s">documentatie</a> voordat je een instelling aanpast.
requite_db_desc=Gitea vereist MySQL, PostgreSQL, MSSQL, SQLite3 of TiDB.
db_title=Database-instellingen
db_type=Database-type
@ -79,32 +83,65 @@ host=Server
user=Gebruikersnaam
password=Wachtwoord
db_name=Database naam
db_helper=Opmerking voor MySQL-gebruikers: gebruik het InnoDB opslagsysteem en de "utf8_general_ci" tekenset.
ssl_mode=SSL
path=Pad
sqlite_helper=Bestandspad voor de SQLite3 of TiDB database.<br>Vul een volledig pad in als je Gitea als een service runt.
err_empty_db_path=Het SQLite3 of TiDB database pad mag niet leeg zijn.
err_invalid_tidb_name=De naam van de database van de TiDB mag geen '.' en '-' tekens bevatten.
no_admin_and_disable_registration=U kunt zelf-registratie van de gebruiker niet uitschakelen zonder het maken van een administrator-account.
err_empty_admin_password=Het administrator-wachtwoord mag niet leeg zijn.
general_title=Algemene Instellingen
app_name=Naam site
app_name_helper=U kan de naam van uw bedrijf hier invullen.
repo_path=Repositories basis map
repo_path_helper=Externe git repositories worden opgeslagen in deze map.
lfs_path=Git LFS root pad
lfs_path_helper=Bestanden bijgehouden door Git LFS zullenworden opgeslagen in deze map. Laat leeg om uit te schakelen.
run_user=Uitvoeren als gebruiker
run_user_helper=Geef de gebruikersnaam van het besturingssysteem waarop Gitea wordt uitgevoerd. Realiseer u dat deze gebruiker toegang tot het pad van de hoofdmap moet hebben.
domain=SSH server-domein
domain_helper=Domein of ip-adres voor SSH kloon URLs.
ssh_port=SSH server-poort
ssh_port_helper=Nummer van de poort die uw SSH-server gebruikt. Laat dit veld leeg om de SSH functie uit te schakelen.
http_port=Gitea HTTP-poort
http_port_helper=De poort waar de web server van Gitea naar gaat luisteren.
app_url=Gitea base URL
app_url_helper=Basisadres voor HTTP(S) kloon URL's en e-mailmeldingen.
log_root_path=Log-pad
log_root_path_helper=Logboekbestanden worden geschreven naar deze map.
optional_title=Optionele instellingen
email_title=E-mail instellingen
smtp_host=SMTP host
smtp_from=E-mails versturen als
smtp_from_helper=E-mailadres dat Gitea gaat gebruiken. Voer een gewoon e-mailadres in of gebruik de "Naam" <email@example.com> -indeling.
mailer_user=SMTP gebruikersnaam
mailer_password=SMTP wachtwoord
register_confirm=E-mailbevestiging vereist bij registreren
mail_notify=Activeer e-mailnotificaties
server_service_title=Server en Third-Party Service-instellingen
offline_mode=Lokale modus inschakelen
offline_mode_popup=Schakel third-party content uit en gebruik alleen lokale middelen.
disable_gravatar=Gravatar uitschakelen
disable_gravatar_popup=Gravatar en derden avatar bronnen uitschakelen. Een standaard avatar zal worden gebruikt, tenzij een gebruiker een lokale avatar uploadt.
federated_avatar_lookup=Federated Avatars toestaan
federated_avatar_lookup_popup=Enable federated avatars lookup to use federated open source service based on libravatar.
disable_registration=Schakel zelf registratie uit
disable_registration_popup=Schakel zelfregistratie uit, alleen admins kunnen accounts maken.
openid_signin=OpenID-inloggen inschakelen
enable_captcha_popup=Vereis captcha validatie voor zelf-registratie van gebruiker.
admin_name=Admin gebruikersnaam
admin_password=Wachtwoord
confirm_password=Verifieer wachtwoord
admin_email=E-mail adres
install_btn_confirm=Installeer Gitea
test_git_failed=Git test niet gelukt: 'git' commando %v
invalid_db_setting=De database instelling zijn niet correct: %v
save_config_failed=Kan de configuratie niet opslaan: %v
invalid_log_root_path=Ongeldig log-pad: %v
default_keep_email_private=Verberg standaard alle e-mailadressen
[home]
password_holder=Wachtwoord
@ -146,6 +183,7 @@ scratch_code=Eenmalige code
use_scratch_code=Gebruik een eenmalige code
twofa_scratch_used=Je hebt je eenmalige code gebruikt. Je wordt omgeleid naar de tweeledige-authenticatie instellingen pagina zodat je de inschrijving van het apparaat kan verwijderen of een nieuwe eenmalige code kan genereren.
twofa_scratch_token_incorrect=Je eenmalige code is onjuist.
login_userpass=Inloggen
login_openid=OpenID
openid_connect_submit=Verbinden
openid_connect_title=Verbind met een bestaand account
@ -161,6 +199,7 @@ register_notify=Welkom bij Gitea
[modal]
yes=Ja
no=Nee
modify=Update
[form]
UserName=Gebruikersnaam
@ -200,6 +239,7 @@ auth_failed=Verificatie mislukt: %v
target_branch_not_exist=Doel branch bestaat niet
[user]
change_avatar=Wijzig je profielfoto…
join_on=Aangemeld op
repositories=repositories
activity=Openbare activiteit
@ -212,14 +252,17 @@ form.name_reserved=De gebruikersnaam '%s' is gereserveerd.
[settings]
profile=Profiel
account=Account
password=Wachtwoord
security=Beveiliging
avatar=Profielfoto
ssh_gpg_keys=SSH / GPG sleutels
social=Sociale netwerk-accounts
orgs=Beheer organisaties
repos=Repositories
delete=Verwijder account
twofa=Twee factor authenticatie
organization=Orgranisaties
uid=uid
public_profile=Openbaar profiel
@ -231,19 +274,27 @@ update_profile_success=Je profiel is bijgewerkt.
change_username=Je gebruikersnaam is gewijzigd.
continue=Doorgaan
cancel=Annuleren
language=Taal
federated_avatar_lookup=Gefedereerde Avatars inschakelen
enable_custom_avatar=Aangepaste avatar inschakelen
choose_new_avatar=Kies een nieuwe avatar
update_avatar=Update Avatar
delete_current_avatar=Verwijder huidige avatar
change_password=Wachtwoord bijwerken
old_password=Huidige wachtwoord
new_password=Nieuw wachtwoord
retype_new_password=Herhaal Nieuw Wachtwoord
emails=E-mailadressen
email_desc=Uw primaire e-mailadres zal worden gebruikt voor meldingen en andere administratieve taken.
primary=Primair
delete_email=Verwijder
email_deletion=Verwijder e-mailadres
add_new_email=Nieuw e-mailadres toevoegen
add_openid=Voeg OpenID URL toe
keep_email_private=Verberg e-mailadres
manage_ssh_keys=Beheer SSH sleutels
manage_gpg_keys=Beheer GPG sleutels
@ -256,6 +307,7 @@ subkeys=Subkeys
key_id=Key-ID
key_name=Sleutel naam
key_content=Inhoud
delete_key=Verwijder
add_on=Toegevoegd op
valid_until=Geldig tot en met
valid_forever=Voor altijd geldig
@ -281,6 +333,7 @@ twofa_disabled=Two-factor authenticatie is uitgeschakeld.
scan_this_image=Scan deze afbeelding met je authenticatie applicatie:
or_enter_secret=Of voer deze geheime code in: %s
u2f_nickname=Gebruikersnaam
orgs_none=U bent geen lid van een organisatie.
@ -288,6 +341,7 @@ repos_none=U bezit geen repositories
delete_account=Verwijder uw account
confirm_delete_account=Bevestig verwijdering
delete_account_title=Verwijder gebruikers account
[repo]
owner=Eigenaar
@ -325,6 +379,7 @@ watch=Volgen
unstar=Ontster
star=Ster
fork=Vork
download_archive=Download repository
no_desc=Geen omschrijving
quick_guide=Snelstart gids
@ -351,10 +406,17 @@ file_history=Geschiedenis
file_view_raw=Weergave ruw bestand
file_permalink=Permalink
stored_lfs=Opgeslagen met Git LFS
commit_graph=Commit grafiek
editor.new_file=Nieuw bestand
editor.upload_file=Upload bestand
editor.edit_file=Bewerk bestand
editor.preview_changes=Voorbeeld tonen
editor.edit_this_file=Bewerk bestand
editor.delete_this_file=Verwijder bestand
editor.name_your_file=Bestandsnaam…
editor.or=of
editor.cancel_lower=Annuleer
editor.commit_changes=Wijzigingen doorvoeren
editor.add_tmpl='%s/<filename>' toevoegen
editor.add='%s' toevoegen
@ -370,7 +432,9 @@ editor.fail_to_update_file=Update/maken van bestand '%s' is mislukt: %v
editor.upload_files_to_dir=Bestanden uploaden naar '%s'
commits.commits=Commits
commits.search=Zoek commits…
commits.find=Zoek
commits.search_all=Alle branches
commits.author=Auteur
commits.message=Bericht
commits.date=Datum
@ -391,9 +455,12 @@ issues.new.closed_milestone=Gesloten mijlpalen
issues.no_ref=Geen Branch/Tag gespecificeerd
issues.create=Maak probleem
issues.new_label=Nieuw Label
issues.new_label_placeholder=Labelnaam
issues.new_label_desc_placeholder=Beschrijving
issues.create_label=Maak label
issues.label_templates.title=Laad een vooraf gedefinieerde set labels
issues.label_templates.helper=Selecteer een labelset
issues.label_templates.use=Label Set gebruiken
issues.change_milestone_at='mijlpaal bewerkt van <b>%s</b> <b>%s</b> %s'
issues.remove_milestone_at=' %s is verwijderd uit de <b>%s</b> mijlpaal'
issues.deleted_milestone=` (verwijderd)`
@ -402,6 +469,7 @@ issues.change_title_at='titel aangepast van <b>%s</b> naar <b>%s</b> %s'
issues.open_tab=%d Open
issues.close_tab=%d gesloten
issues.filter_label=Label
issues.filter_label_no_select=Alle labels
issues.filter_milestone=Mijlpaal
issues.filter_assignee=Aangewezene
issues.filter_type=Type
@ -435,6 +503,7 @@ issues.delete_comment_confirm=Weet u zeker dat u deze reactie wilt verwijderen?
issues.no_content=Er is nog geen inhoud.
issues.close_issue=Sluit
issues.reopen_issue=Heropen
issues.reopen_comment_issue=Heropen en geef commentaar
issues.create_comment=Reageer
issues.closed_at=`gesloten om <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.reopened_at=`heropend om <a id="%[1]s" href="#%[1]s">%[2]s</a>`
@ -451,6 +520,8 @@ issues.label_count=%d labels
issues.label_open_issues=%d geopende problemen
issues.label_edit=Bewerken
issues.label_delete=Verwijder
issues.label_modify=Label bewerken
issues.label_deletion=Verwijder label
issues.label.filter_sort.alphabetically=Alfabetisch
issues.label.filter_sort.reverse_alphabetically=Omgekeerd alfabetisch
issues.label.filter_sort.by_size=Grootte
@ -465,6 +536,7 @@ issues.start_tracking_history=`%s is begonnen`
issues.tracking_already_started=Je houd al tijd bij voor dit <a href="%s">issue</a>!`
issues.stop_tracking=Stop
issues.stop_tracking_history=`gestopt met werken aan %s`
issues.add_time_short=Timer toevoegen
issues.add_time_cancel=Annuleren
issues.add_time_history=`heeft besteedde tijd toegevoegd: %s`
issues.add_time_hours=Uren
@ -480,6 +552,7 @@ pulls.title_desc=wil %[1]d commits van <code>%[2]s</code> samenvoegen met <code>
pulls.merged_title_desc=heeft %[1]d commits samengevoegd van <code>%[2]s</code> naar <code>%[3]s</code> %[4]s
pulls.tab_conversation=Discussie
pulls.tab_commits=Commits
pulls.tab_files=Bestanden gewijzigd
pulls.reopen_to_merge=Heropen dit pull request aub om een een merge actie uit te voeren.
pulls.merged=Samengevoegd
pulls.can_auto_merge_desc=Dit pull-request kan automatisch samengevoegd worden.
@ -510,6 +583,7 @@ milestones.filter_sort.least_issues=Minste problemen
wiki=Wiki
wiki.page=Pagina
wiki.filter_page=Filter pagina
wiki.new_page=Pagina
wiki.default_commit_message=Schrijf een notitie over deze aanpassing (optioneel).
wiki.save_page=Pagina opslaan
wiki.last_commit_info=%s heeft deze pagina aangepast %s
@ -558,6 +632,8 @@ search.search_repo=Zoek repository
search.results=Zoek resultaat voor "%s" in <a href="%s">%s</a>
settings=Instellingen
settings.options=Repository
settings.collaboration.admin=Beheerder
settings.collaboration.write=Schrijf
settings.collaboration.read=Lees
settings.collaboration.undefined=Ongedefinieerd
@ -565,6 +641,7 @@ settings.hooks=Webhooks
settings.githooks=Git-hooks
settings.basic_settings=Basis instellingen
settings.mirror_settings=Kopie Settings
settings.site=Website
settings.update_settings=Instellingen bewerken
settings.advanced_settings=Geavanceerde opties
settings.external_wiki_url=Externe wiki-URL
@ -573,28 +650,38 @@ settings.tracker_issue_style.numeric=Nummeriek
settings.tracker_issue_style.alphanumeric=Alfanummeriek
settings.danger_zone=Gevaren zone
settings.new_owner_has_same_repo=De nieuwe eigenaar heeft al een repository met deze naam
settings.convert_confirm=Converteer Repository
settings.transfer=Eigendom overdragen
settings.delete=Verwijder deze repository
settings.delete_notices_1=- Deze bewerking kan <strong>NIET</strong> ongedaan gemaakt worden.
settings.transfer_owner=Nieuwe eigenaar
settings.confirm_delete=Verwijder repository
settings.delete_collaborator=Verwijder
settings.search_user_placeholder=Zoek gebruiker…
settings.add_webhook=Webhook toevoegen
settings.webhook.test_delivery=Test-bezorging
settings.webhook.request=Verzoek
settings.webhook.response=Antwoord
settings.webhook.headers=Headers
settings.webhook.payload=Inhoud
settings.webhook.body=Inhoud
settings.githook_edit_desc=Als haak niet actief is, zal monster inhoud worden gepresenteerd. Verlof inhoud leeg zal deze haak uitschakelen.
settings.githook_name=Haak naam
settings.githook_content=Haak inhoud
settings.update_githook=Haak bijwerken
settings.payload_url=Doel URL
settings.secret=Geheim
settings.slack_username=Gebruikersnaam
settings.slack_icon_url=Icoon URL
settings.discord_username=Gebruikersnaam
settings.discord_icon_url=Icoon URL
settings.slack_color=Kleur
settings.event_send_everything=Alle gebeurtenissen
settings.event_create=Creëer
settings.event_delete=Verwijder
settings.event_fork=Fork
settings.event_fork_desc=Repository geforked
settings.event_release=Release
settings.event_pull_request=Pull request
settings.event_push=Push
settings.event_repository=Repository
@ -606,12 +693,15 @@ settings.slack_domain=Slack domein
settings.slack_channel=Slack kanaal
settings.deploy_keys=Installeer sleutels
settings.add_deploy_key=Toevoegen deploy sleutel
settings.is_writable=Schrijf toegang inschakelen
settings.title=Titel
settings.deploy_key_content=Inhoud
settings.branches=Branches
settings.protected_branch=Branch bescherming
settings.protected_branch_can_push=Push toestaan?
settings.protected_branch_can_push_no=U mag niet pushen
settings.protect_whitelist_search_users=Zoek gebruiker…
settings.protect_whitelist_search_teams=Zoek teams…
settings.add_protected_branch=Bescherming aanzetten
settings.delete_protected_branch=Bescherming uitzetten
settings.choose_branch=Kies een branch…
@ -646,15 +736,20 @@ release.loading=Laden…
release.cancel=Annuleren
release.publish=Release publiceren
release.save_draft=Concept opslaan
release.deletion=Verwijder release
release.downloads=Downloads
branch.name=Branch naam
branch.search=Zoek branches
branch.delete_head=Verwijder
branch.delete=Verwijder branch '%s'
branch.delete_html=Verwijder branch
branch.create_branch=Maak branch <strong>%s</strong>
branch.create_from=van '%s'
branch.deleted_by=Verwijderd door %s
topic.manage_topics=Beheer topics
topic.done=Klaar
[org]
org_name_holder=Organisatienaam
@ -670,9 +765,11 @@ create_team=Maak team
org_desc=Omschrijving
team_name=Teamnaam
team_desc=Omschrijving
team_permission_desc=Machtiging
settings=Instellingen
settings.options=Organisatie
settings.full_name=Volledige naam
settings.website=Website
settings.location=Locatie
@ -681,8 +778,12 @@ settings.update_setting_success=Organisatie instellingen zijn succesvol bijgewer
settings.delete=Verwijder organisatie
settings.delete_account=Verwijder deze organisatie
settings.confirm_delete_account=Bevestig verwijdering
settings.delete_org_title=Verwijder organisatie
members.membership_visibility=Zichtbaarheid lidmaatschap:
members.public=Zichtbaar
members.private=Verborgen
members.private_helper=maak zichtbaar
members.member_role=Rol van lid:
members.owner=Eigenaar
members.member=Lid
@ -699,7 +800,9 @@ teams.no_desc=Dit team heeft geen omschrijving
teams.settings=Instellingen
teams.members=Team leden
teams.update_settings=Instellingen bijwerken
teams.delete_team=Verwijder team
teams.add_team_member=Nieuwe team lid aanmaken
teams.delete_team_title=Verwijder team
teams.delete_team_success=Het team is verwijderd.
teams.repositories=Teamrepositories
teams.search_repo_placeholder=Repository zoeken…
@ -709,6 +812,7 @@ teams.add_nonexistent_repo=De opslagplaats die u probeert toe te voegen bestaat
[admin]
dashboard=Overzicht
users=Gebruikersacount
organizations=Organisaties
repositories=Repositories
config=Configuratie
@ -718,11 +822,11 @@ first_page=Eerste
last_page=Laatste
total=Totaal: %d
dashboard.statistic=Overzicht
dashboard.system_status=Systeemtatus
dashboard.operation_name=Bewerking naam
dashboard.operation_switch=Omschakelen
dashboard.operation_run=Uitvoeren
dashboard.delete_inactivate_accounts=Verwijder alle inactieve accounts
dashboard.delete_inactivate_accounts_success=Alle inactieve accounts zijn verwijderd.
dashboard.sync_external_users=Externe gebruikersgegevens synchroniseren
dashboard.server_uptime=Uptime server
dashboard.current_goroutine=Huidige Goroutines
@ -752,14 +856,18 @@ dashboard.total_gc_pause=Totaal GC verwerkingstijd
dashboard.last_gc_pause=Laatste GC verwerkingstijd
dashboard.gc_times=GC verwerkingen
users.new_account=Nieuw account aanmaken
users.name=Gebruikersnaam
users.activated=Geactiveerd
users.admin=Beheerder
users.repos=Repos
users.created=Aangemaakt
users.last_login=Laatste keer ingelogd
users.edit=Bewerken
users.auth_source=Authenticatiebron
users.local=Lokaal
users.update_profile=Update gebruikers account
users.delete_account=Verwijder gebruikers account
orgs.org_manage_panel=Organisaties beheren
orgs.name=Naam
@ -772,6 +880,7 @@ repos.name=Naam
repos.private=Prive
repos.watches=Volgers
repos.stars=Sterren
repos.forks=Forks
repos.issues=Kwesties
repos.size=Grootte
@ -787,6 +896,8 @@ auths.host=Host
auths.port=Poort
auths.bind_dn=Binden DN
auths.bind_password=Bind wachtwoord
auths.attribute_username=Gebruikersnaam attribuut
auths.search_page_size=Paginagrootte
auths.filter=Gebruikersfilter
auths.admin_filter=Beheerdersfilter
auths.smtp_auth=SMTP-authenticatietype
@ -804,12 +915,16 @@ auths.enable_auto_register=Activeer automatische registratie
auths.tips=Tips
config.server_config=Serverconfiguratie
config.app_name=Naam site
config.app_ver=Gitea versie
config.app_url=Gitea basis URL
config.disable_router_log=Router-log uitschakelen
config.run_mode=Uitvoer modus
config.git_version=Git versie
config.repo_root_path=Repository basis pad
config.lfs_root_path=LFS rootpad
config.static_file_root_path=Statische bestanden basis pad
config.log_file_root_path=Log-pad
config.script_type=Script type
config.reverse_auth_user=Omgekeerde verificatie gebruiker
@ -828,6 +943,7 @@ config.db_type=Type
config.db_host=Host
config.db_name=Naam
config.db_user=Gebruikersnaam
config.db_ssl_mode=SSL
config.db_path=Pad
config.service_config=Serviceconfiguratie
@ -846,6 +962,7 @@ config.mailer_host=Host
config.mailer_user=Gebruiker
config.mailer_use_sendmail=Gebruik Sendmail
config.mailer_sendmail_path=Sendmail pad
config.send_test_mail=Test e-mail verzenden
config.oauth_config=OAuth-configuratie
config.oauth_enabled=Ingeschakeld

View File

@ -832,8 +832,6 @@ dashboard.operation_switch=Przełącz
dashboard.operation_run=Uruchom
dashboard.clean_unbind_oauth=Usuń wychodzące połączenia OAuth
dashboard.clean_unbind_oauth_success=Wszystkie połączenia wychodzące OAuth zostały usunięte.
dashboard.delete_inactivate_accounts=Usuń wszystkie nieaktywne konta
dashboard.delete_inactivate_accounts_success=Wszystkie nieaktywne konta zostały usunięte.
dashboard.reinit_missing_repos=Ponownie zainicjalizuj wszystkie brakujące repozytoria Git, dla których istnieją rekordy
dashboard.reinit_missing_repos_success=Wszystkie brakujące repozytoria Git, dla których istnieją rekordy, zostały zainicjalizowane.
dashboard.sync_external_users=Synchronizuj zewnętrzne dane użytkownika

View File

@ -32,16 +32,16 @@ twofa_scratch=Código de backup da autenticação de dois fatores
passcode=Senha
u2f_insert_key=Insira sua chave de segurança
u2f_sign_in=Pressione o botão na sua chave de segurança. Se você não encontrar um botão, insira-o novamente.
u2f_sign_in=Pressione o botão na sua chave de segurança. Se a sua chave de segurança não tiver um botão, insira-a novamente.
u2f_press_button=Por favor, pressione o botão na sua chave de segurança...
u2f_use_twofa=Use um código de dois fatores no seu telefone
u2f_error=Não conseguimos ler sua chave de segurança!
u2f_unsupported_browser=Seu navegador não suporta chaves U2F. Por favor, tente outro navegador.
u2f_error=Não foi possível ler sua chave de segurança.
u2f_unsupported_browser=Seu navegador não suporta chaves de segurança U2F.
u2f_error_1=Ocorreu um erro desconhecido. Por favor, tente novamente.
u2f_error_2=Por favor, certifique-se de que você está usando uma conexão criptografada (https://) e visite a URL correta.
u2f_error_3=O servidor não pôde prosseguir com sua solicitação.
u2f_error_4=A chave apresentada não é elegível para esta solicitação. Se você tentar registrá-la, certifique-se de que a chave já não é registrada.
u2f_error_5=Tempo limite atingido antes de sua chave poder ser lida. Por favor, recarregue para tentar novamente.
u2f_error_2=Por favor, certifique-se de usar a URL correto, criptografado (https://).
u2f_error_3=O servidor não pôde processar sua solicitação.
u2f_error_4=A chave de segurança não é permitida para esta solicitação. Por favor, certifique-se que a chave já não está registrada.
u2f_error_5=Tempo limite atingido antes de sua chave poder ser lida. Por favor, recarregue esta página e tente novamente.
u2f_reload=Recarregar
repository=Repositório
@ -53,7 +53,7 @@ new_mirror=Novo mirror
new_fork=Novo Fork de Repositório
new_org=Nova organização
manage_org=Gerenciar organizações
admin_panel=Administração do site
admin_panel=Administração geral
account_settings=Configurações da conta
settings=Configurações
your_profile=Perfil
@ -75,7 +75,7 @@ cancel=Cancelar
[install]
install=Instalação
title=Configuração inicial
docker_helper=Se você está rodando o Gitea dentro do Docker, por favor leia a <a target="_blank" rel="noopener" href="%s">documentação</a> cuidadosamente antes de alterar qualquer coisa nesta página.
docker_helper=Se você está rodando o Gitea dentro do Docker, por favor leia a <a target="_blank" rel="noopener noreferrer" href="%s">documentação</a> cuidadosamente antes de alterar qualquer coisa nesta página.
requite_db_desc=Gitea requer MySQL, PostgreSQL, MSSQL, SQLite3 ou TiDB.
db_title=Configurações de banco de dados
db_type=Tipo de banco de dados
@ -93,7 +93,7 @@ no_admin_and_disable_registration=Você não pode desabilitar o auto-cadastro do
err_empty_admin_password=A senha do administrador não pode ser em branco.
general_title=Configurações gerais
app_name=Título do site
app_name=Nome do servidor
app_name_helper=Você pode inserir o nome da empresa aqui.
repo_path=Caminho raíz do repositório
repo_path_helper=Todos os repositórios remotos do Git serão salvos neste diretório.
@ -130,7 +130,7 @@ federated_avatar_lookup=Habilitar avatares federativos
federated_avatar_lookup_popup=Habilitar a busca federativa de avatares a usar o serviço federativo de código aberto baseado no libravatar.
disable_registration=Desabilitar auto-cadastro
disable_registration_popup=Desabilitar auto-cadastro de usuário. Somente os administradores serão capazes de criar novas contas de usuário.
allow_only_external_registration_popup=Habilitar o cadastro apenas por meio de serviços externos.
allow_only_external_registration_popup=Permitir cadastro somente por meio de serviços externos
openid_signin=Habilitar acesso via OpenID
openid_signin_popup=Habilitar o acesso de usuários via OpenID.
openid_signup=Habilitar o auto-cadastro via OpenID
@ -463,13 +463,13 @@ then_enter_passcode=E insira a senha mostrada no aplicativo:
passcode_invalid=Esse código de acesso é inválido. Tente novamente.
twofa_enrolled=Sua conta foi inscrita na autenticação de dois fatores. Armazene seu token de backup (%s) em um local seguro, pois ele é exibido apenas uma vez!
u2f_desc=Chaves de segurança são dispositivos de hardware que contém chaves de criptografia. Elas podem ser usadas para autenticação de dois fatores. A chave de segurança deve suportar o padrão <a href="https://fidoalliance.org/">FIDO U2F</a>.
u2f_require_twofa=Autenticação de dois fatores deve estar inscrita para usar chaves de segurança.
u2f_desc=Chaves de segurança são dispositivos de hardware contendo chaves criptográficas. Eles podem ser usados para autenticação de dois fatores. As chaves de segurança devem suportar o padrão <a rel="noreferrer" href="https://fidoalliance.org/">FIDO U2F</a>.
u2f_require_twofa=Sua conta deve estar inscrita na autenticação de dois fatores para usar as chaves de segurança.
u2f_register_key=Adicionar chave de segurança
u2f_nickname=Apelido
u2f_press_button=Pressione o botão na sua chave de segurança para registrá-la.
u2f_delete_key=Remover chave de segurança
u2f_delete_key_desc=Se você remover uma chave de segurança você não poderá mais acessar com ela. Tem certeza?
u2f_delete_key_desc=Se você remover uma chave de segurança, não poderá mais entrar com ela. Continuar?
manage_account_links=Gerenciar contas vinculadas
manage_account_links_desc=Estas contas externas estão vinculadas a sua conta de Gitea.
@ -492,13 +492,13 @@ owner=Proprietário
repo_name=Nome do repositório
repo_name_helper=Um bom nome de repositório é composto por palavras curtas, memorizáveis e únicas.
visibility=Visibilidade
visiblity_helper=Tornar este repositório privado
visiblity_helper_forced=O administrador do site força novos repositórios a serem privados.
visiblity_fork_helper=(Esta alteração irá afetar todos os forks.)
clone_helper=Precisa de ajuda com o clone? Visite a <a target="_blank" rel="noopener" href="%s">Ajuda</a>.
visibility_helper=Tornar este repositório privado
visibility_helper_forced=O administrador do site força novos repositórios a serem privados.
visibility_fork_helper=(Esta alteração irá afetar todos os forks.)
clone_helper=Precisa de ajuda com o clone? Visite a <a target="_blank" rel="noopener noreferrer" href="%s">Ajuda</a>.
fork_repo=Fork do repositório
fork_from=Fork de
fork_visiblity_helper=A visibilidade do fork de um repositório não pode ser alterada.
fork_visibility_helper=A visibilidade do fork de um repositório não pode ser alterada.
repo_desc=Descrição
repo_lang=Linguagem
repo_gitignore_helper=Selecione modelos do .gitignore.
@ -597,7 +597,7 @@ editor.name_your_file=Nomeie o seu arquivo…
editor.filename_help=Adicione um diretório digitando seu nome seguido por uma barra ('/'). Remova um diretório digitando o backspace no início do campo de entrada.
editor.or=ou
editor.cancel_lower=Cancelar
editor.commit_changes=Confirmar alterações
editor.commit_changes=Realizar commit das alterações
editor.add_tmpl=Adicionar '%s/<filename>'
editor.add=Adicionar '%s'
editor.update=Atualizar '%s'
@ -613,7 +613,7 @@ editor.directory_is_a_file=O nome do diretório '%s' já é usado como um nome d
editor.file_is_a_symlink='%s' é um link simbólico. Links simbólicos não podem ser editados no editor da web
editor.filename_is_a_directory=O nome do arquivo '%s' já é usado como um nome de diretório neste repositório.
editor.file_editing_no_longer_exists=O arquivo que está sendo editado, '%s', não existe mais neste repositório.
editor.file_changed_while_editing=O conteúdo do arquivo mudou desde que você começou a editar. <a target="_blank" rel="noopener" href="%s">Clique aqui</a> para ver o que foi editado ou <strong>clique em Commit novamemente</strong> para sobreescrever essas mudanças.
editor.file_changed_while_editing=O conteúdo do arquivo mudou desde que você começou a editar. <a target="_blank" rel="noopener noreferrer" href="%s">Clique aqui</a> para ver o que foi editado ou <strong>clique em Commit novamemente</strong> para sobreescrever essas mudanças.
editor.file_already_exists=Um arquivo com nome '%s' já existe neste repositório.
editor.no_changes_to_show=Nenhuma alteração a mostrar.
editor.fail_to_update_file=Houve erro ao criar ou atualizar arquivo '%s': %v
@ -650,7 +650,7 @@ issues.new.open_milestone=Marcos abertos
issues.new.closed_milestone=Marcos fechados
issues.new.assignees=Responsáveis
issues.new.clear_assignees=Limpar responsáveis
issues.new.no_assignees=Nenhum responsável
issues.new.no_assignees=Sem responsável
issues.no_ref=Nenhum branch/tag especificado
issues.create=Criar issue
issues.new_label=Nova etiqueta
@ -682,7 +682,7 @@ issues.filter_milestone_no_select=Todos os marcos
issues.filter_assignee=Atribuído
issues.filter_assginee_no_select=Todos os responsáveis
issues.filter_type=Tipo
issues.filter_type.all_issues=Todos os issues
issues.filter_type.all_issues=Todas as issues
issues.filter_type.assigned_to_you=Atribuídos a você
issues.filter_type.created_by_you=Criado por você
issues.filter_type.mentioning_you=Mencionando você
@ -781,6 +781,33 @@ issues.due_date_added=adicionou a data limite %s %s
issues.due_date_modified=modificou a data limite para %s ao invés de %s %s
issues.due_date_remove=removeu a data limite %s %s
issues.due_date_overdue=Em atraso
issues.due_date_invalid=A data limite é inválida ou está fora do intervalo. Por favor, use o formato 'dd/mm/aaaa'.
issues.dependency.title=Dependências
issues.dependency.issue_no_dependencies=Esta issue atualmente não tem dependências.
issues.dependency.pr_no_dependencies=Este pull request atualmente não tem dependências.
issues.dependency.add=Adicione...
issues.dependency.cancel=Cancelar
issues.dependency.remove=Remover
issues.dependency.added_dependency=`<a href="%[1]s">%[2]s</a> adicionou uma nova dependência %[3]s`
issues.dependency.removed_dependency=`<a href="%[1]s">%[2]s</a> removeu uma dependência %[3]s`
issues.dependency.issue_closing_blockedby=Fechamento deste pull request está bloqueado pelas seguintes issues
issues.dependency.pr_closing_blockedby=Fechamento desta issue está bloqueado pelas seguintes issues
issues.dependency.issue_close_blocks=Esta issue bloqueia o fechamento das seguintes issues
issues.dependency.pr_close_blocks=Este pull request bloqueia o fechamento das seguintes issues
issues.dependency.issue_close_blocked=Você precisa fechar todas as issues que bloqueiam esta issue antes de poder fechá-la.
issues.dependency.pr_close_blocked=Você precisa fechar todas issues que bloqueiam este pull request antes de poder fazer o merge.
issues.dependency.blocks_short=Bloqueia
issues.dependency.blocked_by_short=Depende de
issues.dependency.remove_header=Remover dependência
issues.dependency.issue_remove_text=Isto removerá a dependência desta issue. Continuar?
issues.dependency.pr_remove_text=Isto removerá a dependência deste pull request. Continuar?
issues.dependency.setting=Habilitar dependências para issues e pull requests
issues.dependency.add_error_same_issue=Você não pode fazer uma issue depender de si mesma.
issues.dependency.add_error_dep_issue_not_exist=Issue dependente não existe.
issues.dependency.add_error_dep_not_exist=Dependência não existe.
issues.dependency.add_error_dep_exists=Dependência já existe.
issues.dependency.add_error_cannot_create_circular=Você não pode criar uma dependência com duas issues bloqueando uma a outra.
issues.dependency.add_error_dep_not_same_repo=Ambas as issues devem estar no mesmo repositório.
pulls.desc=Habilitar solicitações de merge e revisões de código.
pulls.new=Novo pull request
@ -793,7 +820,7 @@ pulls.no_results=Nada encontrado.
pulls.nothing_to_compare=Estes branches são iguais. Não há nenhuma necessidade para criar um pull request.
pulls.has_pull_request=`Um pull request entre esses branches já existe: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Criar pull request
pulls.title_desc=quer mesclar %[1]d commits de <code>%[2]s</code> em <code>%[3]s</code>
pulls.title_desc=quer realizar o merge de %[1]d commits de <code>%[2]s</code> em <code>%[3]s</code>
pulls.merged_title_desc=fez merge dos %[1]d commits de <code>%[2]s</code> em <code>%[3]s</code> %[4]s
pulls.tab_conversation=Conversação
pulls.tab_commits=Commits
@ -818,14 +845,14 @@ milestones.new=Novo marco
milestones.open_tab=%d Aberto
milestones.close_tab=%d Fechado
milestones.closed=Fechado %s
milestones.no_due_date=Sem prazo
milestones.no_due_date=Sem data limite
milestones.open=Reabrir
milestones.close=Fechar
milestones.new_subheader=Marcos organizam as issues e acompanham o progresso.
milestones.create=Criar marco
milestones.title=Título
milestones.desc=Descrição
milestones.due_date=Prazo (opcional)
milestones.due_date=Data limite (opcional)
milestones.clear=Limpar
milestones.invalid_due_date_format=Formato da data limite deve ser 'dd/mm/aaaa'.
milestones.create_success=O marco '%s' foi criado.
@ -837,8 +864,8 @@ milestones.edit_success=O marco '%s' foi atualizado.
milestones.deletion=Excluir marco
milestones.deletion_desc=A exclusão deste marco irá removê-lo de todas as issues. Tem certeza que deseja continuar?
milestones.deletion_success=O marco foi excluído.
milestones.filter_sort.closest_due_date=Prazo mais próximo
milestones.filter_sort.furthest_due_date=Prazo mais longe
milestones.filter_sort.closest_due_date=Data limite mais próxima
milestones.filter_sort.furthest_due_date=Data limite mais distante
milestones.filter_sort.least_complete=Menos completo
milestones.filter_sort.most_complete=Mais completo
milestones.filter_sort.most_issues=Com mais issues
@ -894,15 +921,15 @@ activity.closed_issues_count_1=Issue fechada
activity.closed_issues_count_n=Issues fechadas
activity.title.issues_1=+%d Issue
activity.title.issues_n=+%d Issues
activity.title.issues_closed_by=%s fechado por %s
activity.title.issues_created_by=%s criado por %s
activity.title.issues_closed_by=%s fechada por %s
activity.title.issues_created_by=%s criada por %s
activity.closed_issue_label=Fechado
activity.new_issues_count_1=Nova issue
activity.new_issues_count_n=Novas issues
activity.new_issue_label=Aberto
activity.title.unresolved_conv_1=%d conversa não resolvida
activity.title.unresolved_conv_n=%d conversas não resolvidas
activity.unresolved_conv_desc=Estes problemas foram recentemente alterados e pull requests ainda não foram resolvidos.
activity.unresolved_conv_desc=Estas issues foram recentemente alteradas e pull requests ainda não foram resolvidos.
activity.unresolved_conv_label=Abrir
activity.title.releases_1=%d Versão
activity.title.releases_n=%d Versões
@ -975,7 +1002,7 @@ settings.confirm_wiki_delete=Excluir dados da wiki
settings.wiki_deletion_success=Os dados da wiki do repositório foi excluídos.
settings.delete=Excluir este repositório
settings.delete_desc=A exclusão de um repositório é permanente e não pode ser desfeita.
settings.delete_notices_1=-Esta operação <strong>NÃO PODERÁ</strong> ser desfeita.
settings.delete_notices_1=- Esta operação <strong>NÃO PODERÁ</strong> ser desfeita.
settings.delete_notices_2=- Essa operação excluirá permanentemente o repositório <strong>%s</strong>, incluindo código, issues, comentários, dados da wiki e configurações do colaborador.
settings.delete_notices_fork_1=- Forks deste repositório se tornarão independentes após a exclusão.
settings.deletion_success=O repositório foi excluído.
@ -994,7 +1021,7 @@ settings.search_user_placeholder=Pesquisar usuário...
settings.org_not_allowed_to_be_collaborator=Organizações não podem ser adicionadas como um colaborador.
settings.user_is_org_member=O usuário é um membro da organização e não pode ser adicionado como um colaborador.
settings.add_webhook=Adicionar webhook
settings.hooks_desc=Webhooks automaticamente fazem requisições de HTTP POST para um servidor quando acionados determinados eventos de Gitea. Leia mais no <a target="_blank" rel="noopener" href="%s">guia de webhooks</a>.
settings.hooks_desc=Webhooks automaticamente fazem requisições de HTTP POST para um servidor quando acionados determinados eventos de Gitea. Leia mais no <a target="_blank" rel="noopener noreferrer" href="%s">guia de webhooks</a>.
settings.webhook_deletion=Remover webhook
settings.webhook_deletion_desc=A exclusão de um webhook exclui suas configurações e o histórico de entrega. Continuar?
settings.webhook_deletion_success=O webhook foi removido.
@ -1011,7 +1038,7 @@ settings.githook_edit_desc=Se o hook não estiver ativo, o conteúdo de exemplo
settings.githook_name=Nome do Hook
settings.githook_content=Conteúdo do Hook
settings.update_githook=Atualizar Hook
settings.add_webhook_desc=Gitea enviará requisições <code>POST</code> com um tipo de conteúdo especificado para a URL de destino. Leia mais no <a target="_blank" rel="noopener" href="%s">guia de webhooks</a>.
settings.add_webhook_desc=Gitea enviará requisições <code>POST</code> com um tipo de conteúdo especificado para a URL de destino. Leia mais no <a target="_blank" rel="noopener noreferrer" href="%s">guia de webhooks</a>.
settings.payload_url=URL de destino
settings.content_type=Tipo de conteúdo POST
settings.secret=Senha
@ -1078,16 +1105,16 @@ settings.protected_branch_can_push_no=Você não pode fazer push
settings.branch_protection=Proteção de branch para '<b>%s</b>'
settings.protect_this_branch=Habilitar proteção de branch
settings.protect_this_branch_desc=Evitar exclusão e desabilitar Git force pushing para o branch.
settings.protect_whitelist_committers=Habilitar lista branca de push
settings.protect_whitelist_committers_desc=Permitir que usuários ou equipes da lista branca possam contornar restrições de push.
settings.protect_whitelist_users=Usuários da lista branca permitidos para realizar push:
settings.protect_whitelist_committers=Habilitar controle de permissão de push
settings.protect_whitelist_committers_desc=Permitir que determinados usuários ou equipes possam realizar push.
settings.protect_whitelist_users=Usuários com permissão para realizar push:
settings.protect_whitelist_search_users=Pesquisar usuários...
settings.protect_whitelist_teams=Equipes da lista branca permitidos para realizar push:
settings.protect_whitelist_teams=Equipes com permissão para realizar push:
settings.protect_whitelist_search_teams=Pesquisar equipes...
settings.protect_merge_whitelist_committers=Habilitar lista branca de merge
settings.protect_merge_whitelist_committers_desc=Permitir que somente usuários ou equipes que estão na lista branca façam merge de pull requests neste branch.
settings.protect_merge_whitelist_users=Usuários da lista branca permitidos para realizar merge:
settings.protect_merge_whitelist_teams=Times da lista branca permitidos para realizar merge:
settings.protect_merge_whitelist_committers=Habilitar controle de permissão de merge
settings.protect_merge_whitelist_committers_desc=Permitir que determinados usuários ou equipes possam realizar merge de pull requests neste branch.
settings.protect_merge_whitelist_users=Usuários com permissão para realizar merge:
settings.protect_merge_whitelist_teams=Equipes com permissão para realizar merge:
settings.add_protected_branch=Habilitar proteção
settings.delete_protected_branch=Desabilitar proteção
settings.update_protect_branch_success=Proteção do branch '%s' foi atualizada.
@ -1097,6 +1124,7 @@ settings.protected_branch_deletion_desc=Desabilitar a proteção de branch permi
settings.default_branch_desc=Selecione um branch padrão para pull requests e commits de código:
settings.choose_branch=Escolha um branch...
settings.no_protected_branch=Não há branches protegidos.
settings.edit_protected_branch=Editar
diff.browse_source=Ver código fonte
diff.parent=pai
@ -1168,7 +1196,7 @@ branch.protected_deletion_failed=A branch '%s' está protegida. Ela não pode se
topic.manage_topics=Gerenciar Tópicos
topic.done=Feito
topic.count_prompt=Você não pode selecionar mais de 25 tópicos
topic.format_prompt=Tópicos devem começar com uma letra ou um número, podem incluir hífens (-) e não devem ter mais de 35 caracteres
topic.format_prompt=Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
[org]
org_name_holder=Nome da organização
@ -1273,8 +1301,8 @@ dashboard.operation_switch=Trocar
dashboard.operation_run=Executar
dashboard.clean_unbind_oauth=Limpar conexões OAuth não vinculadas
dashboard.clean_unbind_oauth_success=Todas as conexões de OAuth não vinculadas foram excluídas.
dashboard.delete_inactivate_accounts=Excluir todas as contas inativas
dashboard.delete_inactivate_accounts_success=Todas as contas inativas foram excluídas.
dashboard.delete_inactivate_accounts=Excluir todas as contas não ativadas
dashboard.delete_inactivate_accounts_success=Todas as contas não ativadas foram excluídas.
dashboard.delete_repo_archives=Excluir todos os arquivos do repositório
dashboard.delete_repo_archives_success=Todos os arquivos do repositório foram excluídos.
dashboard.delete_missing_repos=Excluir todos os repositórios que não possuem seus arquivos Git
@ -1442,7 +1470,7 @@ auths.deletion_success=A fonte de autenticação foi excluída.
auths.login_source_exist=A fonte de autenticação '%s' já existe.
config.server_config=Configuração do servidor
config.app_name=Título do site
config.app_name=Nome do servidor
config.app_ver=Versão do Gitea
config.app_url=URL base do Gitea
config.custom_conf=Caminho do Arquivo de Configuração
@ -1482,7 +1510,7 @@ config.db_path=Caminho
config.service_config=Configuração do serviço
config.register_email_confirm=Exigir confirmação de e-mail para se cadastrar
config.disable_register=Desabilitar auto-cadastro
config.allow_only_external_registration=Habilitar o cadastro apenas por meio de serviços externos
config.allow_only_external_registration=Permitir cadastro somente por meio de serviços externos
config.enable_openid_signup=Habilitar o auto-cadastro via OpenID
config.enable_openid_signin=Habilitar acesso via OpenID
config.show_registration_button=Mostrar botão de cadastro
@ -1498,6 +1526,7 @@ config.enable_timetracking=Habilitar contador de tempo
config.default_enable_timetracking=Habilitar o contador de tempo por padrão
config.default_allow_only_contributors_to_track_time=Permitir que apenas os colaboradores acompanhem o contador de tempo
config.no_reply_address=Ocultar domínio de e-mail
config.default_enable_dependencies=Habilitar dependências de issue por padrão
config.webhook_config=Configuração de Hook da Web
config.queue_length=Tamanho da fila
@ -1585,7 +1614,7 @@ create_repo=criou o repositório <a href="%s">%s</a>
rename_repo=renomeou o repositório <code>%[1]s</code> para <a href="%[2]s">%[3]s</a>
commit_repo=fez push para <a href="%[1]s/src/%[2]s">%[3]s</a> em <a href="%[1]s">%[4]s</a>
create_issue=`abriu a issue <a href="%s/issues/%s">%s#%[2]s</a>`
close_issue=`fechou issue <a href="%s/issues/%s">%s#%[2]s</a>`
close_issue=`fechou a issue <a href="%s/issues/%s">%s#%[2]s</a>`
reopen_issue=`reabriu a issue <a href="%s/issues/%s">%s#%[2]s</a>`
create_pull_request=`criou o pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
close_pull_request=`fechou o pull request <a href="%s/pulls/%s">%s#%[2]s</a>`

View File

@ -32,16 +32,8 @@ twofa_scratch=Двухфакторный scratch-код
passcode=Пароль
u2f_insert_key=Вставьте ключ безопасности
u2f_sign_in=Нажмите кнопку на ключе безопасности. Если вы не можете найти кнопку, вставьте его снова.
u2f_press_button=Пожалуйста нажмите кнопку на вашем ключе безопасности…
u2f_use_twofa=Используйте двухфакторный код с телефона
u2f_error=Мы не можем прочитать ваш ключ безопасности!
u2f_unsupported_browser=Ваш браузер не поддерживает U2F ключи. Попробуйте другой браузер.
u2f_error_1=Произошла неизвестная ошибка. Повторите попытку.
u2f_error_2=Пожалуйста, убедитесь, что вы используете зашифрованное соединение (https://) и используете правильный URL.
u2f_error_3=Серверу не удалось обработать ваш запрос.
u2f_error_4=Представленный ключ не подходит для этого запроса. Если вы пытаетесь зарегистрировать его, убедитесь, что ключ еще не зарегистрирован.
u2f_error_5=Таймаут достигнут до того, как ваш ключ был прочитан. Перезагрузите, чтобы повторить попытку.
u2f_reload=Обновить
repository=Репозиторий
@ -75,7 +67,7 @@ cancel=Отмена
[install]
install=Установка
title=Начальная конфигурация
docker_helper=Если вы запускаете Gitea внутри Docker, пожалуйста внимательно прочтите <a target="_blank" rel="noopener" href="%s">документацию</a> перед тем, как что-либо изменить на этой странице.
docker_helper=Если вы запускаете Gitea внутри Docker, пожалуйста внимательно прочтите <a target="_blank" rel="noopener noreferrer" href="%s">документацию</a> перед тем, как изменить любые настройки.
requite_db_desc=Gitea требует MySQL, PostgreSQL, MSSQL, SQLite3 или TiDB.
db_title=Настройки базы данных
db_type=Тип базы данных
@ -130,7 +122,6 @@ federated_avatar_lookup=Включить федеративные аватары
federated_avatar_lookup_popup=Включите поиск федеративного аватара для использования службы с открытым исходным кодом на основе libravatar.
disable_registration=Отключить самостоятельную регистрацию
disable_registration_popup=Запретить самостоятельную регистрацию. Только администраторы смогут создавать новые учетные записи пользователей.
allow_only_external_registration_popup=Включить регистрацию только через сторонние сервисы.
openid_signin=Включение входа через OpenID
openid_signin_popup=Включение входа через OpenID.
openid_signup=Включить саморегистрацию OpenID
@ -463,13 +454,10 @@ then_enter_passcode=И введите пароль, показанный в пр
passcode_invalid=Неверный пароль. попробуйте снова.
twofa_enrolled=Для вашего аккаунта была включена двухфакторная аутентификация. Сохраните ваш scratch-токен (%s), он не сохраняется на сервере!
u2f_desc=Ключами безопасности являются аппаратные устройства, содержащие криптографические ключи. Они могут использоваться для двухфакторной аутентификации. Ключ безопасности должен поддерживать стандарт <a href="https://fidoalliance.org/">FIDO U2F</a>.
u2f_require_twofa=Для использования ключей безопасности необходимо включить двухфакторную аутентификацию.
u2f_register_key=Добавить ключ безопасности
u2f_nickname=Имя пользователя
u2f_press_button=Нажмите кнопку на ключе безопасности, чтобы зарегистрировать его.
u2f_delete_key=Удалить ключ безопасности
u2f_delete_key_desc=Если вы удалите ключ безопасности, вы не сможете использовать его для входа. Вы уверены?
manage_account_links=Управление привязанными аккаунтами
manage_account_links_desc=Эти внешние аккаунты привязаны к вашему аккаунту Gitea.
@ -492,13 +480,13 @@ owner=Владелец
repo_name=Имя репозитория
repo_name_helper=Лучшие названия репозиториев состоят из коротких, легко запоминаемых и уникальных ключевых слов.
visibility=Видимость
visiblity_helper=Сделать репозиторий приватным
visiblity_helper_forced=Администратор сайта настроил параметр видимости новых репозиториев. Репозиторий приватный по умолчанию.
visiblity_fork_helper=(Изменение этого повлияет на все форки.)
clone_helper=Нужна помощь в клонировании? Посетите страницу <a target="_blank" rel="noopener" href="%s">справки</a>.
visibility_helper=Сделать репозиторий приватным
visibility_helper_forced=Администратор сайта настроил параметр видимости новых репозиториев. Репозиторий приватный по умолчанию.
visibility_fork_helper=(Изменение этого повлияет на все форки.)
clone_helper=Нужна помощь в клонировании? Посетите страницу <a target="_blank" rel="noopener noreferrer" href="%s">помощи</a>.
fork_repo=Форкнуть репозиторий
fork_from=Форк от
fork_visiblity_helper=Видимость форкнутого репозитория изменить нельзя.
fork_visibility_helper=Видимость форкнутого репозитория изменить нельзя.
repo_desc=Описание
repo_lang=Язык
repo_gitignore_helper=Выберите шаблон .gitignore.
@ -613,7 +601,7 @@ editor.directory_is_a_file=Имя каталога '%s' уже использу
editor.file_is_a_symlink='%s' является символической ссылкой. Символические ссылки нельзя редактировать в веб-редакторе
editor.filename_is_a_directory=Имя файла '%s' уже используется в качестве имени каталога в этом репозитории.
editor.file_editing_no_longer_exists=Редактируемый файл '%s' больше не существует в этом репозитории.
editor.file_changed_while_editing=Содержимое файла изменилось с момента начала редактирования. <a target="_blank" rel="noopener" href="%s">Нажмите здесь</a>, чтобы увидеть, что было изменено, или <strong>Зафиксировать изменения снова</strong>, чтобы заменить их.
editor.file_changed_while_editing=Содержимое файла изменилось с момента начала редактирования. <a target="_blank" rel="noopener noreferrer" href="%s">Нажмите здесь</a>, чтобы увидеть, что было изменено, или <strong>Зафиксировать изменения снова</strong>, чтобы заменить их.
editor.file_already_exists=Файл с именем '%s' уже существует в репозитории.
editor.no_changes_to_show=Нет изменений.
editor.fail_to_update_file=Не удалось обновить/создать файл «%s» из-за ошибки: %v
@ -650,7 +638,6 @@ issues.new.open_milestone=Открыть этап
issues.new.closed_milestone=Завершенные этапы
issues.new.assignees=Назначенные
issues.new.clear_assignees=Убрать ответственных
issues.new.no_assignees=Никто не назначен
issues.no_ref=Не указана ветка или тэг
issues.create=Добавить задачу
issues.new_label=Новая метка
@ -994,7 +981,7 @@ settings.search_user_placeholder=Поиск пользователя…
settings.org_not_allowed_to_be_collaborator=Организации не могут быть добавлены как соавторы.
settings.user_is_org_member=Пользователь является членом организации, члены которой не могут быть добавлены в качестве соавтора.
settings.add_webhook=Добавить Webhook
settings.hooks_desc=Webhooks позволяют внешним службам получать уведомления при возникновении определенных событий на Gitea. При возникновении указанных событий мы отправим запрос POST на каждый заданный вами URL. Узнать больше можно в нашем <a target="_blank" rel="noopener" href="%s">руководстве по webhooks</a>.
settings.hooks_desc=Webhooks позволяют внешним службам получать уведомления при возникновении определенных событий на Gitea. При возникновении указанных событий мы отправим запрос POST на каждый заданный вами URL. Узнать больше можно в нашем <a target="_blank" rel="noopener noreferrer" href="%s">руководстве по webhooks</a>.
settings.webhook_deletion=Удалить Webhook
settings.webhook_deletion_desc=Удаление этого веб-хука приведет к удалению всей связанной с ним информации, включая историю. Хотите продолжить?
settings.webhook_deletion_success=Webhook был удалён.
@ -1011,7 +998,7 @@ settings.githook_edit_desc=Если хук не активен, будет по
settings.githook_name=Название Hook'a
settings.githook_content=Перехватить содержание
settings.update_githook=Обновить Hook
settings.add_webhook_desc=Gitea будет оправлять <code>POST</code> запросы на указанный URL адрес, с информацией о происходящих событиях. Вы также можете указать формат данных (JSON, x-www-form-urlencoded, XML и т.д.). Подробности на странице <a target="_blank" rel="noopener" href="%s">инструкции по использованию webhooks</a>.
settings.add_webhook_desc=Gitea будет оправлять <code>POST</code> запросы на указанный URL адрес, с информацией о происходящих событиях. Подробности на странице <a target="_blank" rel="noopener noreferrer" href="%s">инструкции по использованию webhooks</a>.
settings.payload_url=URL обработчика
settings.content_type=Тип содержимого
settings.secret=Секретный ключ
@ -1097,6 +1084,7 @@ settings.protected_branch_deletion_desc=Любой пользователь с
settings.default_branch_desc=Главная ветка является "базовой" для вашего репозитория, на которую по умолчанию направлены все Pull Request'ы и которая является лицом вашего репозитория. Первое, что увидит посетитель — это содержимое главной ветки. Выберите её из уже существующих:
settings.choose_branch=Выберите ветку…
settings.no_protected_branch=Нет защищённых веток.
settings.edit_protected_branch=Редактировать
diff.browse_source=Просмотр исходного кода
diff.parent=Родитель
@ -1167,8 +1155,6 @@ branch.protected_deletion_failed=Ветка '%s' защищена. Её нель
topic.manage_topics=Редактировать тематические метки
topic.done=Сохранить
topic.count_prompt=Вы не можете выбрать более 25 тем
topic.format_prompt=Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов
[org]
org_name_holder=Название организации
@ -1273,8 +1259,6 @@ dashboard.operation_switch=Переключить
dashboard.operation_run=Запуск
dashboard.clean_unbind_oauth=Очистить список незавершённых авторизаций OAuth
dashboard.clean_unbind_oauth_success=Все незавершённые связи OAuth были удалены.
dashboard.delete_inactivate_accounts=Удалить все неактивированные учетные записи
dashboard.delete_inactivate_accounts_success=Все неактивные учётные записи удалены.
dashboard.delete_repo_archives=Удаление всех архивов репозиториев
dashboard.delete_repo_archives_success=Все архивы репозиториев удалены.
dashboard.delete_missing_repos=Удалить все записи о репозиториях с отсутствующими файлами Git
@ -1482,7 +1466,6 @@ config.db_path=Путь
config.service_config=Сервисная конфигурация
config.register_email_confirm=Требуется подтверждение по электронной почте
config.disable_register=Отключить самостоятельную регистрацию
config.allow_only_external_registration=Включить регистрацию только через сторонние сервисы
config.enable_openid_signup=Включить cамостоятельную регистрацию OpenID
config.enable_openid_signin=Включение входа через OpenID
config.show_registration_button=Показать кнопку регистрации

View File

@ -506,7 +506,6 @@ total=Укупно: %d
dashboard.operation_name=Име операције
dashboard.operation_switch=Пребаци
dashboard.operation_run=Покрени
dashboard.delete_inactivate_accounts=Уклони све неактивне налоге
dashboard.server_uptime=Време непрекидног рада сервера
dashboard.current_goroutine=Тренутнe Goroutine
dashboard.current_memory_usage=Тренутна употреба меморије

File diff suppressed because it is too large Load Diff

View File

@ -688,8 +688,6 @@ dashboard.operation_switch=Geç
dashboard.operation_run=Çalıştır
dashboard.clean_unbind_oauth=Bağsız OAuth bağlantılarını temizle
dashboard.clean_unbind_oauth_success=Tüm bağsız OAuth bağlantıları silindi.
dashboard.delete_inactivate_accounts=Etkin olmayan tüm hesapları sil
dashboard.delete_inactivate_accounts_success=Tüm aktif olmayan hesaplar silindi.
dashboard.reinit_missing_repos=Kayıtları bulunanlar için tüm eksik Git depolarını yeniden başlat
dashboard.reinit_missing_repos_success=Kayıtları bulunanlar için tüm eksik Git depoları yeniden başlatıldı.
dashboard.sync_external_users=Harici kullanıcı verisini senkronize et

View File

@ -32,16 +32,8 @@ twofa_scratch=Двофакторний одноразовий пароль
passcode=Код доступу
u2f_insert_key=Вставте ключ безпеки
u2f_sign_in=Натисніть кнопку на ключі безпеки. Якщо не вдається знайти кнопки, повторно вставте ключ.
u2f_press_button=Будь ласка, натисніть кнопку на ключі захисту...
u2f_use_twofa=Використовуйте дво-факторний код з вашого телефону
u2f_error=Неможливо прочитати ваш ключ безпеки!
u2f_unsupported_browser=Ваш браузер не підтримує U2F ключі. Будь ласка, спробуйте інший браузер.
u2f_error_1=Сталася невідома помилка. Спробуйте ще раз.
u2f_error_2=Переконайтеся, що ви використовуєте зашифроване з'єднання (https://) та відвідуєте правильну URL-адресу.
u2f_error_3=Сервер не може обробити, ваш запит.
u2f_error_4=Представлений ключ не дає право на цей запит. Якщо спробуєте зареєструвати його, переконайтеся, що ключ ще не зареєстровано.
u2f_error_5=Таймаут досягнуто до того, як ваш ключ можна буде прочитати. Перезавантажте, щоб повторити спробу.
u2f_reload=Оновити
repository=Репозиторій
@ -130,7 +122,6 @@ federated_avatar_lookup=Увімкнути федеративні аватари
federated_avatar_lookup_popup=Увімкнути зовнішний Аватар за допомогою Libravatar.
disable_registration=Вимкнути самостійну реєстрацію
disable_registration_popup=Вимкнути самостійну реєстрацію користувачів, тільки адміністратор може створювати нові облікові записи.
allow_only_external_registration_popup=Включити реєстрацію тільки через зовнішні сервіси.
openid_signin=Увімкнути реєстрацію за допомогою OpenID
openid_signin_popup=Увімкнути вхід за допомогою OpenID.
openid_signup=Увімкнути самостійну реєстрацію за допомогою OpenID
@ -463,13 +454,10 @@ then_enter_passcode=І введіть пароль, який відобража
passcode_invalid=Некоректний пароль. Спробуй ще раз.
twofa_enrolled=Для вашого облікового запису було включена двофакторна автентифікація. Зберігайте свій scratch-токен (%s) у безпечному місці, оскільки він показується лише один раз!
u2f_desc=Ключами безпеки є апаратні пристрої, що містять криптографічні ключі. Вони можуть використовуватися для двофакторної автентифікації. Ключ безпеки повинен підтримувати стандарт <a href="https://fidoalliance.org/">FIDO U2F</a>.
u2f_require_twofa=Для використання ключів безпеки необхідно зареєструвати двофакторну аутентифікацію.
u2f_register_key=Додати ключ безпеки
u2f_nickname=Псевдонім
u2f_press_button=Натисніть кнопку на ключі безпеки, щоб зареєструвати його.
u2f_delete_key=Видалити ключ безпеки
u2f_delete_key_desc=Якщо ви видалите ключ безпеки, ви не зможете використати його для входу. Ти впевнені?
manage_account_links=Керування обліковими записами
manage_account_links_desc=Ці зовнішні акаунти прив'язані до вашого аккаунту Gitea.
@ -492,13 +480,13 @@ owner=Власник
repo_name=Назва репозиторію
repo_name_helper=Хороші назви репозиторіїв використовують короткі, унікальні ключові слова що легко запам'ятати.
visibility=Видимість
visiblity_helper=Зробити репозиторій приватним
visiblity_helper_forced=Адміністратор вашого сайту налаштував параметри нових репозиторіїв: всі нові репозиторії будуть приватними.
visiblity_fork_helper=(Зміна цього вплине на всі форки.)
clone_helper=Потрібна допомога у клонуванні? Відвідайте <a target="_blank" rel="noopener" href="%s">Допомогу</a>.
visibility_helper=Створити приватний репозиторій
visibility_helper_forced=Адміністратор вашого сайту налаштував параметри: всі нові репозиторії будуть приватними.
visibility_fork_helper=(Ці зміни вплинуть на всі форки.)
clone_helper=Потрібна допомога у клонуванні? Відвідайте сторінку <a target="_blank" rel="noopener" href="%s">Допомога</a>.
fork_repo=Форкнути репозиторій
fork_from=Форк з
fork_visiblity_helper=Видимість форкнутого репозиторію змінити не можна.
fork_visibility_helper=Неможливо змінити видимість форкнутого репозиторію.
repo_desc=Опис
repo_lang=Мова
repo_gitignore_helper=Виберіть шаблон .gitignore.
@ -613,7 +601,7 @@ editor.directory_is_a_file=Ім'я каталогу "%s" уже використ
editor.file_is_a_symlink='%s' є символічним посиланням. Символічні посилання не можливо редагувати в веб-редакторі
editor.filename_is_a_directory=Назва файлу '%s' вже використовується як ім'я каталогу в цьому репозиторії.
editor.file_editing_no_longer_exists=Редагований файл '%s' більше не існує в цьому репозиторії.
editor.file_changed_while_editing=Зміст файлу змінився з моменту початку редагування. <a target="_blank" rel="noopener" href="%s"> Натисніть тут </a>, щоб переглянути що було змінено, або <strong> Прийняти зміни ще раз </strong>, щоб записати свої зміни.
editor.file_changed_while_editing=Зміст файлу змінився з моменту початку редагування. <a target="_blank" rel="noopener" href="%s"> Натисніть тут </a>, щоб переглянути що було змінено, або <strong>закомітьте зміни ще раз</strong>, щоб переписати їх.
editor.file_already_exists=Файл з назвою "%s" уже існує у цьому репозиторію.
editor.no_changes_to_show=Нема змін для показу.
editor.fail_to_update_file=Не вдалося оновити/створити файл '%s' через помилку: %v
@ -650,7 +638,7 @@ issues.new.open_milestone=Активні етапи
issues.new.closed_milestone=Закриті етапи
issues.new.assignees=Виконавеці
issues.new.clear_assignees=Прибрати виконавеців
issues.new.no_assignees=Ніхто не призначений
issues.new.no_assignees=Немає виконавеця
issues.no_ref=Не вказана гілка або тег
issues.create=Створити проблему
issues.new_label=Нова мітка
@ -668,7 +656,7 @@ issues.add_milestone_at=`додав(ла) до <b>%s</b> етапу %s`
issues.change_milestone_at=`змінено цільової етап з <b>%s</b> на <b>%s</b> %s`
issues.remove_milestone_at=`видалено з етапу<b>%s</b> %s`
issues.deleted_milestone=`(видалено)`
issues.self_assign_at=`самонавчался %s`
issues.self_assign_at=`самостійно призначений %s`
issues.add_assignee_at=`був призначений <b>%s</b> %s`
issues.remove_assignee_at=`видалили із призначених %s`
issues.change_title_at=`змінив(ла) заголовок з <b>%s</b> на <b>%s</b> %s`
@ -781,6 +769,17 @@ issues.due_date_added=додав(ла) дату завершення %s %s
issues.due_date_modified=термін змінено з %s %s на %s
issues.due_date_remove=видалив(ла) дату завершення %s %s
issues.due_date_overdue=Прострочено
issues.dependency.title=Залежності
issues.dependency.issue_no_dependencies=Ця проблема в даний час не має залежностей.
issues.dependency.pr_no_dependencies=Цей запит на злиття в даний час не має залежностей.
issues.dependency.add=Додати залежність...
issues.dependency.cancel=Відмінити
issues.dependency.remove=Видалити
issues.dependency.added_dependency=<div class="notranslate"> 0%</div>[2]s</a> додано нову залежність %[3]s'
issues.dependency.removed_dependency=<div class="notranslate"> 0%</div>[2]s</a> видалено залежність %[3]s'
issues.dependency.issue_closing_blockedby=Закриття цього запиту на злиття заблокує наступні проблеми
issues.dependency.pr_closing_blockedby=Закриття цієї проблеми заблокує наступні проблеми
issues.dependency.blocks_short=Блоки
pulls.desc=Увімкнути запити на злиття та інтерфейс узгодження правок.
pulls.new=Новий запит на злиття
@ -994,7 +993,7 @@ settings.search_user_placeholder=Пошук користувача…
settings.org_not_allowed_to_be_collaborator=Організації не можуть бути додані як співавтори.
settings.user_is_org_member=Користувач є учасником організації, учасники якої не можуть бути додані в якості співавтора.
settings.add_webhook=Додати веб-хук
settings.hooks_desc=Webhooks автоматично робить HTTP POST-запити на сервер, коли відбуваються певні події Gitea. Дізнайтеся більше в <a target="_blank" rel="noopener" href="%s"> керівництві веб-вузла </a>.
settings.hooks_desc=Веб-хуки автоматично робить HTTP POST-запити на сервер, коли відбуваються певні події Gitea. Дізнайтеся більше в <a target="_blank" rel="noopener" href="%s"> інструкції по використанню web-хуків </a>.
settings.webhook_deletion=Видалити веб-хук
settings.webhook_deletion_desc=Видалення цього веб-хука призведе до видалення всієї пов'язаної з ним інформації, включаючи історію. Бажаєте продовжити?
settings.webhook_deletion_success=Webhook видалено.
@ -1011,7 +1010,7 @@ settings.githook_edit_desc=Якщо хук неактивний, буде пре
settings.githook_name=Ім'я хуку
settings.githook_content=Зміст хука
settings.update_githook=Оновити хук
settings.add_webhook_desc=Gitea буде відправляти <code>POST</code> запити на вказану URL адресу, з інформацією про події, що відбуваються. Подробиці на сторінці <a target="_blank" rel="noopener" href="%s"> інструкції по використанню webhooks </a>.
settings.add_webhook_desc=Gitea буде відправляти <code>POST</code> запити на вказану URL адресу, з інформацією про події, що відбуваються. Подробиці на сторінці <a target="_blank" rel="noopener" href="%s"> інструкції по використанню web-хуків </a>.
settings.payload_url=Цільова URL-адреса
settings.content_type=Тип вмісту
settings.secret=Секрет
@ -1097,6 +1096,7 @@ settings.protected_branch_deletion_desc=Будь-який користувач
settings.default_branch_desc=Головна гілка є 'базовою' для вашого репозиторія, на яку за замовчуванням спрямовані всі запити на злиття і яка є обличчям вашого репозиторія. Перше, що побачить відвідувач - це зміст головної гілки. Виберіть її з уже існуючих:
settings.choose_branch=Оберіть гілку…
settings.no_protected_branch=Немає захищених гілок.
settings.edit_protected_branch=Редагувати
diff.browse_source=Переглянути джерело
diff.parent=джерело
@ -1167,8 +1167,6 @@ branch.protected_deletion_failed=Гілка '%s' захищена. Її не м
topic.manage_topics=Керувати тематичними мітками
topic.done=Готово
topic.count_prompt=Ви не можете вибрати більше 25 тем
topic.format_prompt=Теми мають починатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів
[org]
org_name_holder=Назва організації
@ -1273,8 +1271,7 @@ dashboard.operation_switch=Перемкнути
dashboard.operation_run=Запустити
dashboard.clean_unbind_oauth=Очистити список незавершених авторизацій OAuth
dashboard.clean_unbind_oauth_success=Всі незавершені зв'язки OAuth були видалені.
dashboard.delete_inactivate_accounts=Видалити всі неактивні облікові записи
dashboard.delete_inactivate_accounts_success=Усі неактивні облікові записи успішно видалено.
dashboard.delete_inactivate_accounts=Видалити всі неактивовані облікові записи
dashboard.delete_repo_archives=Видалити всі архіви репозиторіїв
dashboard.delete_repo_archives_success=Всі архіви репозиторіїв були видалені.
dashboard.delete_missing_repos=Видалити всі записи про репозиторії з відсутніми файлами Git
@ -1482,7 +1479,6 @@ config.db_path=Шлях
config.service_config=Конфігурація сервісу
config.register_email_confirm=Потрібно підтвердити електронну пошту для реєстрації
config.disable_register=Вимкнути самостійну реєстрацію
config.allow_only_external_registration=Включити реєстрацію тільки через сторонні сервіси
config.enable_openid_signup=Увімкнути самостійну реєстрацію за допомогою OpenID
config.enable_openid_signin=Увімкнути реєстрацію за допомогою OpenID
config.show_registration_button=Показувати кнопку "Реєстрація

View File

@ -32,16 +32,8 @@ twofa_scratch=两步验证口令
passcode=验证码
u2f_insert_key=插入安全密钥
u2f_sign_in=按下安全密钥上的按钮。如果找不到按钮, 请重新插入。
u2f_press_button=请按下安全密钥上的按钮。
u2f_use_twofa=使用来自你手机中的两步验证码
u2f_error=没有找到你的安全密钥!
u2f_unsupported_browser=您的浏览器不支持 U2F 密钥。请尝试其他浏览器。
u2f_error_1=发生未知错误。请重试。
u2f_error_2=请确保您使用的是加密连接 (https://) 并访问正确的 URL。
u2f_error_3=服务器无法执行您的请求。
u2f_error_4=所提交的密钥不符合此请求。如果您尝试注册它, 请确保该密钥尚未注册。
u2f_error_5=在读取到密钥之前超时。请重新加载以重试。
u2f_reload=重新加载
repository=仓库
@ -75,7 +67,7 @@ cancel=取消
[install]
install=安装页面
title=初始配置
docker_helper=如果您正在使用 Docker 容器运行 Gitea请务必先仔细阅读 <a target="_blank" rel="noopener" href="%s">官方文档</a> 后再对本页面进行填写。
docker_helper=如果您正在使用 Docker 容器运行 Gitea请务必先仔细阅读 <a target="_blank" rel="noopener noreferrer" href="%s">官方文档</a> 后再对本页面进行填写。
requite_db_desc=Gitea 要求安装 MySQL、PostgreSQL、SQLite3 或 TiDB。
db_title=数据库设置
db_type=数据库类型
@ -130,7 +122,6 @@ federated_avatar_lookup=启用 Federated 头像
federated_avatar_lookup_popup=启用 Federated Avatars 查找以使用开源的 Libravatar 服务。
disable_registration=禁止用户自助注册
disable_registration_popup=禁用用户自助注册。只有管理员才能创建新的用户帐户。
allow_only_external_registration_popup=仅允许通过外部服务注册。
openid_signin=启用 OpenID 登录
openid_signin_popup=启用通过 OpenID 登录
openid_signup=启用 OpenID 自助注册
@ -463,13 +454,10 @@ then_enter_passcode=并输入应用程序中显示的密码:
passcode_invalid=密码不正确。再试一次。
twofa_enrolled=你的账号已经启用了两步验证。请保存初始令牌(%s到一个安全的地方此令牌仅当前显示一次。
u2f_desc=安全密钥是包含加密算法的硬件设备。它们可以用于两步验证。安全密钥必须支持 <a href="https://fidoalliance.org/">FIDO U2F</a> 标准。
u2f_require_twofa=必须开启两步验证才能使用安全密钥。
u2f_register_key=添加安全密钥
u2f_nickname=昵称
u2f_press_button=按安全密钥上的按钮进行注册。
u2f_delete_key=移除安全密钥
u2f_delete_key_desc=如果移除安全密钥, 则无法再使用它登录。是否确定?
manage_account_links=管理绑定过的账号
manage_account_links_desc=这些外部帐户已经绑定到您的 Gitea 帐户。
@ -492,13 +480,13 @@ owner=拥有者
repo_name=仓库名称
repo_name_helper=好的存储库名称使用简短、深刻和独特的关键字。
visibility=可见性
visiblity_helper=将仓库设为私有
visiblity_helper_forced=站点管理员强制要求新仓库为私有。
visiblity_fork_helper=(修改该值将会影响到所有派生仓库)
clone_helper=不知道如何克隆?查看<a target="_blank" rel="noopener" href="%s">帮助</a> 。
visibility_helper=将仓库设为私有
visibility_helper_forced=站点管理员强制要求新仓库为私有。
visibility_fork_helper=(修改该值将会影响到所有派生仓库)
clone_helper=不知道如何克隆?查看<a target="_blank" rel="noopener noreferrer" href="%s">帮助</a> 。
fork_repo=派生仓库
fork_from=派生自
fork_visiblity_helper=无法更改派生仓库的可见性。
fork_visibility_helper=无法更改派生仓库的可见性。
repo_desc=仓库描述
repo_lang=仓库语言
repo_gitignore_helper=选择 .gitignore 模板。
@ -613,7 +601,7 @@ editor.directory_is_a_file='%s' 已经作为文件名在此仓库中存在。
editor.file_is_a_symlink='%s' 是一个符号链接,无法在线编辑。
editor.filename_is_a_directory='%s' 已经作为目录名在此仓库中存在。
editor.file_editing_no_longer_exists=正在编辑的文件 '%s' 已不存在。
editor.file_changed_while_editing=文件内容在您进行编辑时已经发生变动。<a target="_blank" rel="noopener" href="%s">单击此处</a> 查看变动的具体内容,或者 <strong>再次提交</strong> 覆盖已发生的变动。
editor.file_changed_while_editing=文件内容在您进行编辑时已经发生变动。<a target="_blank" rel="noopener noreferrer" href="%s">单击此处</a> 查看变动的具体内容,或者 <strong>再次提交</strong> 覆盖已发生的变动。
editor.file_already_exists=此仓库已经存在名为 '%s' 的文件。
editor.no_changes_to_show=没有可以显示的变更。
editor.fail_to_update_file=更新/创建文件 '%s' 时发生错误:%v
@ -650,7 +638,6 @@ issues.new.open_milestone=开启中的里程碑
issues.new.closed_milestone=已关闭的里程碑
issues.new.assignees=指派成员
issues.new.clear_assignees=取消指派成员
issues.new.no_assignees=未指派成员
issues.no_ref=分支/标记未指定
issues.create=创建工单
issues.new_label=创建标签
@ -994,7 +981,7 @@ settings.search_user_placeholder=搜索用户...
settings.org_not_allowed_to_be_collaborator=组织不允许被添加为仓库协作者!
settings.user_is_org_member=被操作的用户是组织,因此无法添加为协作者!
settings.add_webhook=添加 Web 钩子
settings.hooks_desc=当Gitea事件发生时Web钩子自动发出HTTP POST请求。在 <a target="_blank" rel="noopener" href="%s"> 指南</a> 中阅读更多内容。
settings.hooks_desc=当Gitea事件发生时Web钩子自动发出HTTP POST请求。在 <a target="_blank" rel="noopener noreferrer" href="%s"> 指南</a> 中阅读更多内容。
settings.webhook_deletion=删除 Web 钩子
settings.webhook_deletion_desc=删除 web钩子 将删除其设置和历史记录。继续?
settings.webhook_deletion_success=Web 钩子删除成功!
@ -1011,7 +998,7 @@ settings.githook_edit_desc=如果钩子未启动,则会显示样例文件中
settings.githook_name=钩子名称
settings.githook_content=钩子文本
settings.update_githook=更新钩子设置
settings.add_webhook_desc=Gitea 将向目标 URL 发送具有指定内容类型的 <code>POST</code> 请求。在 <a target="_blank" rel="noopener" href="%s">webhooks 指南</a> 中阅读更多内容。
settings.add_webhook_desc=Gitea 将向目标 URL 发送具有指定内容类型的 <code>POST</code> 请求。在 <a target="_blank" rel="noopener noreferrer" href="%s">webhooks 指南</a> 中阅读更多内容。
settings.payload_url=目标 URL
settings.content_type=POST Content Type
settings.secret=密钥文本
@ -1167,8 +1154,6 @@ branch.protected_deletion_failed=分支 '%s' 已被保护,不可删除。
topic.manage_topics=管理主题
topic.done=保存
topic.count_prompt=您最多选择25个主题
topic.format_prompt=主题必须以字母或数字开头,可以包含连字符 (-)并且长度不得超过35个字符
[org]
org_name_holder=组织名称
@ -1273,8 +1258,6 @@ dashboard.operation_switch=开关
dashboard.operation_run=执行
dashboard.clean_unbind_oauth=清理未绑定的 OAuth 连接
dashboard.clean_unbind_oauth_success=所有未绑定的 OAuth 连接已被删除。
dashboard.delete_inactivate_accounts=删除所有未激活帐户
dashboard.delete_inactivate_accounts_success=所有未激活帐号清除成功!
dashboard.delete_repo_archives=删除所有仓库存档
dashboard.delete_repo_archives_success=所有仓库存档清除成功!
dashboard.delete_missing_repos=删除所有丢失 Git 文件的仓库
@ -1482,7 +1465,6 @@ config.db_path=数据库路径
config.service_config=服务配置
config.register_email_confirm=需要电子邮件确认注册
config.disable_register=禁止用户注册
config.allow_only_external_registration=仅允许通过外部服务注册
config.enable_openid_signup=启用 OpenID 自注册
config.enable_openid_signin=启用 OpenID 登录
config.show_registration_button=显示注册按钮

View File

@ -613,8 +613,6 @@ dashboard.operation_switch=開關
dashboard.operation_run=執行
dashboard.clean_unbind_oauth=清理未綁定OAuth的連結
dashboard.clean_unbind_oauth_success=所有未綁定 OAuth 的連結已刪除。
dashboard.delete_inactivate_accounts=刪除所有未啟用帳戶
dashboard.delete_inactivate_accounts_success=成功清除所有未啟用帳號!
dashboard.reinit_missing_repos=重新初始化所有遺失具已存在記錄的Git 儲存庫
dashboard.reinit_missing_repos_success=所有遺失具已存在記錄的Git 儲存庫已重新初始化。
dashboard.sync_external_users=同步外部使用者資料

View File

@ -32,16 +32,8 @@ twofa_scratch=兩步驟驗證備用碼
passcode=驗證碼
u2f_insert_key=插入安全金鑰
u2f_sign_in=按下安全金鑰上的按鈕。如果找不到按鈕, 請重新插入。
u2f_press_button=請按下安全金鑰上的按鈕…
u2f_use_twofa=使用來自手機的兩步驟驗證碼
u2f_error=找不到您的安全金鑰!
u2f_unsupported_browser=您的瀏覽器不支援 U2F 二步驟驗證技術。請嘗試其他瀏覽器。
u2f_error_1=發生未知的錯誤,請重試。
u2f_error_2=請確保您使用的是加密連接 (https://) 並且 URL 是正確的。
u2f_error_3=伺服器無法執行您的請求。
u2f_error_4=所提交的金鑰不符合此請求。如果您嘗試註冊它, 請確保該金鑰尚未註冊。
u2f_error_5=在讀取金鑰之前已逾時,請重新載入以重試。
u2f_reload=重新載入
repository=儲存庫
@ -75,7 +67,6 @@ cancel=取消
[install]
install=安裝頁面
title=初始設定
docker_helper=如果您正在使用 Docker 容器運行 Gitea請務必先仔細閱讀<a target="_blank" rel="noopener" href="%s">官方文件</a>後再對本頁面進行填寫。
requite_db_desc=Gitea 需要安裝 MySQL、PostgreSQL、SQLite3、MSSQL 或 TiDB 其中一項。
db_title=資料庫設定
db_type=資料庫類型
@ -130,7 +121,6 @@ federated_avatar_lookup=開啟聯合大頭貼
federated_avatar_lookup_popup=開啟聯合頭像查詢並使用基於開放源碼的 libravatar 服務
disable_registration=關閉註冊功能
disable_registration_popup=關閉註冊功能,只有管理員可以新增帳號。
allow_only_external_registration_popup=僅允許通過外部服務註冊。
openid_signin=啟用 OpenID 登入
openid_signin_popup=啟用 OpenID 登入
openid_signup=啟用 OpenID 註冊
@ -433,13 +423,10 @@ or_enter_secret=或者輸入密碼: %s
then_enter_passcode=然後輸入應用程序中顯示的驗證碼:
passcode_invalid=無效的驗證碼,請重試。
u2f_desc=安全密鑰是包含加密密鑰的硬體設備。 它們可以用於兩步驟認證。 安全密鑰必須符合 <a href="https://fidoalliance.org/">FIDO U2F</a> 標準。
u2f_require_twofa=必須先開啟兩步驟驗證才能使用安全密鑰。
u2f_register_key=新增安全密鑰
u2f_nickname=暱稱
u2f_press_button=按下安全密鑰上的密碼進行註冊。
u2f_delete_key=移除安全密鑰
u2f_delete_key_desc=如果您移除安全密鑰,則無法再使用它登錄。 確定嗎?
manage_account_links=管理已連結的帳號
manage_account_links_desc=這些外部帳號與您的 Gitea 帳號相關聯。
@ -461,10 +448,6 @@ owner=擁有者
repo_name=儲存庫名稱
repo_name_helper=好的儲存庫名稱通常是簡短的、好記的、且獨特的。
visibility=可見度
visiblity_helper=將儲存庫設為私人
visiblity_helper_forced=您的網站管理員強制新的存儲庫必需設定為私人。
visiblity_fork_helper=(修改該值將會影響到所有派生倉庫)
clone_helper=不知道如何操作?瀏覽 <a target="_blank" rel="noopener"href="%s"> 幫助 </a>
fork_repo=複製儲存庫
fork_from=複製自
repo_desc=儲存庫描述
@ -596,7 +579,6 @@ issues.new.open_milestone=開啟中的里程碑
issues.new.closed_milestone=已關閉的里程碑
issues.new.assignees=指派成員
issues.new.clear_assignees=取消指派成員
issues.new.no_assignees=未指派成員
issues.no_ref=未指定分支或標籤
issues.create=建立問題
issues.new_label=建立標籤
@ -1086,8 +1068,6 @@ dashboard.operation_switch=開關
dashboard.operation_run=執行
dashboard.clean_unbind_oauth=清理未綁定OAuth的連結
dashboard.clean_unbind_oauth_success=所有未綁定 OAuth 的連結已刪除。
dashboard.delete_inactivate_accounts=刪除所有未啟用帳戶
dashboard.delete_inactivate_accounts_success=成功清除所有未啟用帳號!
dashboard.delete_repo_archives=刪除所有儲存庫存檔
dashboard.delete_repo_archives_success=所有儲存庫存檔已刪除。
dashboard.delete_missing_repos=刪除所有遺失 Git 檔案的儲存庫記錄
@ -1267,7 +1247,6 @@ config.db_path=資料庫路徑
config.service_config=服務設定
config.register_email_confirm=要求註冊時確認電子郵件
config.disable_register=關閉註冊功能
config.allow_only_external_registration=僅允許通過外部服務註冊
config.enable_openid_signup=啟用 OpenID 註冊
config.enable_openid_signin=啟用 OpenID 登入
config.show_registration_button=顯示註冊按鈕

454
package-lock.json generated
View File

@ -2,6 +2,19 @@
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"ajv": {
"version": "5.5.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
"dev": true,
"optional": true,
"requires": {
"co": "^4.6.0",
"fast-deep-equal": "^1.0.0",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.3.0"
}
},
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
@ -22,6 +35,12 @@
"dev": true,
"optional": true
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@ -29,6 +48,13 @@
"dev": true,
"optional": true
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
"dev": true,
"optional": true
},
"aws4": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
@ -37,13 +63,13 @@
"optional": true
},
"bcrypt-pbkdf": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
"optional": true,
"requires": {
"tweetnacl": "0.14.5"
"tweetnacl": "^0.14.3"
}
},
"caseless": {
@ -59,8 +85,8 @@
"integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
"dev": true,
"requires": {
"commander": "2.8.1",
"source-map": "0.4.4"
"commander": "2.8.x",
"source-map": "0.4.x"
},
"dependencies": {
"source-map": {
@ -69,7 +95,7 @@
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"dev": true,
"requires": {
"amdefine": "1.0.1"
"amdefine": ">=0.0.4"
}
}
}
@ -87,7 +113,7 @@
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
"dev": true,
"requires": {
"delayed-stream": "1.0.0"
"delayed-stream": "~1.0.0"
}
},
"commander": {
@ -96,7 +122,7 @@
"integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
"dev": true,
"requires": {
"graceful-readlink": "1.0.1"
"graceful-readlink": ">= 1.0.0"
}
},
"core-util-is": {
@ -113,16 +139,7 @@
"dev": true,
"optional": true,
"requires": {
"assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true,
"optional": true
}
"assert-plus": "^1.0.0"
}
},
"delayed-stream": {
@ -138,7 +155,7 @@
"dev": true,
"optional": true,
"requires": {
"jsbn": "0.1.1"
"jsbn": "~0.1.0"
}
},
"errno": {
@ -148,7 +165,7 @@
"dev": true,
"optional": true,
"requires": {
"prr": "1.0.1"
"prr": "~1.0.1"
}
},
"extend": {
@ -185,6 +202,18 @@
"dev": true,
"optional": true
},
"form-data": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
"dev": true,
"optional": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "1.0.6",
"mime-types": "^2.1.12"
}
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@ -192,16 +221,7 @@
"dev": true,
"optional": true,
"requires": {
"assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true,
"optional": true
}
"assert-plus": "^1.0.0"
}
},
"graceful-fs": {
@ -217,6 +237,36 @@
"integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
"dev": true
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
"dev": true,
"optional": true
},
"har-validator": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
"dev": true,
"optional": true,
"requires": {
"ajv": "^5.1.0",
"har-schema": "^2.0.0"
}
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"optional": true,
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"image-size": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
@ -277,215 +327,22 @@
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true,
"optional": true
}
}
},
"less": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/less/-/less-3.0.4.tgz",
"integrity": "sha512-q3SyEnPKbk9zh4l36PGeW2fgynKu+FpbhiUNx/yaiBUQ3V0CbACCgb9FzYWcRgI2DJlP6eI4jc8XPrCTi55YcQ==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/less/-/less-3.6.0.tgz",
"integrity": "sha512-9jCc6kgJ36E2EjZrx+V+UXUTOb4JgFO5l7y9VetoRUtoaDIS4+yJ0XML9Fdr006zE9ZgHIk7tdO+SMa0PLY0mQ==",
"dev": true,
"requires": {
"errno": "0.1.7",
"graceful-fs": "4.1.11",
"image-size": "0.5.5",
"mime": "1.6.0",
"mkdirp": "0.5.1",
"promise": "7.3.1",
"request": "2.85.0",
"source-map": "0.6.1"
},
"dependencies": {
"ajv": {
"version": "5.5.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
"dev": true,
"optional": true,
"requires": {
"co": "4.6.0",
"fast-deep-equal": "1.1.0",
"fast-json-stable-stringify": "2.0.0",
"json-schema-traverse": "0.3.1"
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true,
"optional": true
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
"dev": true,
"optional": true
},
"boom": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
"integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
"dev": true,
"optional": true,
"requires": {
"hoek": "4.2.1"
}
},
"cryptiles": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
"integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
"dev": true,
"optional": true,
"requires": {
"boom": "5.2.0"
},
"dependencies": {
"boom": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
"integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
"dev": true,
"optional": true,
"requires": {
"hoek": "4.2.1"
}
}
}
},
"form-data": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
"dev": true,
"optional": true,
"requires": {
"asynckit": "0.4.0",
"combined-stream": "1.0.6",
"mime-types": "2.1.18"
}
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
"dev": true,
"optional": true
},
"har-validator": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
"dev": true,
"optional": true,
"requires": {
"ajv": "5.5.2",
"har-schema": "2.0.0"
}
},
"hawk": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
"integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
"dev": true,
"optional": true,
"requires": {
"boom": "4.3.1",
"cryptiles": "3.1.2",
"hoek": "4.2.1",
"sntp": "2.1.0"
}
},
"hoek": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
"dev": true
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"optional": true,
"requires": {
"assert-plus": "1.0.0",
"jsprim": "1.4.1",
"sshpk": "1.14.1"
}
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true,
"optional": true
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true,
"optional": true
},
"request": {
"version": "2.85.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
"integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
"dev": true,
"optional": true,
"requires": {
"aws-sign2": "0.7.0",
"aws4": "1.7.0",
"caseless": "0.12.0",
"combined-stream": "1.0.6",
"extend": "3.0.1",
"forever-agent": "0.6.1",
"form-data": "2.3.2",
"har-validator": "5.0.3",
"hawk": "6.0.2",
"http-signature": "1.2.0",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.18",
"oauth-sign": "0.8.2",
"performance-now": "2.1.0",
"qs": "6.5.2",
"safe-buffer": "5.1.2",
"stringstream": "0.0.5",
"tough-cookie": "2.3.4",
"tunnel-agent": "0.6.0",
"uuid": "3.2.1"
}
},
"sntp": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
"integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
"dev": true,
"optional": true,
"requires": {
"hoek": "4.2.1"
}
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"optional": true
}
"errno": "^0.1.1",
"graceful-fs": "^4.1.2",
"image-size": "~0.5.0",
"mime": "^1.4.1",
"mkdirp": "^0.5.0",
"promise": "^7.1.1",
"request": "^2.83.0",
"source-map": "~0.6.0"
}
},
"less-plugin-clean-css": {
@ -494,7 +351,7 @@
"integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=",
"dev": true,
"requires": {
"clean-css": "3.4.28"
"clean-css": "^3.0.1"
}
},
"mime": {
@ -516,7 +373,7 @@
"integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
"dev": true,
"requires": {
"mime-db": "1.33.0"
"mime-db": "~1.33.0"
}
},
"minimist": {
@ -543,14 +400,21 @@
"dev": true,
"optional": true
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true,
"optional": true
},
"promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
"integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=",
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"dev": true,
"optional": true,
"requires": {
"asap": "2.0.6"
"asap": "~2.0.3"
}
},
"prr": {
@ -567,45 +431,80 @@
"dev": true,
"optional": true
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true,
"optional": true
},
"request": {
"version": "2.87.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
"integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
"dev": true,
"optional": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.6.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.5",
"extend": "~3.0.1",
"forever-agent": "~0.6.1",
"form-data": "~2.3.1",
"har-validator": "~5.0.3",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.17",
"oauth-sign": "~0.8.2",
"performance-now": "^2.1.0",
"qs": "~6.5.1",
"safe-buffer": "^5.1.1",
"tough-cookie": "~2.3.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.1.0"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true,
"optional": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"optional": true
},
"sshpk": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
"integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
"version": "1.14.2",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
"integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
"dev": true,
"optional": true,
"requires": {
"asn1": "0.2.3",
"assert-plus": "1.0.0",
"bcrypt-pbkdf": "1.0.1",
"dashdash": "1.14.1",
"ecc-jsbn": "0.1.1",
"getpass": "0.1.7",
"jsbn": "0.1.1",
"tweetnacl": "0.14.5"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true,
"optional": true
}
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
"dev": true,
"optional": true
},
"tough-cookie": {
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
@ -613,7 +512,7 @@
"dev": true,
"optional": true,
"requires": {
"punycode": "1.4.1"
"punycode": "^1.4.1"
}
},
"tunnel-agent": {
@ -623,7 +522,7 @@
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "5.1.2"
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
@ -634,9 +533,9 @@
"optional": true
},
"uuid": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
"integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
"dev": true,
"optional": true
},
@ -647,18 +546,9 @@
"dev": true,
"optional": true,
"requires": {
"assert-plus": "1.0.0",
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "1.3.0"
},
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true,
"optional": true
}
"extsprintf": "^1.2.0"
}
}
}

View File

@ -1,7 +1,7 @@
{
"license": "MIT",
"devDependencies": {
"less": "^3.0.4",
"less": "^3.6.0",
"less-plugin-clean-css": "^1.5.1"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -790,7 +790,7 @@ function initTeamSettings() {
function initWikiForm() {
var $editArea = $('.repository.wiki textarea#edit_area');
if ($editArea.length > 0) {
new SimpleMDE({
var simplemde = new SimpleMDE({
autoDownloadFontAwesome: false,
element: $editArea[0],
forceSync: true,
@ -825,6 +825,7 @@ function initWikiForm() {
"link", "image", "table", "horizontal-rule", "|",
"clean-block", "preview", "fullscreen"]
})
$(simplemde.codemirror.getInputField()).addClass("js-quick-submit");
}
}
@ -1769,6 +1770,7 @@ $(document).ready(function () {
initTopicbar();
initU2FAuth();
initU2FRegister();
initIssueList();
// Repo clone url.
if ($('#repo-clone-url').length > 0) {
@ -2302,46 +2304,75 @@ function initNavbarContentToggle() {
}
function initTopicbar() {
var mgrBtn = $("#manage_topic")
var editDiv = $("#topic_edit")
var viewDiv = $("#repo-topic")
var saveBtn = $("#save_topic")
var mgrBtn = $("#manage_topic"),
editDiv = $("#topic_edit"),
viewDiv = $("#repo-topic"),
saveBtn = $("#save_topic"),
topicDropdown = $('#topic_edit .dropdown'),
topicForm = $('#topic_edit.ui.form'),
topicPrompts;
mgrBtn.click(function() {
viewDiv.hide();
editDiv.show();
})
});
function getPrompts() {
var hidePrompt = $("div.hide#validate_prompt"),
prompts = {
countPrompt: hidePrompt.children('#count_prompt').text(),
formatPrompt: hidePrompt.children('#format_prompt').text()
};
hidePrompt.remove();
return prompts;
}
saveBtn.click(function() {
var topics = $("input[name=topics]").val();
$.post($(this).data('link'), {
$.post(saveBtn.data('link'), {
"_csrf": csrf,
"topics": topics
}).success(function(res){
if (res["status"] != "ok") {
alert(res.message);
} else {
}, function(data, textStatus, xhr){
if (xhr.responseJSON.status === 'ok') {
viewDiv.children(".topic").remove();
if (topics.length == 0) {
if (topics.length === 0) {
return
}
var topicArray = topics.split(",");
var last = viewDiv.children("a").last();
for (var i=0;i < topicArray.length; i++) {
for (var i=0; i < topicArray.length; i++) {
$('<div class="ui green basic label topic" style="cursor:pointer;">'+topicArray[i]+'</div>').insertBefore(last)
}
editDiv.hide();
viewDiv.show();
}
}).done(function() {
editDiv.hide();
viewDiv.show();
}).fail(function(xhr) {
alert(xhr.responseJSON.message)
})
}).fail(function(xhr){
if (xhr.status === 422) {
if (xhr.responseJSON.invalidTopics.length > 0) {
topicPrompts.formatPrompt = xhr.responseJSON.message;
var invalidTopics = xhr.responseJSON.invalidTopics,
topicLables = topicDropdown.children('a.ui.label');
topics.split(',').forEach(function(value, index) {
for (var i=0; i < invalidTopics.length; i++) {
if (invalidTopics[i] === value) {
topicLables.eq(index).removeClass("green").addClass("red");
}
}
});
} else {
topicPrompts.countPrompt = xhr.responseJSON.message;
}
}
}).always(function() {
topicForm.form('validate form');
});
});
$('#topic_edit .dropdown').dropdown({
topicDropdown.dropdown({
allowAdditions: true,
fields: { name: "description", value: "data-value" },
saveRemoteData: false,
@ -2362,7 +2393,7 @@ function initTopicbar() {
onResponse: function(res) {
var formattedResponse = {
success: false,
results: new Array(),
results: [],
};
if (res.topics) {
@ -2375,16 +2406,125 @@ function initTopicbar() {
return formattedResponse;
},
},
onLabelCreate: function(value) {
value = value.toLowerCase().trim();
this.attr("data-value", value).contents().first().replaceWith(value);
return $(this);
},
onAdd: function(addedValue, addedText, $addedChoice) {
addedValue = addedValue.toLowerCase().trim();
$($addedChoice).attr('data-value', addedValue);
$($addedChoice).attr('data-text', addedValue);
}
});
$.fn.form.settings.rules.validateTopic = function(values, regExp) {
var topics = topicDropdown.children('a.ui.label'),
status = topics.length === 0 || topics.last().attr("data-value").match(regExp);
if (!status) {
topics.last().removeClass("green").addClass("red");
}
return status && topicDropdown.children('a.ui.label.red').length === 0;
};
topicPrompts = getPrompts();
topicForm.form({
on: 'change',
inline : true,
fields: {
topics: {
identifier: 'topics',
rules: [
{
type: 'validateTopic',
value: /^[a-z0-9][a-z0-9-]{1,35}$/,
prompt: topicPrompts.formatPrompt
},
{
type: 'maxCount[25]',
prompt: topicPrompts.countPrompt
}
]
},
}
});
}
function toggleDuedateForm() {
$('#add_deadline_form').fadeToggle(150);
function toggleDeadlineForm() {
$('#deadlineForm').fadeToggle(150);
}
function deleteDueDate(url) {
$.post(url, {
'_csrf': csrf,
},function( data ) {
window.location.reload();
function setDeadline() {
var deadline = $('#deadlineDate').val();
updateDeadline(deadline);
}
function updateDeadline(deadlineString) {
$('#deadline-err-invalid-date').hide();
$('#deadline-loader').addClass('loading');
var realDeadline = null;
if (deadlineString !== '') {
var newDate = Date.parse(deadlineString)
if (isNaN(newDate)) {
$('#deadline-loader').removeClass('loading');
$('#deadline-err-invalid-date').show();
return false;
}
realDeadline = new Date(newDate);
}
$.ajax($('#update-issue-deadline-form').attr('action') + '/deadline', {
data: JSON.stringify({
'due_date': realDeadline,
}),
contentType: 'application/json',
type: 'POST',
success: function () {
window.location.reload();
},
error: function () {
$('#deadline-loader').removeClass('loading');
$('#deadline-err-invalid-date').show();
}
});
}
function deleteDependencyModal(id, type) {
$('.remove-dependency')
.modal({
closable: false,
duration: 200,
onApprove: function () {
$('#removeDependencyID').val(id);
$('#dependencyType').val(type);
$('#removeDependencyForm').submit();
}
}).modal('show')
;
}
function initIssueList() {
var repolink = $('#repolink').val();
$('.new-dependency-drop-list')
.dropdown({
apiSettings: {
url: '/api/v1/repos' + repolink + '/issues?q={query}',
onResponse: function(response) {
var filteredResponse = {'success': true, 'results': []};
// Parse the response from the api to work with our dropdown
$.each(response, function(index, issue) {
filteredResponse.results.push({
'name' : '#' + issue.number + '&nbsp;' + issue.title,
'value' : issue.id
});
});
return filteredResponse;
},
},
fullTextSearch: true
})
;
}

View File

@ -80,6 +80,23 @@
}
}
}
@media only screen and (min-width: 768px) {
.g-recaptcha {
margin: 0 auto !important;
width: 304px;
padding-left: 30px;
}
}
@media screen and (max-height: 575px){
#rc-imageselect, .g-recaptcha {
transform:scale(0.77);
-webkit-transform:scale(0.77);
transform-origin:0 0;
-webkit-transform-origin:0 0;
}
}
.user.activate,
.user.forgot.password,
.user.reset.password,

View File

@ -98,6 +98,13 @@
}
}
}
#deadlineForm input{
width: 12.8rem;
border-radius: 4px 0 0 4px;
border-right: 0;
white-space: nowrap;
}
}
.header-wrapper {
background-color: #FAFAFA;

View File

@ -0,0 +1,3 @@
// TODO: Instead of having each theme file define each
// CSS/LESS item in this file and then overide
// in the theme files

View File

@ -0,0 +1,767 @@
@import "_base";
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
color: #bababa;
}
.repository.file.list .non-diff-file-content .code-view .lines-num, .repository.file.list .non-diff-file-content .code-view .lines-code ol {
background-color: #2b2b2b !important;
}
.hljs-strong, .hljs-emphasis {
color: #a8a8a2;
}
.hljs-bullet, .hljs-quote, .hljs-link, .hljs-number, .hljs-regexp, .hljs-literal {
color: #6896ba;
}
.hljs-code, .hljs-selector-class {
color: #a6e22e;
}
.hljs-emphasis {
font-style: italic;
}
.hljs-keyword, .hljs-selector-tag, .hljs-section, .hljs-attribute, .hljs-name, .hljs-variable {
color: #cb7832;
}
.hljs-params {
color: #b9b9b9;
}
.hljs-string {
color: #6a8759;
}
.hljs-subst, .hljs-type, .hljs-built_in, .hljs-builtin-name, .hljs-symbol, .hljs-selector-id, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-template-tag, .hljs-template-variable, .hljs-addition {
color: #e0c46c;
}
.hljs-comment, .hljs-deletion, .hljs-meta {
color: #7f7f7f;
}
.repository .ui.segment.sub-menu .list .item a {
color:#dbdbdb;
}
.ui.horizontal.segments > .segment {
background-color: #383c4a;
}
body {
background: #383c4a;
color: #9e9e9e;
}
a {
color: #87ab63;
}
a:hover {
color: #a0cc75;
}
.ui.card>.extra a:not(.ui):hover, .ui.cards>.card>.extra a:not(.ui):hover {
color: #a0cc75;
}
.ui.breadcrumb a:hover {
color: #a0cc75;
}
.ui.breadcrumb a {
color: #87ab63;
}
.repository .metas .ui.list a .text {
color: #87ab63;
}
.repository .metas .ui.list a .text:hover {
color: #a0cc75;
}
.repository .label.list .item a {
color: #87ab63;
}
.repository .label.list .item a:hover {
color: #a0cc75;
}
.repository .milestone.list > .item > a {
color: #87ab63;
}
.repository .milestone.list > .item > a:hover {
color: #a0cc75;
}
.repository.release #release-list {
border-top: 1px solid #4c505c;
}
.repository .milestone.list > .item .operate > a {
color: #87ab63;
}
.repository .milestone.list > .item .operate > a:hover {
color: #a0cc75;
}
.ui.green.progress .bar {
background-color: #668844;
}
.ui.progress.success .bar {
background-color: #7b9e57!important;
}
.following.bar.light {
background: #2e323e;
}
.ui.secondary.menu .active.item {
color: #dbdbdb;
}
.ui.secondary.menu .item {
color: #9e9e9e;
}
.following.bar .top.menu a.item:hover {
color: #fff;
}
.repository.view.issue .comment-list .comment .content > .bottom.segment a {
border: solid 1px #353945;
background-color: #353945;
}
.following.bar.light {
border-bottom: 1px solid #313131;
}
.ui.attached.header {
background: #404552;
border: 1px solid #404552;
color: #dbdbdb;
}
.ui.attached.table {
border: 1px solid #304251;
background: #304251;
}
.feeds .list ul li:not(:last-child) {
border-bottom: 1px solid #333640;
}
.feeds .list ul li.private {
background: #353945;
border: 1px solid #333640;
}
.ui.secondary.menu .dropdown.item:hover, .ui.secondary.menu .link.item:hover, .ui.secondary.menu a.item:hover {
color: #fff;
}
.ui.menu .ui.dropdown .menu>.item {
background: #2c303a !important;
color: #9e9e9e !important;
}
.ui.secondary.menu .dropdown.item>.menu, .ui.text.menu .dropdown.item>.menu {
border: 1px solid #434444;
}
footer {
background: #2e323e;
border-top: 1px solid #313131;
}
.ui.menu .dropdown.item .menu {
background: #2c303a;
}
.ui.menu .ui.dropdown .menu>.item:hover, .ui.menu .ui.dropdown .menu>.selected.item {
color: #fff!important;
}
.ui.dropdown .menu>.header {
color: #dbdbdb;
}
.ui.red.label, .ui.red.labels .label {
background-color: #7d3434!important;
border-color: #8a2121!important;
}
.ui.menu {
background: #404552;
border: 1px solid #353945;
}
.ui.menu .active.item:hover, .ui.vertical.menu .active.item:hover {
color: #dbdbdb;
background: #4B5162;
}
.ui.link.menu .item:hover, .ui.menu .dropdown.item:hover, .ui.menu .link.item:hover, .ui.menu a.item:hover {
color: #dbdbdb;
background: #454b5a;
}
.ui.menu .active.item {
background: #4B5162;
color: #dbdbdb;
}
.ui.input input {
background: #404552;
border: 2px solid #353945;
color: #dbdbdb;
}
.ui.input input:focus, .ui.input.focus input {
background: #404552;
border: 2px solid #353945;
color: #dbdbdb;
}
.ui.label {
color: #dbdbdb;
background-color: #404552;
}
.issue.list > .item .title {
color: #87ab63;
}
.issue.list > .item .title:hover {
color: #a0cc75;
}
.issue.list > .item {
border-bottom: 1px dashed #475767;
}
.ui.green.label, .ui.green.labels .label {
background-color: #2d693b!important;
border-color: #2d693b!important;
}
.issue.list > .item .comment {
color: #129c92;
}
.ui.basic.button, .ui.basic.buttons .button {
color: #797979!important;
}
.ui.basic.red.active.button, .ui.basic.red.buttons .active.button {
box-shadow: 0 0 0 1px #c75252 inset!important;
color: #c75252!important;
}
.ui.basic.button:focus, .ui.basic.button:hover, .ui.basic.buttons .button:focus, .ui.basic.buttons .button:hover {
background: transparent!important;
color: #dbdbdb!important;
}
.ui.menu .item {
background: #404552;
color: #9e9e9e;
}
.ui.menu .item.disabled, .ui.menu .item.disabled:hover {
color: #626773;
}
.ui.pagination.menu .active.item {
color: #dbdbdb;
background-color: #609926;
}
.repository .header-wrapper {
background-color: #2a2e3a;
}
.ui.tabular.menu .active.item {
background: #383c4a;
color: #dbdbdb;
border-left: 1px solid transparent;
border-right: 1px solid transparent;
border-top: none;
}
.ui.tabular.menu .item {
color: #9e9e9e;
}
.ui.tabular.menu .item:hover {
color: #dbdbdb;
}
.ui.header, .ui.breadcrumb .divider {
color: #9e9e9e;
}
.ui.blue.label, .ui.blue.labels .label {
background-color: #26577b!important;
border-color: #26577b!important;
}
.ui.menu .item>.label {
background: #565454;
}
.ui.blue.button, .ui.blue.buttons .button {
background-color: #609926;
}
.ui.blue.button:hover, .ui.blue.buttons .button:hover {
background-color: #73ad36;
}
.ui.form input:not([type]), .ui.form input[type=text], .ui.form input[type=email], .ui.form input[type=search], .ui.form input[type=password], .ui.form input[type=date], .ui.form input[type=datetime-local], .ui.form input[type=tel], .ui.form input[type=time], .ui.form input[type=url], .ui.form input[type=number] {
background: #404552;
border: 2px solid #353945;
}
.ui.form input:not([type]):focus, .ui.form input[type=text]:focus, .ui.form input[type=email]:focus, .ui.form input[type=search]:focus, .ui.form input[type=password]:focus, .ui.form input[type=date]:focus, .ui.form input[type=datetime-local]:focus, .ui.form input[type=tel]:focus, .ui.form input[type=time]:focus, .ui.form input[type=url]:focus, .ui.form input[type=number]:focus {
background: #404552;
border: 2px solid #4b505f;
color: #dbdbdb;
}
.ui.action.input:not([class*="left action"]) input:focus {
border-right-color: #4b505f!important;
}
.ui.green.button, .ui.green.buttons .button {
background-color: #609926;
}
.ui.green.button:hover, .ui.green.buttons .button:hover {
background-color: #73ad36;
}
.ui.button {
background: #383c4a;
border: 1px solid #4c505c;
color: #dbdbdb;
}
.ui.labeled.button:not([class*="left labeled"])>.label, .ui[class*="left labeled"].button>.button {
background: #404552;
border: 1px solid #4c505c;
color: #87ab63;
}
.ui.button:hover {
background-color: #404552;
color: #dbdbdb;
}
.ui.table thead th {
background: #404552;
color: #dbdbdb;
}
.repository.file.list #repo-files-table tr:hover {
background-color: #393d4a;
}
.ui.table {
color: #a5a5a5!important;
border: 1px solid #4c505c;
background: #353945;
}
.ui.table tbody tr {
border-bottom: 1px solid #333640;
background: #2a2e3a;
}
.ui .text.grey {
color: #808084 !important;
}
.ui.attached.table.segment {
background: #353945;
color: #dbdbdb!important;
}
.markdown:not(code) h2 {
border-bottom: 1px solid #304251;
}
.hljs, .hljs-keyword, .hljs-selector-tag, .hljs-subst {
color: #9daccc;
}
.markdown:not(code) .highlight pre, .markdown:not(code) pre {
background-color: #2a2e3a;
border: 1px solid #404552;
}
.markdown:not(code) table tr:nth-child(2n) {
background-color: #474d61;
}
.ui.dropdown .menu {
background: #2c303a;
}
.ui.dropdown .menu>.message:not(.ui) {
color: rgb(99, 99, 99);
}
.ui.input {
color: #dbdbdb;
}
.overflow.menu .items .item {
color: #9d9d9d;
}
.overflow.menu .items .item:hover {
color: #dbdbdb;
}
.ui.segment {
background: #353945;
color: #9e9e9e!important;
border: 1px solid #404552;
}
.ui.active.button:active, .ui.button:active, .ui.button:focus {
background-color: #2e3e4e;
color: #dbdbdb;
}
.ui.dropdown .menu .selected.item, .ui.dropdown.selected {
color: #dbdbdb;
}
.ui.dropdown .menu>.item:hover {
color: #dbdbdb;
}
.ui.dropdown .menu>.item {
color: #9e9e9e;
}
.ui.attached.segment {
border: 1px solid #404552;
}
.repository.view.issue .comment-list .comment .content > .bottom.segment {
background: #353945;
}
.repository.view.issue .comment-list .comment .content .header {
color: #dbdbdb;
background-color: #404552;
border-bottom: 1px solid #353944;
}
.ui .text.grey a {
color: #b3b3b3 !important;
}
.ui.comments .comment .actions a {
color: #dbdbdb;
}
.repository.view.issue .comment-list .comment .content .header:after {
border-right-color: #404552;
}
.repository.new.issue .comment.form .content:after {
border-right-color: #353945;
}
.repository.view.issue .comment-list .comment .content .header:before {
border-right-color: #404552;
}
.repository.new.issue .comment.form .content:before {
border-right-color: #353945;
}
.repository.view.issue .comment-list:before {
background-color: #313c47;
}
.repository .comment.form .content .form:after {
border-right-color: #313c47;
}
.repository .comment.form .content .form:before {
border-right-color: #313c47;
}
.ui .text.grey a {
color: #dbdbdb !important;
}
.ui .text.grey a:hover {
color: #dbdbdb !important;
}
.ui.basic.green.active.button, .ui.basic.green.buttons .active.button {
color: #13ae38!important;
}
.ui.form textarea, .ui.form textarea:focus {
background: #1a2632;
border: 1px solid #313c47;
color: #dbdbdb;
}
.ui.form textarea:focus {
border: 1px solid #456580;
}
.ui .info.segment.top {
background-color: #404552 !important;
}
.repository .diff-file-box .code-diff-unified tbody tr.del-code td {
background-color: #3c2626 !important;
border-color: #634343 !important;
}
.repository .diff-file-box .code-diff-unified tbody tr.add-code td {
background-color: rgb(40, 62, 45) !important;
border-color: #314a37 !important;
}
.repository .diff-file-box .code-diff tbody tr .added-code {
background-color: #3a523a;
}
.repository .diff-file-box .code-diff .lines-num {
border-right: 1px solid #2d2d2d;
}
.repository .diff-file-box .file-body.file-code .lines-num {
color: #9e9e9e;
background: #2e323e;
}
.repository .diff-file-box .code-diff tbody tr.tag-code td, .repository .diff-file-box .code-diff tbody tr td.tag-code {
border-color: #2d2d2d !important;
}
.repository .diff-file-box .file-body.file-code .lines-num-old {
border-right: 1px solid #2d2d2d;
}
.hljs-title, .hljs-section, .hljs-selector-id {
color: #986c88;
}
.hljs-string, .hljs-doctag {
color: #949494;
}
.repository .diff-file-box .code-diff tbody tr .removed-code {
background-color: #5f3737;
}
.repository .diff-file-box .code-diff tbody tr.tag-code td, .repository .diff-file-box .code-diff tbody tr td.tag-code {
background-color: #292727 !important;
}
.ui.vertical.menu .active.item {
background: #4B5162;
}
.ui.vertical.menu .item {
background: #353945;
}
.ui.vertical.menu .header.item {
background: #404552;
}
.ui.vertical.menu {
background: #353945;
border: 1px solid #333640;
}
.ui.repository.list .item:not(:first-child) {
border-top: 1px solid #4c505c;
}
.ui .text.blue {
color: #609926 !important;
}
.ui.selection.active.dropdown, .ui.selection.active.dropdown .menu {
border-color: #4e5361;
box-shadow: 0 2px 3px 0 rgba(34,36,38,.15);
}
.ui.selection.active.dropdown:hover, .ui.selection.active.dropdown:hover .menu {
border-color: #4e5361;
box-shadow: 0 2px 3px 0 rgba(34,36,38,.15);
}
.ui.selection.dropdown {
background: #404552;
border: 1px solid rgb(64, 69, 82);
color: #9e9e9e;
}
.ui.menu .ui.dropdown .menu>.active.item {
color: #dbdbdb !important;
}
.ui.tabular.menu {
border-bottom: 1px solid #313c47;
}
.ui.card, .ui.cards>.card {
background: #353945;
box-shadow: 0 1px 3px 0 #4c505c, 0 0 0 1px #4c505c;
}
.ui.card>.content>.header, .ui.cards>.card>.content>.header {
color: #dbdbdb;
}
.ui.card>.extra a:not(.ui), .ui.cards>.card>.extra a:not(.ui) {
color: #87ab63;
}
.ui .text.black {
color: #9e9e9e;
}
.ui .text.black:hover {
color: #dbdbdb;
}
.ui.secondary.segment {
background: #353945;
}
.ui.secondary.pointing.menu .active.item {
border-color: #609926;
color: #dbdbdb;
background: #404552;
}
.ui.user.list .item:not(:first-child) {
border-top: 1px solid #4c505c;
}
.ui.secondary.pointing.menu .active.item:hover {
border-color: #af8b4c;
color: #dbdbdb;
background: #4b5162;
}
.ui.secondary.pointing.menu .dropdown.item:hover, .ui.secondary.pointing.menu .link.item:hover, .ui.secondary.pointing.menu a.item:hover {
color: #dbdbdb;
}
.ui.checkbox label, .ui.checkbox+label, .ui.form .field>label {
color: #9e9e9e;
}
.ui.form .inline.field>label, .ui.form .inline.field>p, .ui.form .inline.fields .field>label, .ui.form .inline.fields .field>p, .ui.form .inline.fields>label {
color: #9e9e9e;
}
.user.settings .email.list .item:not(:first-child) {
border-top: 1px solid #3f4451;
}
.explore .navbar {
background-color: #2a2e3a!important;
}
.ui.menu.new-menu {
background-color: #2a2e3a!important;
}
input {
background: #2e323e;
}
.ui.secondary.pointing.menu .active.item {
border: none;
background: #383c4a;
}
.settings .key.list .item:not(:first-child) {
border-top: 1px solid #404552;
}
.ui.form input:not([type]), .ui.form input[type=text], .ui.form input[type=email], .ui.form input[type=search], .ui.form input[type=password], .ui.form input[type=date], .ui.form input[type=datetime-local], .ui.form input[type=tel], .ui.form input[type=time], .ui.form input[type=url], .ui.form input[type=number] {
color: #9e9e9e;
}
.ui.attached.info.message, .ui.info.message {
box-shadow: 0 0 0 1px #4b5e71 inset, 0 0 0 0 transparent;
}
.ui.info.message {
background-color: #2c3b4a;
color: #9ebcc5;
}
.ui .warning.header {
background-color: #5d3a22 !important;
border-color: #794f31;
}
.ui.red.message {
background-color: rgba(80, 23, 17, 0.6);
color: #f9cbcb;
box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent;
}
.ui.red.button, .ui.red.buttons .button {
background-color: #7d3434;
}
.ui.red.button:hover, .ui.red.buttons .button:hover {
background-color: #984646;
}
.ui.checkbox label:hover, .ui.checkbox+label:hover {
color: #dbdbdb !important;
}
.ui.checkbox input:checked~.box:after, .ui.checkbox input:checked~label:after {
color: rgb(127, 152, 173);
}
.ui.checkbox input:checked~.box:before, .ui.checkbox input:checked~label:before {
background: #304251;
}
.ui.checkbox .box:hover::before, .ui.checkbox label:hover::before {
background: #304251;
}
.ui.checkbox .box:before, .ui.checkbox label:before {
background: #304251;
border: 1px solid #304251;
}
.ui.checkbox .box:active::before, .ui.checkbox label:active::before {
background: #304251;
border-color: rgba(34,36,38,.35);
}
.ui.checkbox input:checked~.box:before, .ui.checkbox input:checked~label:before {
border-color: #304251;
background: #304251;
}
.ui.checkbox input:focus~.box:before, .ui.checkbox input:focus~label:before {
border-color: #304251;
background: #304251;
}
.ui.checkbox input:checked:focus~.box:before, .ui.checkbox input:checked:focus~label:before, .ui.checkbox input:not([type=radio]):indeterminate:focus~.box:before, .ui.checkbox input:not([type=radio]):indeterminate:focus~label:before {
border-color: #304251;
background: #304251;
}
.ui.checkbox input:checked~.box:after, .ui.checkbox input:checked~label:after {
opacity: 1;
color: rgb(127, 152, 173);
}
.ui.checkbox input:checked:focus~.box:after, .ui.checkbox input:checked:focus~label:after, .ui.checkbox input:not([type=radio]):indeterminate:focus~.box:after, .ui.checkbox input:not([type=radio]):indeterminate:focus~label:after {
color: rgb(127, 152, 173);
}
.ui.checkbox input:focus~.box:after, .ui.checkbox input:focus~label, .ui.checkbox input:focus~label:after {
color: #9a9a9a;
}
.ui.selection.dropdown:hover {
border-color: rgba(34,36,38,.35);
border: 1px solid #456580;
}
.ui.selection.dropdown .menu>.item {
border-top: 1px solid #313c47;
}
.ui.selection.visible.dropdown>.text:not(.default) {
color: #9e9e9e;
}
.ui.negative.message {
background-color: rgba(80, 23, 17, 0.6);
color: #f9cbcb;
box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent;
}
.hljs-tag, .hljs-name, .hljs-attribute {
color: #ef5e77;
}
.user.profile .ui.card .extra.content ul li:not(:last-child) {
border-bottom: 1px solid #4c505c;
}
.ui.form textarea, .ui.form textarea:focus {
background: #404552;
border: 2px solid #353945;
}
.hljs-number, .hljs-literal, .hljs-variable, .hljs-template-variable, .hljs-tag .hljs-attr {
color: #bd84bf;
}
.hljs-string, .hljs-doctag {
color: #8ab398;
}
.ui.form .dropzone {
border: 2px dashed #4c505c;
}
.ui.basic.red.button, .ui.basic.red.buttons .button {
box-shadow: 0 0 0 1px #a04141 inset!important;
color: #a04141!important;
}
.ui.list .list>.item .header, .ui.list>.item .header {
color: #dedede;
}
.ui.list .list>.item .description, .ui.list>.item .description {
color: #9e9e9e;
}
.ui.user.list .item .description a {
color: #668cb1;
}
.repository.file.list #file-content .code-view .lines-num {
background: #2e323e;
}
.repository.file.list #repo-files-table tbody .octicon.octicon-file-directory, .repository.file.list #repo-files-table tbody .octicon.octicon-file-submodule {
color: #7c9b5e;
}
.ui.blue.button:focus, .ui.blue.buttons .button:focus {
background-color: #609926;
}
.ui.basic.blue.button:hover, .ui.basic.blue.buttons .button:hover {
box-shadow: 0 0 0 1px #609926 inset!important;
color: #609926!important;
}
.ui.basic.blue.button:focus, .ui.basic.blue.buttons .button:focus {
box-shadow: 0 0 0 1px #609926 inset!important;
color: #609926!important;
}
.repository.file.list #file-content .code-view .lines-num pre, .repository.file.list #file-content .code-view .lines-code pre, .repository.file.list #file-content .code-view .lines-num ol, .repository.file.list #file-content .code-view .lines-code ol, .repository.file.list #file-content .code-view .lines-num .hljs, .repository.file.list #file-content .code-view .lines-code .hljs {
background-color: #2a2e3a;
}
a.ui.label:hover, a.ui.labels .label:hover {
background-color: #505667;
color: rgb(219, 219, 219);
}
.repository .label.list .item {
border-bottom: 1px dashed #4c505c;
}
.repository.file.list #file-content .code-view .lines-num {
background: #2e323e;
}
.repository.file.list #repo-files-table tbody .octicon.octicon-file-directory, .repository.file.list #repo-files-table tbody .octicon.octicon-file-submodule {
color: #7c9b5e;
}
.ui.basic.blue.button, .ui.basic.blue.buttons .button {
box-shadow: 0 0 0 1px #a27558 inset !important;
color: #a27558 !important;
}
.repository.file.list #file-content .code-view .lines-num pre, .repository.file.list #file-content .code-view .lines-code pre, .repository.file.list #file-content .code-view .lines-num ol, .repository.file.list #file-content .code-view .lines-code ol, .repository.file.list #file-content .code-view .lines-num .hljs, .repository.file.list #file-content .code-view .lines-code .hljs {
background-color: #2a2e3a;
}
a.ui.label:hover, a.ui.labels .label:hover {
background-color: #505667;
color: rgb(219, 219, 219);
}
.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(3), .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4) {
background-color: #2a2e3a;
}
.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(4), .repository .diff-file-box .code-diff-split tbody tr td.add-code {
background-color: #283e2d !important;
border-color: #314a37 !important;
}
.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1), .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(2), .repository .diff-file-box .code-diff-split tbody tr td.del-code {
background-color: #3c2626 !important;
border-color: #634343 !important;
}
.ui.blue.button:focus, .ui.blue.buttons .button:focus {
background-color: #a27558;
}
.ui.blue.button:active, .ui.blue.buttons .button:active {
background-color: #a27558;
}
#git-graph-container li a {
color: #c79575;
}
#git-graph-container li .author {
color: #c79575;
}
.ui.header .sub.header {
color: #9e9e9e;
}
.ui.dividing.header {
border-bottom: 1px solid #4c505c;
}
.ui.modal>.header {
background: #404552;
color: #dbdbdb;
}
.ui.modal>.actions {
background: #404552;
border-top: 1px solid #404552;
}
.ui.modal>.content {
background: #383c4a;
}
.ui.basic.blue.button, .ui.basic.blue.buttons .button {
box-shadow: 0 0 0 1px #609926 inset!important;
color: #609926!important;
}
.editor-toolbar {
background-color: #404552;
a {
color: #87ab63 !important;
}
}
.CodeMirror {
color: #9daccc;
background-color: #2b2b2b;
border-top: none;
}
.CodeMirror-gutters{
background-color: #2b2b2b;
}

136
public/swagger.v1.json vendored
View File

@ -1847,7 +1847,7 @@
{
"type": "string",
"description": "if provided, only comments updated since the provided time are returned.",
"name": "string",
"name": "since",
"in": "query"
}
],
@ -2160,7 +2160,7 @@
{
"type": "string",
"description": "if provided, only comments updated since the specified time are returned.",
"name": "string",
"name": "since",
"in": "query"
}
],
@ -2320,6 +2320,68 @@
}
}
},
"/repos/{owner}/{repo}/issues/{index}/deadline": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"issue"
],
"summary": "Set an issue deadline. If set to null, the deadline is deleted.",
"operationId": "issueEditIssueDeadline",
"parameters": [
{
"type": "string",
"description": "owner of the repo",
"name": "owner",
"in": "path",
"required": true
},
{
"type": "string",
"description": "name of the repo",
"name": "repo",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "index of the issue to create or update a deadline on",
"name": "index",
"in": "path",
"required": true
},
{
"name": "body",
"in": "body",
"schema": {
"$ref": "#/definitions/EditDeadlineOption"
}
}
],
"responses": {
"201": {
"$ref": "#/responses/IssueDeadline"
},
"403": {
"description": "Not repo writer",
"schema": {
"$ref": "#/responses/forbidden"
}
},
"404": {
"description": "Issue not found",
"schema": {
"$ref": "#/responses/empty"
}
}
}
}
},
"/repos/{owner}/{repo}/issues/{index}/labels": {
"get": {
"produces": [
@ -5441,6 +5503,39 @@
}
}
},
"/users/{username}/tokens/{token}": {
"delete": {
"produces": [
"application/json"
],
"tags": [
"user"
],
"summary": "delete an access token",
"operationId": "userDeleteAccessToken",
"parameters": [
{
"type": "string",
"description": "username of user",
"name": "username",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "token to be deleted",
"name": "token",
"in": "path",
"required": true
}
],
"responses": {
"204": {
"$ref": "#/responses/empty"
}
}
}
},
"/version": {
"get": {
"produces": [
@ -6112,6 +6207,21 @@
},
"x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
},
"EditDeadlineOption": {
"description": "EditDeadlineOption options for creating a deadline",
"type": "object",
"required": [
"due_date"
],
"properties": {
"due_date": {
"type": "string",
"format": "date-time",
"x-go-name": "Deadline"
}
},
"x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
},
"EditHookOption": {
"description": "EditHookOption options when modify one hook",
"type": "object",
@ -6602,6 +6712,18 @@
},
"x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
},
"IssueDeadline": {
"description": "IssueDeadline represents an issue deadline",
"type": "object",
"properties": {
"due_date": {
"type": "string",
"format": "date-time",
"x-go-name": "Deadline"
}
},
"x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea"
},
"IssueLabelsOption": {
"description": "IssueLabelsOption a collection of labels",
"type": "object",
@ -7479,6 +7601,10 @@
"AccessToken": {
"description": "AccessToken represents a API access token.",
"headers": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
@ -7598,6 +7724,12 @@
"$ref": "#/definitions/Issue"
}
},
"IssueDeadline": {
"description": "IssueDeadline",
"schema": {
"$ref": "#/definitions/IssueDeadline"
}
},
"IssueList": {
"description": "IssueList",
"schema": {

View File

@ -9,7 +9,7 @@ File(s): /vendor/plugins/jquery/jquery.min.js
Version: 1.11.3
File(s): /vendor/plugins/semantic/semantic.min.js
Version: 2.2.1
Version: 2.3.1
File(s): /vendor/plugins/clipboard/clipboard.min.js
Version: 1.5.9

View File

@ -11,122 +11,122 @@
</thead>
<tbody>
<tr>
<td><a href="/vendor/plugins/jquery.areyousure/jquery.are-you-sure.js">jquery.are-you-sure.js</a></td>
<td><a href="./plugins/jquery.areyousure/jquery.are-you-sure.js">jquery.are-you-sure.js</a></td>
<td><a href="http://www.freebsd.org/copyright/freebsd-license.html">Expat</a></td>
<td><a href="https://github.com/codedance/jquery.AreYouSure/archive/1.9.0.tar.gz">jquery.areyousure-1.9.0.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/jquery/jquery.min.js">jquery.min.js</a></td>
<td><a href="./plugins/jquery/jquery.min.js">jquery.min.js</a></td>
<td><a href="http://www.freebsd.org/copyright/freebsd-license.html">Expat</a></td>
<td><a href="https://code.jquery.com/jquery-1.11.3.min.js">jquery-1.11.3.min.js</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/semantic/semantic.min.js">semantic.min.js</a></td>
<td><a href="http://www.freebsd.org/copyright/freebsd-license.html">Expat</a></td>
<td><a href="https://github.com/Semantic-Org/Semantic-UI/archive/2.2.1.tar.gz">semantic-UI-2.2.1.tar.gz</a></td>
<td><a href="./plugins/semantic/semantic.min.js">semantic.min.js</a></td>
<td><a href="https://semantic-ui.mit-license.org/">Expat</a></td>
<td><a href="https://github.com/Semantic-Org/Semantic-UI/archive/2.3.1.tar.gz">semantic-UI-2.3.1.tar.gz</a></td>
</tr>
<tr>
<td><a href="/js/index.js">index.js</a></td>
<td><a href="../js/index.js">index.js</a></td>
<td><a href="https://github.com/go-gitea/gitea/blob/master/LICENSE">Expat</a></td>
<td><a href="https://github.com/go-gitea/gitea/tree/master/public/js">index.js</a></td>
</tr>
<tr>
<td><a href="/js/draw.js">draw.js</a></td>
<td><a href="../js/draw.js">draw.js</a></td>
<td><a href="https://github.com/go-gitea/gitea/blob/master/LICENSE">Expat</a></td>
<td><a href="https://github.com/go-gitea/gitea/tree/master/public/js">draw.js</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/clipboard/clipboard.min.js">clipboard.min.js</a></td>
<td><a href="./plugins/clipboard/clipboard.min.js">clipboard.min.js</a></td>
<td><a href="http://www.freebsd.org/copyright/freebsd-license.html">Expat</a></td>
<td><a href="https://github.com/zenorocha/clipboard.js/archive/v1.5.9.tar.gz">clipboard-1.5.9.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/gitgraph/gitgraph.js">gitgraph.js</a></td>
<td><a href="./plugins/gitgraph/gitgraph.js">gitgraph.js</a></td>
<td><a href="https://github.com/bluef/gitgraph.js/blob/master/LICENSE">BSD 3-Clause</a></td>
<td><a href="https://github.com/bluef/gitgraph.js">gitgraph.js-latest</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/vue/vue.min.js">vue.min.js</a></td>
<td><a href="./plugins/vue/vue.min.js">vue.min.js</a></td>
<td><a href="https://github.com/vuejs/vue/blob/dev/LICENSE">Expat</a></td>
<td><a href="https://github.com/vuejs/vue/archive/v2.1.10.tar.gz">vue.js-v2.1.10.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/emojify/emojify.min.js">emojify.min.js</a></td>
<td><a href="./plugins/emojify/emojify.min.js">emojify.min.js</a></td>
<td><a href="http://www.freebsd.org/copyright/freebsd-license.html">Expat</a></td>
<td><a href="https://github.com/Ranks/emojify.js/archive/1.1.0.tar.gz">emojify-1.1.0.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/cssrelpreload/loadCSS.min.js">loadCSS.min.js</a></td>
<td><a href="./plugins/cssrelpreload/loadCSS.min.js">loadCSS.min.js</a></td>
<td><a href="http://www.freebsd.org/copyright/freebsd-license.html">Expat</a></td>
<td><a href="https://github.com/filamentgroup/loadCSS/archive/v1.3.1.tar.gz">loadCSS-1.3.1.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/cssrelpreload/cssrelpreload.min.js">cssrelpreload.min.js</a></td>
<td><a href="./plugins/cssrelpreload/cssrelpreload.min.js">cssrelpreload.min.js</a></td>
<td><a href="http://www.freebsd.org/copyright/freebsd-license.html">Expat</a></td>
<td><a href="https://github.com/filamentgroup/loadCSS/archive/v1.3.1.tar.gz">loadCSS-1.3.1.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/dropzone/dropzone.js">dropzone.js</a></td>
<td><a href="./plugins/dropzone/dropzone.js">dropzone.js</a></td>
<td><a href="https://github.com/enyo/dropzone/blob/master/LICENSE">Expat</a></td>
<td><a href="https://github.com/enyo/dropzone/archive/v4.2.0.tar.gz">dropzone.js-4.2.0.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/highlight/highlight.pack.js">highlight.pack.js</a></td>
<td><a href="./plugins/highlight/highlight.pack.js">highlight.pack.js</a></td>
<td><a href="https://github.com/isagalaev/highlight.js/blob/master/LICENSE">BSD 3-Clause</a></td>
<td><a href="https://github.com/isagalaev/highlight.js/archive/9.6.0.tar.gz">highlight.js-9.6.0.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/jquery.datetimepicker/jquery.datetimepicker.js">jquery.datetimepicker.js</a></td>
<td><a href="./plugins/jquery.datetimepicker/jquery.datetimepicker.js">jquery.datetimepicker.js</a></td>
<td><a href="https://github.com/xdan/datetimepicker/blob/master/MIT-LICENSE.txt">Expat</a></td>
<td><a href="https://github.com/xdan/datetimepicker/archive/2.4.5.tar.gz">jquery.datetimepicker-2.4.5.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/jquery.minicolors/jquery.minicolors.min.js">jquery.minicolors.min.js</a></td>
<td><a href="./plugins/jquery.minicolors/jquery.minicolors.min.js">jquery.minicolors.min.js</a></td>
<td><a href="https://github.com/claviska/jquery-minicolors/blob/master/LICENSE.md">Expat</a></td>
<td><a href="https://github.com/claviska/jquery-minicolors/archive/2.2.3.tar.gz">jquery.minicolors-2.2.3.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/codemirror/addon/mode/loadmode.js">loadmode.js</a></td>
<td><a href="./plugins/codemirror/addon/mode/loadmode.js">loadmode.js</a></td>
<td><a href="https://github.com/codemirror/CodeMirror/blob/master/LICENSE">Expat</a></td>
<td><a href="https://github.com/codemirror/CodeMirror/archive/5.17.0.tar.gz">codemirror-5.17.0.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/codemirror/mode/meta.js">meta.js</a></td>
<td><a href="./plugins/codemirror/mode/meta.js">meta.js</a></td>
<td><a href="https://github.com/codemirror/CodeMirror/blob/master/LICENSE">Expat</a></td>
<td><a href="https://github.com/codemirror/CodeMirror/archive/5.17.0.tar.gz">codemirror-5.17.0.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/simplemde/simplemde.min.js">simplemde.min.js</a></td>
<td><a href="./plugins/simplemde/simplemde.min.js">simplemde.min.js</a></td>
<td><a href="https://github.com/sparksuite/simplemde-markdown-editor/blob/master/LICENSE">Expat</a></td>
<td><a href="https://github.com/NextStepWebs/simplemde-markdown-editor/archive/1.10.1.tar.gz">simplemde-markdown-editor-1.10.1.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/pdfjs/">pdf.js</a></td>
<td><a href="./plugins/pdfjs/">pdf.js</a></td>
<td><a href="https://github.com/mozilla/pdf.js/blob/master/LICENSE">Apache-2.0-only</a></td>
<td><a href="https://github.com/mozilla/pdf.js/archive/v1.4.20.tar.gz">pdf.js-v1.4.20.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/u2f/">u2f-api</a></td>
<td><a href="./plugins/u2f/">u2f-api</a></td>
<td><a href="https://github.com/go-gitea/u2f-api/blob/master/LICENSE">Expat</a></td>
<td><a href="https://github.com/go-gitea/u2f-api/archive/v1.0.8.zip">u2f-api-1.0.8.zip</a></td>
</tr>
<tr>
<td><a href="/vendor/assets/font-awesome/fonts/">font-awesome - fonts</a></td>
<td><a href="./assets/font-awesome/fonts/">font-awesome - fonts</a></td>
<td><a href="http://fontawesome.io/license/">OFL</a></td>
<td><a href="http://fontawesome.io/assets/font-awesome-4.6.0.zip">font-awesome-4.6.0.zip</a></td>
</tr>
<tr>
<td><a href="/vendor/assets/font-awesome/css/">font-awesome - code</a></td>
<td><a href="./assets/font-awesome/css/">font-awesome - code</a></td>
<td><a href="http://fontawesome.io/license/">Expat</a></td>
<td><a href="http://fontawesome.io/assets/font-awesome-4.6.0.zip">font-awesome-4.6.0.zip</a></td>
</tr>
<tr>
<td><a href="/vendor/assets/octicons/">octicons</a></td>
<td><a href="./assets/octicons/">octicons</a></td>
<td><a href="https://github.com/primer/octicons/blob/master/LICENSE">Expat</a></td>
<td><a href="https://github.com/primer/octicons/archive/v4.3.0.tar.gz">octicons-v4.3.0.tar.gz</a></td>
</tr>
<tr>
<td><a href="/vendor/assets/swagger-ui/">swagger-ui</a></td>
<td><a href="./assets/swagger-ui/">swagger-ui</a></td>
<td><a href="https://github.com/swagger-api/swagger-ui/blob/master/LICENSE">Apache-2.0</a></td>
<td><a href="https://github.com/swagger-api/swagger-ui/archive/v3.0.4.tar.gz">swagger-ui-v3.0.4.tar.gz</a></td>
</tr>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 496 KiB

Some files were not shown because too many files have changed in this diff Show More