mirror of
https://github.com/gogs/gogs.git
synced 2026-03-01 17:50:59 +01:00
Compare commits
173 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a4c981e31 | ||
|
|
0d48344f93 | ||
|
|
21ceba6cfd | ||
|
|
f8302c5470 | ||
|
|
7a7e07a57c | ||
|
|
520530dfcf | ||
|
|
31c18b4bc7 | ||
|
|
1ec365de25 | ||
|
|
99f3eabb1b | ||
|
|
32479744f6 | ||
|
|
b68de2330d | ||
|
|
68a6579852 | ||
|
|
798798f7ab | ||
|
|
54e9442a14 | ||
|
|
f7b9f35ce1 | ||
|
|
068e6ce2c9 | ||
|
|
5d4bb4d6f8 | ||
|
|
a05c19682e | ||
|
|
5caa7436d8 | ||
|
|
512a900202 | ||
|
|
ba7b2cc1f6 | ||
|
|
ac73d43444 | ||
|
|
33434a40d7 | ||
|
|
844d69143f | ||
|
|
77275a9b31 | ||
|
|
de10d9be08 | ||
|
|
3c227af508 | ||
|
|
4c1a479a60 | ||
|
|
cc95d251d6 | ||
|
|
1f247cf813 | ||
|
|
c9bb33afc3 | ||
|
|
97fb9d283f | ||
|
|
66016b8499 | ||
|
|
8bbf0293f5 | ||
|
|
87b229d280 | ||
|
|
2a86b3e31d | ||
|
|
436dd6c0a4 | ||
|
|
f6bdefe3f3 | ||
|
|
cd71077c6a | ||
|
|
029b33c650 | ||
|
|
f4f4edf276 | ||
|
|
992ea5802a | ||
|
|
376a629c9f | ||
|
|
303fa37b60 | ||
|
|
ef02414d7e | ||
|
|
bcf83ea792 | ||
|
|
86a27cf16d | ||
|
|
08ae0dd74b | ||
|
|
93f3a7f96a | ||
|
|
7856b1202d | ||
|
|
e5ddbcab7d | ||
|
|
f9bc980b0b | ||
|
|
806754b512 | ||
|
|
4d18df204a | ||
|
|
04b4431bc0 | ||
|
|
dfd494c113 | ||
|
|
57897cc8c2 | ||
|
|
459c8be94f | ||
|
|
5e158b51db | ||
|
|
fbecc18e2e | ||
|
|
b538c5345e | ||
|
|
694208865b | ||
|
|
a75c435245 | ||
|
|
53c8e4263b | ||
|
|
078549518d | ||
|
|
4c844081f3 | ||
|
|
91441c3fb2 | ||
|
|
b152cbe45a | ||
|
|
c08aab90ec | ||
|
|
8d091ec062 | ||
|
|
0376e59520 | ||
|
|
e25fe22f9d | ||
|
|
bef7f6745c | ||
|
|
775919c129 | ||
|
|
702acc06d8 | ||
|
|
b5a1daa756 | ||
|
|
5a47301dbd | ||
|
|
e33d9e77f4 | ||
|
|
aff4208244 | ||
|
|
73dbaefec5 | ||
|
|
05edcde6c9 | ||
|
|
01ccc2cc96 | ||
|
|
cd093a07a3 | ||
|
|
7e450542d9 | ||
|
|
45545e897c | ||
|
|
eccc8109c1 | ||
|
|
2fabcd0455 | ||
|
|
e3ce295215 | ||
|
|
8df59c01d5 | ||
|
|
15f9a83618 | ||
|
|
d572381a37 | ||
|
|
9127001f11 | ||
|
|
742420a5e2 | ||
|
|
f439df4441 | ||
|
|
c92e8940dc | ||
|
|
c68fc4f31a | ||
|
|
0e80e47592 | ||
|
|
54b9311344 | ||
|
|
9387b79b98 | ||
|
|
5c2de3a9ea | ||
|
|
eac5b48da0 | ||
|
|
f89d948c06 | ||
|
|
45a0988833 | ||
|
|
afbb31c05e | ||
|
|
e6af6487e1 | ||
|
|
c0b45fa36f | ||
|
|
cb47595f13 | ||
|
|
c59704a24b | ||
|
|
f2ecfdc96a | ||
|
|
717d409b72 | ||
|
|
6e207c823e | ||
|
|
b69294b6d6 | ||
|
|
6cbaa4787b | ||
|
|
8b66c433c5 | ||
|
|
3329bfa5b2 | ||
|
|
f41f5785bf | ||
|
|
55f148f499 | ||
|
|
2978bb1773 | ||
|
|
0152e12172 | ||
|
|
38d73a4be6 | ||
|
|
34bd04f925 | ||
|
|
17d789a785 | ||
|
|
63a263f542 | ||
|
|
932490d7f1 | ||
|
|
a855abf8c0 | ||
|
|
0d2398aaff | ||
|
|
c17a6ff533 | ||
|
|
c3c7944d79 | ||
|
|
75555585e8 | ||
|
|
28e0003a9a | ||
|
|
2818ce4632 | ||
|
|
52ee796d6d | ||
|
|
0f737f2999 | ||
|
|
6a185e94b9 | ||
|
|
ba0a78da2a | ||
|
|
f0bbcef3a4 | ||
|
|
d7280f82ac | ||
|
|
aa53d0978c | ||
|
|
ffdd8b3afa | ||
|
|
86d249eb16 | ||
|
|
28f74cf1c6 | ||
|
|
83655d5c00 | ||
|
|
63eaac67a6 | ||
|
|
1f7983059a | ||
|
|
51e087fd87 | ||
|
|
679147cd5d | ||
|
|
40eb652cfa | ||
|
|
f4e4ea1374 | ||
|
|
199d67581a | ||
|
|
49bd893a77 | ||
|
|
8729a60c1d | ||
|
|
e4f187cd3d | ||
|
|
f9c706e31b | ||
|
|
c5728291ba | ||
|
|
68d22e78bf | ||
|
|
0bfce7aca4 | ||
|
|
7faa2356d8 | ||
|
|
2a8a293c7c | ||
|
|
f3e8352193 | ||
|
|
ca874ba8c7 | ||
|
|
f274f76607 | ||
|
|
a8b9cefa73 | ||
|
|
b9e4a052b8 | ||
|
|
4a669f5478 | ||
|
|
ade8aab43f | ||
|
|
17d2a9c435 | ||
|
|
6f2347fc71 | ||
|
|
dd245fe8bd | ||
|
|
f12c058b78 | ||
|
|
3cba8778b2 | ||
|
|
1c33c936e6 | ||
|
|
67d67289c7 | ||
|
|
f4ab9f9932 |
@@ -1,5 +1,3 @@
|
||||
.git
|
||||
.git/**
|
||||
packager
|
||||
packager/**
|
||||
scripts
|
||||
|
||||
4
.gitattributes
vendored
4
.gitattributes
vendored
@@ -4,7 +4,7 @@ public/assets/* linguist-vendored
|
||||
public/plugins/* linguist-vendored
|
||||
public/css/themes/* linguist-vendored
|
||||
public/css/github.min.css linguist-vendored
|
||||
public/css/semantic-2.2.10.min.css linguist-vendored
|
||||
public/css/semantic-2.3.1.min.css linguist-vendored
|
||||
public/js/libs/* linguist-vendored
|
||||
public/js/jquery-1.11.3.min.js linguist-vendored
|
||||
public/js/semantic-2.2.10.min.js linguist-vendored
|
||||
public/js/semantic-2.3.1.min.js linguist-vendored
|
||||
21
.github/CONTRIBUTING.md
vendored
21
.github/CONTRIBUTING.md
vendored
@@ -15,26 +15,7 @@ Depends on the situation, you will:
|
||||
|
||||
### Bug Report
|
||||
|
||||
If you find something you consider a bug, please create a issue on [GitHub](https://github.com/gogits/gogs/issues). To avoid wasting time and reduce back-and-forth communication with team members, please include at least the following information in a form comfortable for you:
|
||||
|
||||
- Bug Description
|
||||
- Gogs Version
|
||||
- Git Version
|
||||
- System Type
|
||||
- Error Log
|
||||
- Other information
|
||||
|
||||
Please take a moment to check that an issue on [GitHub](https://github.com/gogits/gogs/issues) doesn't already exist documenting your bug report or improvement proposal. If it does, it never hurts to add a quick "+1" or "I have this problem too". This will help prioritize the most common problems and requests.
|
||||
|
||||
#### Bug Report Example
|
||||
|
||||
Gogs crashed when creating a repository with a license, using v0.5.13.0207, SQLite3, Git 1.9.0, Ubuntu 12.04.
|
||||
|
||||
Error log:
|
||||
|
||||
```
|
||||
2014/09/01 07:21:49 [E] nil pointer
|
||||
```
|
||||
If you find something you consider a bug, please create an issue on [GitHub](https://github.com/gogits/gogs/issues). To avoid wasting time and reduce back-and-forth communication with team members, please be respect to [Issue Template](ISSUE_TEMPLATE.md).
|
||||
|
||||
### Feature Request
|
||||
|
||||
|
||||
3
.github/ISSUE_TEMPLATE.md
vendored
3
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,7 +1,8 @@
|
||||
The issue will be closed without any reasons if it does not satisfy any of following requirements:
|
||||
|
||||
1. Please speak English, we have forum in [Chinese](https://discuss.gogs.io/c/getting-help/getting-help-chinese).
|
||||
1. Please speak English, we have forum in [中文](https://discuss.gogs.io/c/getting-help/getting-help-chinese).
|
||||
2. Please post questions or config/deploy problems on our forum: https://discuss.gogs.io, here are bugs and feature requests only.
|
||||
3. Please do not end your title with a question mark or period.
|
||||
3. Please take a moment to search that an issue doesn't already exist.
|
||||
4. Please give all relevant information below for bug reports; incomplete details considered invalid report.
|
||||
|
||||
|
||||
64
.gopmfile
64
.gopmfile
@@ -1,64 +0,0 @@
|
||||
[target]
|
||||
path = github.com/gogits/gogs
|
||||
|
||||
[deps]
|
||||
github.com/bradfitz/gomemcache = commit:2fafb84
|
||||
github.com/urfave/cli = commit:347a988
|
||||
github.com/go-macaron/binding = commit:4892016
|
||||
github.com/go-macaron/cache = commit:5617353
|
||||
github.com/go-macaron/captcha = commit:8aa5919
|
||||
github.com/go-macaron/csrf = commit:6a9a7df
|
||||
github.com/go-macaron/gzip = commit:cad1c65
|
||||
github.com/go-macaron/i18n = commit:ef57533
|
||||
github.com/go-macaron/inject = commit:d8a0b86
|
||||
github.com/go-macaron/session = commit:66031fc
|
||||
github.com/go-macaron/toolbox = commit:82b5115
|
||||
github.com/go-sql-driver/mysql = commit:2e00b5c
|
||||
github.com/go-xorm/builder = commit:9c35786
|
||||
github.com/go-xorm/core = commit:7daacb2
|
||||
github.com/go-xorm/xorm = commit:19f6dfc
|
||||
github.com/gogits/chardet = commit:2404f77
|
||||
github.com/gogits/cron = commit:2fc07a4
|
||||
github.com/gogits/git-module = commit:1b9552b
|
||||
github.com/gogits/go-gogs-client = commit:264a3d5
|
||||
github.com/gogits/go-libravatar = commit:cd1abbd
|
||||
github.com/issue9/identicon = commit:d36b545
|
||||
github.com/jaytaylor/html2text = commit:d16d412
|
||||
github.com/kardianos/minwinsvc = commit:cad6b2b
|
||||
github.com/klauspost/compress = commit:461e8fd
|
||||
github.com/klauspost/cpuid = commit:09cded8
|
||||
github.com/klauspost/crc32 = commit:cb6bfca
|
||||
github.com/lib/pq = commit:67c3f2a
|
||||
github.com/mattn/go-colorable = commit:d228849
|
||||
github.com/mattn/go-isatty = commit:30a891c
|
||||
github.com/mattn/go-sqlite3 = commit:ce9149a
|
||||
github.com/mcuadros/go-version = commit:257f7b9
|
||||
github.com/microcosm-cc/bluemonday = commit:e797637
|
||||
github.com/msteinert/pam = commit:02ccfbf
|
||||
github.com/nfnt/resize = commit:891127d
|
||||
github.com/russross/blackfriday = commit:5f33e7b
|
||||
github.com/satori/go.uuid = commit:b061729
|
||||
github.com/sergi/go-diff = commit:24e2351
|
||||
github.com/shurcooL/sanitized_anchor_name = commit:1dba4b3
|
||||
github.com/Unknwon/cae = commit:c6aac99
|
||||
github.com/Unknwon/com = commit:28b053d
|
||||
github.com/Unknwon/i18n = commit:e0eb0ce
|
||||
github.com/Unknwon/paginater = commit:701c23f
|
||||
github.com/fatih/color = commit:42c364b
|
||||
golang.org/x/crypto = commit:dc137be
|
||||
golang.org/x/net = commit:f249948
|
||||
golang.org/x/sys = commit:d75a526
|
||||
golang.org/x/text = commit:ece019d
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 = commit:2caba25
|
||||
gopkg.in/asn1-ber.v1 = commit:4e86f43
|
||||
gopkg.in/bufio.v1 = commit:567b2bf
|
||||
gopkg.in/clog.v1 = commit:bf4bf4a
|
||||
gopkg.in/editorconfig/editorconfig-core-go.v1 = commit:a872f05
|
||||
gopkg.in/gomail.v2 = commit:81ebce5
|
||||
gopkg.in/ini.v1 = commit:e3c2d47
|
||||
gopkg.in/ldap.v2 = commit:8168ee0
|
||||
gopkg.in/macaron.v1 = commit:8be5635
|
||||
gopkg.in/redis.v2 = commit:e617904
|
||||
|
||||
[res]
|
||||
include = public|scripts|templates
|
||||
@@ -7,6 +7,8 @@ targets:
|
||||
- git
|
||||
debian-8:
|
||||
<<: *debian
|
||||
debian-9:
|
||||
<<: *debian
|
||||
ubuntu-12.04:
|
||||
<<: *debian
|
||||
ubuntu-14.04:
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
language: go
|
||||
go:
|
||||
- 1.6.x
|
||||
- 1.7.x
|
||||
- 1.8.x
|
||||
- 1.9.x
|
||||
- 1.10.x
|
||||
- 1.11.x
|
||||
- master
|
||||
|
||||
before_install:
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -y libpam-dev
|
||||
|
||||
env:
|
||||
- GO15VENDOREXPERIMENT=1
|
||||
|
||||
script:
|
||||
script:
|
||||
- go build -v -tags "pam"
|
||||
- go test -v -cover -race ./...
|
||||
|
||||
24
Dockerfile
24
Dockerfile
@@ -1,7 +1,13 @@
|
||||
FROM alpine:3.5
|
||||
FROM golang:alpine AS binarybuilder
|
||||
# Install build deps
|
||||
RUN apk --no-cache --no-progress add --virtual build-deps build-base git linux-pam-dev
|
||||
WORKDIR /go/src/github.com/gogs/gogs
|
||||
COPY . .
|
||||
RUN make build TAGS="sqlite cert pam"
|
||||
|
||||
FROM alpine:latest
|
||||
# Install system utils & Gogs runtime dependencies
|
||||
ADD https://github.com/tianon/gosu/releases/download/1.9/gosu-amd64 /usr/sbin/gosu
|
||||
ADD https://github.com/tianon/gosu/releases/download/1.10/gosu-amd64 /usr/sbin/gosu
|
||||
RUN chmod +x /usr/sbin/gosu \
|
||||
&& echo http://dl-2.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories \
|
||||
&& apk --no-cache --no-progress add \
|
||||
@@ -20,16 +26,14 @@ ENV GOGS_CUSTOM /data/gogs
|
||||
|
||||
# Configure LibC Name Service
|
||||
COPY docker/nsswitch.conf /etc/nsswitch.conf
|
||||
COPY docker /app/gogs/docker
|
||||
COPY templates /app/gogs/templates
|
||||
COPY public /app/gogs/public
|
||||
|
||||
WORKDIR /app/gogs/build
|
||||
COPY . .
|
||||
WORKDIR /app/gogs
|
||||
COPY docker ./docker
|
||||
COPY templates ./templates
|
||||
COPY public ./public
|
||||
COPY --from=binarybuilder /go/src/github.com/gogs/gogs/gogs .
|
||||
|
||||
RUN ./docker/build-go.sh \
|
||||
&& ./docker/build.sh \
|
||||
&& ./docker/finalize.sh
|
||||
RUN ./docker/finalize.sh
|
||||
|
||||
# Configure Docker Container
|
||||
VOLUME ["/data"]
|
||||
|
||||
48
Dockerfile.aarch64hub
Normal file
48
Dockerfile.aarch64hub
Normal file
@@ -0,0 +1,48 @@
|
||||
FROM arm64v8/alpine:3.8
|
||||
|
||||
ENV GOGS_CUSTOM /data/gogs
|
||||
ENV QEMU_EXECVE 1
|
||||
|
||||
# For cross compile on dockerhub
|
||||
################################
|
||||
|
||||
COPY ./docker/aarch64/qemu-aarch64-static /usr/bin/
|
||||
COPY ./docker/aarch64/resin-xbuild /usr/bin/
|
||||
|
||||
RUN [ "/usr/bin/qemu-aarch64-static", "/bin/sh", "-c", "ln -s resin-xbuild /usr/bin/cross-build-start; ln -s resin-xbuild /usr/bin/cross-build-end; ln /bin/sh /bin/sh.real" ]
|
||||
|
||||
RUN [ "cross-build-start" ]
|
||||
|
||||
# Prepare the container
|
||||
#######################
|
||||
|
||||
# Install system utils & Gogs runtime dependencies
|
||||
ADD https://github.com/tianon/gosu/releases/download/1.10/gosu-arm64 /usr/sbin/gosu
|
||||
RUN chmod +x /usr/sbin/gosu \
|
||||
&& apk --no-cache --no-progress add ca-certificates bash git linux-pam s6 curl openssh socat tzdata go=1.10.1-r0
|
||||
|
||||
|
||||
|
||||
COPY docker /app/gogs/docker
|
||||
COPY templates /app/gogs/templates
|
||||
COPY public /app/gogs/public
|
||||
WORKDIR /app/gogs/build
|
||||
COPY . .
|
||||
|
||||
RUN ./docker/build.sh \
|
||||
&& ./docker/finalize.sh
|
||||
|
||||
# Configure LibC Name Service
|
||||
COPY docker/nsswitch.conf /etc/nsswitch.conf
|
||||
|
||||
# For cross compile on dockerhub
|
||||
################################
|
||||
|
||||
RUN [ "cross-build-end" ]
|
||||
|
||||
# Configure Docker Container
|
||||
############################
|
||||
VOLUME ["/data"]
|
||||
EXPOSE 22 3000
|
||||
ENTRYPOINT ["/app/gogs/docker/start.sh"]
|
||||
CMD ["/bin/s6-svscan", "/app/gogs/docker/s6/"]
|
||||
9
Makefile
9
Makefile
@@ -1,5 +1,5 @@
|
||||
LDFLAGS += -X "github.com/gogits/gogs/pkg/setting.BuildTime=$(shell date -u '+%Y-%m-%d %I:%M:%S %Z')"
|
||||
LDFLAGS += -X "github.com/gogits/gogs/pkg/setting.BuildGitHash=$(shell git rev-parse HEAD)"
|
||||
LDFLAGS += -X "github.com/gogs/gogs/pkg/setting.BuildTime=$(shell date -u '+%Y-%m-%d %I:%M:%S %Z')"
|
||||
LDFLAGS += -X "github.com/gogs/gogs/pkg/setting.BuildGitHash=$(shell git rev-parse HEAD)"
|
||||
|
||||
DATA_FILES := $(shell find conf | sed 's/ /\\ /g')
|
||||
LESS_FILES := $(wildcard public/less/gogs.less public/less/_*.less)
|
||||
@@ -14,6 +14,7 @@ RELEASE_ROOT = "release"
|
||||
RELEASE_GOGS = "release/gogs"
|
||||
NOW = $(shell date -u '+%Y%m%d%I%M%S')
|
||||
GOVET = go tool vet -composites=false -methods=false -structtags=false
|
||||
GOPATH = $(shell echo $${PWD%%src*})
|
||||
|
||||
.PHONY: build pack release bindata clean
|
||||
|
||||
@@ -56,12 +57,12 @@ release: build pack
|
||||
bindata: pkg/bindata/bindata.go
|
||||
|
||||
pkg/bindata/bindata.go: $(DATA_FILES)
|
||||
go-bindata -o=$@ -ignore="\\.DS_Store|README.md|TRANSLATORS" -pkg=bindata conf/...
|
||||
go-bindata -o=$@ -ignore="\\.DS_Store|README.md|TRANSLATORS|auth.d" -pkg=bindata conf/...
|
||||
|
||||
less: public/css/gogs.css
|
||||
|
||||
public/css/gogs.css: $(LESS_FILES)
|
||||
lessc $< $@
|
||||
@type lessc >/dev/null 2>&1 && lessc $< >$@ || echo "lessc command not found, skipped."
|
||||
|
||||
clean:
|
||||
go clean -i ./...
|
||||
|
||||
28
README.md
28
README.md
@@ -1,9 +1,9 @@
|
||||
Gogs [](https://travis-ci.org/gogits/gogs) [](https://ci.appveyor.com/project/Unknwon/gogs/branch/master) [](https://crowdin.com/project/gogs)
|
||||
Gogs [](https://travis-ci.org/gogs/gogs) [](https://ci.appveyor.com/project/Unknwon/gogs/branch/master) [](https://crowdin.com/project/gogs) [](https://discord.gg/9aqdHU7)
|
||||
=====================
|
||||
|
||||

|
||||

|
||||
|
||||
##### Current tip version: [`.VERSION`](templates/.VERSION) (see [Releases](https://github.com/gogits/gogs/releases) for binary versions)
|
||||
##### Current tip version: [`.VERSION`](templates/.VERSION) (see [Releases](https://github.com/gogs/gogs/releases) for binary versions)
|
||||
|
||||
| Web | UI | Preview |
|
||||
|:-------------:|:-------:|:-------:|
|
||||
@@ -13,18 +13,18 @@ Gogs [](http
|
||||
|
||||
### Important Notes
|
||||
|
||||
1. **YOU MUST READ [Contributing Code](https://github.com/gogits/gogs/wiki/Contributing-Code) BEFORE STARTING TO WORK ON A PULL REQUEST**.
|
||||
1. **YOU MUST READ [Contributing Code](https://github.com/gogs/gogs/wiki/Contributing-Code) BEFORE STARTING TO WORK ON A PULL REQUEST**.
|
||||
2. Due to testing purpose, data of [try.gogs.io](https://try.gogs.io) was reset in **Jan 28, 2015** and will reset multiple times after. Please do **NOT** put your important data on the site.
|
||||
3. The demo site [try.gogs.io](https://try.gogs.io) is running under `develop` branch.
|
||||
4. If you think there are vulnerabilities in the project, please talk privately to **u@gogs.io**, and the name you want to be credited as. Thanks!
|
||||
5. If you're interested in using APIs, we have experimental support with [documentation](https://github.com/gogits/go-gogs-client/wiki).
|
||||
5. If you're interested in using APIs, we have experimental support with [documentation](https://github.com/gogs/go-gogs-client/wiki).
|
||||
6. If your team/company is using Gogs and would like to put your logo on [our website](https://gogs.io), contact us by any means.
|
||||
|
||||
[简体中文](README_ZH.md)
|
||||
|
||||
## Purpose
|
||||
## Vision
|
||||
|
||||
The goal of this project is to make the easiest, fastest, and most painless way of setting up a self-hosted Git service. With Go, this can be done with an independent binary distribution across **ALL platforms** that Go supports, including Linux, Mac OS X, Windows and ARM.
|
||||
This project aims to build a simple, stable and extensible self-hosted Git service that can be setup in the most painless way. With Go, this can be done with an independent binary distribution across **ALL platforms** that Go supports, including Linux, macOS, Windows and ARM.
|
||||
|
||||
## Overview
|
||||
|
||||
@@ -52,7 +52,7 @@ The goal of this project is to make the easiest, fastest, and most painless way
|
||||
- Mail service
|
||||
- Administration panel
|
||||
- Supports MySQL, PostgreSQL, SQLite3, MSSQL and [TiDB](https://github.com/pingcap/tidb) (via MySQL protocol)
|
||||
- Multi-language support ([26 languages](https://crowdin.com/project/gogs))
|
||||
- Multi-language support ([29 languages](https://crowdin.com/project/gogs))
|
||||
|
||||
## Hardware Requirements
|
||||
|
||||
@@ -74,7 +74,7 @@ There are 5 ways to install Gogs:
|
||||
- [Install from binary](https://gogs.io/docs/installation/install_from_binary.html)
|
||||
- [Install from source](https://gogs.io/docs/installation/install_from_source.html)
|
||||
- [Install from packages](https://gogs.io/docs/installation/install_from_packages.html)
|
||||
- [Ship with Docker](https://github.com/gogits/gogs/tree/master/docker)
|
||||
- [Ship with Docker](https://github.com/gogs/gogs/tree/master/docker)
|
||||
- [Install with Vagrant](https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs)
|
||||
|
||||
### Tutorials
|
||||
@@ -124,15 +124,15 @@ There are 5 ways to install Gogs:
|
||||
## Acknowledgments
|
||||
|
||||
- Thanks [Egon Elbre](https://twitter.com/egonelbre) for designing logo.
|
||||
- Thanks [Crowdin](https://crowdin.com/project/gogs) for providing open source translation plan.
|
||||
- Thanks [DigitalOcean](https://www.digitalocean.com) for hosting home and demo sites.
|
||||
- Thanks [KeyCDN](https://www.keycdn.com/) and [QiNiu](http://www.qiniu.com/) for providing CDN service.
|
||||
- Thanks [Crowdin](https://crowdin.com/project/gogs) for sponsoring open source translation plan.
|
||||
- Thanks [DigitalOcean](https://www.digitalocean.com) for sponsoring VPS service.
|
||||
- Thanks [KeyCDN](https://www.keycdn.com/) for sponsoring CDN service.
|
||||
|
||||
## Contributors
|
||||
|
||||
- See [contributors page](https://github.com/gogits/gogs/graphs/contributors) for top 100 contributors.
|
||||
- See [contributors page](https://github.com/gogs/gogs/graphs/contributors) for top 100 contributors.
|
||||
- See [TRANSLATORS](conf/locale/TRANSLATORS) for public list of translators.
|
||||
|
||||
## License
|
||||
|
||||
This project is under the MIT License. See the [LICENSE](https://github.com/gogits/gogs/blob/master/LICENSE) file for the full license text.
|
||||
This project is under the MIT License. See the [LICENSE](https://github.com/gogs/gogs/blob/master/LICENSE) file for the full license text.
|
||||
|
||||
16
README_ZH.md
16
README_ZH.md
@@ -1,11 +1,11 @@
|
||||
Gogs [](https://travis-ci.org/gogits/gogs) [](https://ci.appveyor.com/project/Unknwon/gogs/branch/master)
|
||||
Gogs [](https://travis-ci.org/gogs/gogs) [](https://ci.appveyor.com/project/Unknwon/gogs/branch/master)
|
||||
=====================
|
||||
|
||||
Gogs 是一款极易搭建的自助 Git 服务。
|
||||
|
||||
## 开发目的
|
||||
## 项目愿景
|
||||
|
||||
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 **所有平台**,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
|
||||
本项目旨在打造一个以最简便的方式搭建简单、稳定和可扩展的自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 **所有平台**,包括 Linux、macOS、Windows 以及 ARM 平台。
|
||||
|
||||
## 项目概览
|
||||
|
||||
@@ -33,7 +33,7 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
|
||||
- 支持邮件服务
|
||||
- 支持后台管理面板
|
||||
- 支持 MySQL、PostgreSQL、SQLite3、MSSQL 和 [TiDB](https://github.com/pingcap/tidb)(通过 MySQL 协议)数据库
|
||||
- 支持多语言本地化([26 种语言]([more](https://crowdin.com/project/gogs)))
|
||||
- 支持多语言本地化([29 种语言]([more](https://crowdin.com/project/gogs)))
|
||||
|
||||
## 硬件要求
|
||||
|
||||
@@ -55,7 +55,7 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
|
||||
- [二进制安装](https://gogs.io/docs/installation/install_from_binary.html)
|
||||
- [源码安装](https://gogs.io/docs/installation/install_from_source.html)
|
||||
- [包管理安装](https://gogs.io/docs/installation/install_from_packages.html)
|
||||
- [采用 Docker 部署](https://github.com/gogits/gogs/tree/master/docker)
|
||||
- [采用 Docker 部署](https://github.com/gogs/gogs/tree/master/docker)
|
||||
- [通过 Vagrant 安装](https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs)
|
||||
|
||||
### 使用教程
|
||||
@@ -95,13 +95,13 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
|
||||
- 感谢 [Egon Elbre](https://twitter.com/egonelbre) 设计的 Logo。
|
||||
- 感谢 [Crowdin](https://crowdin.com/project/gogs) 提供免费的开源项目本地化支持。
|
||||
- 感谢 [DigitalOcean](https://www.digitalocean.com) 提供主站和体验站点的服务器赞助。
|
||||
- 感谢 [KeyCDN](https://www.keycdn.com/) 和 [七牛云存储](http://www.qiniu.com/) 提供 CDN 服务赞助。
|
||||
- 感谢 [KeyCDN](https://www.keycdn.com/) 提供 CDN 服务赞助。
|
||||
|
||||
## 贡献成员
|
||||
|
||||
- 您可以通过查看 [贡献者页面](https://github.com/gogits/gogs/graphs/contributors) 获取 TOP 100 的贡献者列表。
|
||||
- 您可以通过查看 [贡献者页面](https://github.com/gogs/gogs/graphs/contributors) 获取 TOP 100 的贡献者列表。
|
||||
- 您可以通过查看 [TRANSLATORS](conf/locale/TRANSLATORS) 文件获取公开的翻译人员列表。
|
||||
|
||||
## 授权许可
|
||||
|
||||
本项目采用 MIT 开源授权许可证,完整的授权说明已放置在 [LICENSE](https://github.com/gogits/gogs/blob/master/LICENSE) 文件中。
|
||||
本项目采用 MIT 开源授权许可证,完整的授权说明已放置在 [LICENSE](https://github.com/gogs/gogs/blob/master/LICENSE) 文件中。
|
||||
|
||||
12
cmd/admin.go
12
cmd/admin.go
@@ -11,8 +11,8 @@ import (
|
||||
|
||||
"github.com/urfave/cli"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/models"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -27,7 +27,7 @@ to make automatic initialization process more smoothly`,
|
||||
subcmdDeleteRepositoryArchives,
|
||||
subcmdDeleteMissingRepositories,
|
||||
subcmdGitGcRepos,
|
||||
subcmdRewriteAllPublicKeys,
|
||||
subcmdRewriteAuthorizedKeys,
|
||||
subcmdSyncRepositoryHooks,
|
||||
subcmdReinitMissingRepositories,
|
||||
},
|
||||
@@ -94,11 +94,11 @@ to make automatic initialization process more smoothly`,
|
||||
},
|
||||
}
|
||||
|
||||
subcmdRewriteAllPublicKeys = cli.Command{
|
||||
Name: "rewrite-public-keys",
|
||||
subcmdRewriteAuthorizedKeys = cli.Command{
|
||||
Name: "rewrite-authorized-keys",
|
||||
Usage: "Rewrite '.ssh/authorized_keys' file (caution: non-Gogs keys will be lost)",
|
||||
Action: adminDashboardOperation(
|
||||
models.RewriteAllPublicKeys,
|
||||
models.RewriteAuthorizedKeys,
|
||||
"All public keys have been rewritten successfully",
|
||||
),
|
||||
Flags: []cli.Flag{
|
||||
|
||||
@@ -17,8 +17,8 @@ import (
|
||||
log "gopkg.in/clog.v1"
|
||||
"gopkg.in/ini.v1"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/models"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
var Backup = cli.Command{
|
||||
@@ -39,6 +39,7 @@ portable among all supported database engines.`,
|
||||
},
|
||||
}
|
||||
|
||||
const _CURRENT_BACKUP_FORMAT_VERSION = 1
|
||||
const _ARCHIVE_ROOT_DIR = "gogs-backup"
|
||||
|
||||
func runBackup(c *cli.Context) error {
|
||||
@@ -63,7 +64,7 @@ func runBackup(c *cli.Context) error {
|
||||
// Metadata
|
||||
metaFile := path.Join(rootDir, "metadata.ini")
|
||||
metadata := ini.Empty()
|
||||
metadata.Section("").Key("VERSION").SetValue("1")
|
||||
metadata.Section("").Key("VERSION").SetValue(com.ToStr(_CURRENT_BACKUP_FORMAT_VERSION))
|
||||
metadata.Section("").Key("DATE_TIME").SetValue(time.Now().String())
|
||||
metadata.Section("").Key("GOGS_VERSION").SetValue(setting.AppVer)
|
||||
if err = metadata.SaveTo(metaFile); err != nil {
|
||||
@@ -99,7 +100,7 @@ func runBackup(c *cli.Context) error {
|
||||
|
||||
// Data files
|
||||
if !c.Bool("database-only") {
|
||||
for _, dir := range []string{"attachments", "avatars"} {
|
||||
for _, dir := range []string{"attachments", "avatars", "repo-avatars"} {
|
||||
dirPath := path.Join(setting.AppDataPath, dir)
|
||||
if !com.IsDir(dirPath) {
|
||||
continue
|
||||
|
||||
54
cmd/hook.go
54
cmd/hook.go
@@ -19,14 +19,14 @@ import (
|
||||
"github.com/urfave/cli"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/git-module"
|
||||
"github.com/gogs/git-module"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/httplib"
|
||||
"github.com/gogits/gogs/pkg/mailer"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogits/gogs/pkg/template"
|
||||
http "github.com/gogits/gogs/routes/repo"
|
||||
"github.com/gogs/gogs/models"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/httplib"
|
||||
"github.com/gogs/gogs/pkg/mailer"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/template"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -70,7 +70,7 @@ func runHookPreReceive(c *cli.Context) error {
|
||||
}
|
||||
setup(c, "hooks/pre-receive.log", true)
|
||||
|
||||
isWiki := strings.Contains(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), ".wiki.git/")
|
||||
isWiki := strings.Contains(os.Getenv(models.ENV_REPO_CUSTOM_HOOKS_PATH), ".wiki.git/")
|
||||
|
||||
buf := bytes.NewBuffer(nil)
|
||||
scanner := bufio.NewScanner(os.Stdin)
|
||||
@@ -91,10 +91,10 @@ func runHookPreReceive(c *cli.Context) error {
|
||||
branchName := strings.TrimPrefix(string(fields[2]), git.BRANCH_PREFIX)
|
||||
|
||||
// Branch protection
|
||||
repoID := com.StrTo(os.Getenv(http.ENV_REPO_ID)).MustInt64()
|
||||
repoID := com.StrTo(os.Getenv(models.ENV_REPO_ID)).MustInt64()
|
||||
protectBranch, err := models.GetProtectBranchOfRepoByName(repoID, branchName)
|
||||
if err != nil {
|
||||
if models.IsErrBranchNotExist(err) {
|
||||
if errors.IsErrBranchNotExist(err) {
|
||||
continue
|
||||
}
|
||||
fail("Internal error", "GetProtectBranchOfRepoByName [repo_id: %d, branch: %s]: %v", repoID, branchName, err)
|
||||
@@ -107,7 +107,7 @@ func runHookPreReceive(c *cli.Context) error {
|
||||
bypassRequirePullRequest := false
|
||||
|
||||
// Check if user is in whitelist when enabled
|
||||
userID := com.StrTo(os.Getenv(http.ENV_AUTH_USER_ID)).MustInt64()
|
||||
userID := com.StrTo(os.Getenv(models.ENV_AUTH_USER_ID)).MustInt64()
|
||||
if protectBranch.EnableWhitelist {
|
||||
if !models.IsUserInProtectBranchWhitelist(repoID, userID, branchName) {
|
||||
fail(fmt.Sprintf("Branch '%s' is protected and you are not in the push whitelist", branchName), "")
|
||||
@@ -128,7 +128,7 @@ func runHookPreReceive(c *cli.Context) error {
|
||||
|
||||
// Check force push
|
||||
output, err := git.NewCommand("rev-list", "--max-count=1", oldCommitID, "^"+newCommitID).
|
||||
RunInDir(models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME)))
|
||||
RunInDir(models.RepoPath(os.Getenv(models.ENV_REPO_OWNER_NAME), os.Getenv(models.ENV_REPO_NAME)))
|
||||
if err != nil {
|
||||
fail("Internal error", "Fail to detect force push: %v", err)
|
||||
} else if len(output) > 0 {
|
||||
@@ -136,7 +136,7 @@ func runHookPreReceive(c *cli.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
customHooksPath := filepath.Join(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), "pre-receive")
|
||||
customHooksPath := filepath.Join(os.Getenv(models.ENV_REPO_CUSTOM_HOOKS_PATH), "pre-receive")
|
||||
if !com.IsFile(customHooksPath) {
|
||||
return nil
|
||||
}
|
||||
@@ -147,7 +147,7 @@ func runHookPreReceive(c *cli.Context) error {
|
||||
} else {
|
||||
hookCmd = exec.Command(customHooksPath)
|
||||
}
|
||||
hookCmd.Dir = models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME))
|
||||
hookCmd.Dir = models.RepoPath(os.Getenv(models.ENV_REPO_OWNER_NAME), os.Getenv(models.ENV_REPO_NAME))
|
||||
hookCmd.Stdout = os.Stdout
|
||||
hookCmd.Stdin = buf
|
||||
hookCmd.Stderr = os.Stderr
|
||||
@@ -170,7 +170,7 @@ func runHookUpdate(c *cli.Context) error {
|
||||
fail("First argument 'refName' is empty", "First argument 'refName' is empty")
|
||||
}
|
||||
|
||||
customHooksPath := filepath.Join(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), "update")
|
||||
customHooksPath := filepath.Join(os.Getenv(models.ENV_REPO_CUSTOM_HOOKS_PATH), "update")
|
||||
if !com.IsFile(customHooksPath) {
|
||||
return nil
|
||||
}
|
||||
@@ -181,7 +181,7 @@ func runHookUpdate(c *cli.Context) error {
|
||||
} else {
|
||||
hookCmd = exec.Command(customHooksPath, args...)
|
||||
}
|
||||
hookCmd.Dir = models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME))
|
||||
hookCmd.Dir = models.RepoPath(os.Getenv(models.ENV_REPO_OWNER_NAME), os.Getenv(models.ENV_REPO_NAME))
|
||||
hookCmd.Stdout = os.Stdout
|
||||
hookCmd.Stdin = os.Stdin
|
||||
hookCmd.Stderr = os.Stderr
|
||||
@@ -204,7 +204,7 @@ func runHookPostReceive(c *cli.Context) error {
|
||||
mailer.InitMailRender(path.Join(setting.StaticRootPath, "templates/mail"),
|
||||
path.Join(setting.CustomPath, "templates/mail"), template.NewFuncMap())
|
||||
|
||||
isWiki := strings.Contains(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), ".wiki.git/")
|
||||
isWiki := strings.Contains(os.Getenv(models.ENV_REPO_CUSTOM_HOOKS_PATH), ".wiki.git/")
|
||||
|
||||
buf := bytes.NewBuffer(nil)
|
||||
scanner := bufio.NewScanner(os.Stdin)
|
||||
@@ -226,20 +226,20 @@ func runHookPostReceive(c *cli.Context) error {
|
||||
OldCommitID: string(fields[0]),
|
||||
NewCommitID: string(fields[1]),
|
||||
RefFullName: string(fields[2]),
|
||||
PusherID: com.StrTo(os.Getenv(http.ENV_AUTH_USER_ID)).MustInt64(),
|
||||
PusherName: os.Getenv(http.ENV_AUTH_USER_NAME),
|
||||
RepoUserName: os.Getenv(http.ENV_REPO_OWNER_NAME),
|
||||
RepoName: os.Getenv(http.ENV_REPO_NAME),
|
||||
PusherID: com.StrTo(os.Getenv(models.ENV_AUTH_USER_ID)).MustInt64(),
|
||||
PusherName: os.Getenv(models.ENV_AUTH_USER_NAME),
|
||||
RepoUserName: os.Getenv(models.ENV_REPO_OWNER_NAME),
|
||||
RepoName: os.Getenv(models.ENV_REPO_NAME),
|
||||
}
|
||||
if err := models.PushUpdate(options); err != nil {
|
||||
log.Error(2, "PushUpdate: %v", err)
|
||||
}
|
||||
|
||||
// Ask for running deliver hook and test pull request tasks.
|
||||
// Ask for running deliver hook and test pull request tasks
|
||||
reqURL := setting.LocalURL + options.RepoUserName + "/" + options.RepoName + "/tasks/trigger?branch=" +
|
||||
strings.TrimPrefix(options.RefFullName, git.BRANCH_PREFIX) +
|
||||
"&secret=" + os.Getenv(http.ENV_REPO_OWNER_SALT_MD5) +
|
||||
"&pusher=" + os.Getenv(http.ENV_AUTH_USER_ID)
|
||||
template.EscapePound(strings.TrimPrefix(options.RefFullName, git.BRANCH_PREFIX)) +
|
||||
"&secret=" + os.Getenv(models.ENV_REPO_OWNER_SALT_MD5) +
|
||||
"&pusher=" + os.Getenv(models.ENV_AUTH_USER_ID)
|
||||
log.Trace("Trigger task: %s", reqURL)
|
||||
|
||||
resp, err := httplib.Head(reqURL).SetTLSClientConfig(&tls.Config{
|
||||
@@ -255,7 +255,7 @@ func runHookPostReceive(c *cli.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
customHooksPath := filepath.Join(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), "post-receive")
|
||||
customHooksPath := filepath.Join(os.Getenv(models.ENV_REPO_CUSTOM_HOOKS_PATH), "post-receive")
|
||||
if !com.IsFile(customHooksPath) {
|
||||
return nil
|
||||
}
|
||||
@@ -266,7 +266,7 @@ func runHookPostReceive(c *cli.Context) error {
|
||||
} else {
|
||||
hookCmd = exec.Command(customHooksPath)
|
||||
}
|
||||
hookCmd.Dir = models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME))
|
||||
hookCmd.Dir = models.RepoPath(os.Getenv(models.ENV_REPO_OWNER_NAME), os.Getenv(models.ENV_REPO_NAME))
|
||||
hookCmd.Stdout = os.Stdout
|
||||
hookCmd.Stdin = buf
|
||||
hookCmd.Stderr = os.Stderr
|
||||
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/urfave/cli"
|
||||
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
@@ -15,8 +15,8 @@ import (
|
||||
log "gopkg.in/clog.v1"
|
||||
"gopkg.in/ini.v1"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/models"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
var Restore = cli.Command{
|
||||
@@ -39,6 +39,10 @@ be skipped and remain unchanged.`,
|
||||
},
|
||||
}
|
||||
|
||||
// lastSupportedVersionOfFormat returns the last supported version of the backup archive
|
||||
// format that is able to import.
|
||||
var lastSupportedVersionOfFormat = map[int]string{}
|
||||
|
||||
func runRestore(c *cli.Context) error {
|
||||
zip.Verbose = c.Bool("verbose")
|
||||
|
||||
@@ -49,9 +53,10 @@ func runRestore(c *cli.Context) error {
|
||||
|
||||
log.Info("Restore backup from: %s", c.String("from"))
|
||||
if err := zip.ExtractTo(c.String("from"), tmpDir); err != nil {
|
||||
log.Fatal(0, "Fail to extract backup archive: %v", err)
|
||||
log.Fatal(0, "Failed to extract backup archive: %v", err)
|
||||
}
|
||||
archivePath := path.Join(tmpDir, _ARCHIVE_ROOT_DIR)
|
||||
defer os.RemoveAll(archivePath)
|
||||
|
||||
// Check backup version
|
||||
metaFile := path.Join(archivePath, "metadata.ini")
|
||||
@@ -60,12 +65,20 @@ func runRestore(c *cli.Context) error {
|
||||
}
|
||||
metadata, err := ini.Load(metaFile)
|
||||
if err != nil {
|
||||
log.Fatal(0, "Fail to load metadata '%s': %v", metaFile, err)
|
||||
log.Fatal(0, "Failed to load metadata '%s': %v", metaFile, err)
|
||||
}
|
||||
backupVersion := metadata.Section("").Key("GOGS_VERSION").MustString("999.0")
|
||||
if version.Compare(setting.AppVer, backupVersion, "<") {
|
||||
log.Fatal(0, "Current Gogs version is lower than backup version: %s < %s", setting.AppVer, backupVersion)
|
||||
}
|
||||
formatVersion := metadata.Section("").Key("VERSION").MustInt()
|
||||
if formatVersion == 0 {
|
||||
log.Fatal(0, "Failed to determine the backup format version from metadata '%s': %s", metaFile, "VERSION is not presented")
|
||||
}
|
||||
if formatVersion != _CURRENT_BACKUP_FORMAT_VERSION {
|
||||
log.Fatal(0, "Backup format version found is %d but this binary only supports %d\nThe last known version that is able to import your backup is %s",
|
||||
formatVersion, _CURRENT_BACKUP_FORMAT_VERSION, lastSupportedVersionOfFormat[formatVersion])
|
||||
}
|
||||
|
||||
// If config file is not present in backup, user must set this file via flag.
|
||||
// Otherwise, it's optional to set config file flag.
|
||||
@@ -84,25 +97,25 @@ func runRestore(c *cli.Context) error {
|
||||
// Database
|
||||
dbDir := path.Join(archivePath, "db")
|
||||
if err = models.ImportDatabase(dbDir, c.Bool("verbose")); err != nil {
|
||||
log.Fatal(0, "Fail to import database: %v", err)
|
||||
log.Fatal(0, "Failed to import database: %v", err)
|
||||
}
|
||||
|
||||
// Custom files
|
||||
if !c.Bool("database-only") {
|
||||
if com.IsExist(setting.CustomPath) {
|
||||
if err = os.Rename(setting.CustomPath, setting.CustomPath+".bak"); err != nil {
|
||||
log.Fatal(0, "Fail to backup current 'custom': %v", err)
|
||||
log.Fatal(0, "Failed to backup current 'custom': %v", err)
|
||||
}
|
||||
}
|
||||
if err = os.Rename(path.Join(archivePath, "custom"), setting.CustomPath); err != nil {
|
||||
log.Fatal(0, "Fail to import 'custom': %v", err)
|
||||
log.Fatal(0, "Failed to import 'custom': %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Data files
|
||||
if !c.Bool("database-only") {
|
||||
os.MkdirAll(setting.AppDataPath, os.ModePerm)
|
||||
for _, dir := range []string{"attachments", "avatars"} {
|
||||
for _, dir := range []string{"attachments", "avatars", "repo-avatars"} {
|
||||
// Skip if backup archive does not have corresponding data
|
||||
srcPath := path.Join(archivePath, "data", dir)
|
||||
if !com.IsDir(srcPath) {
|
||||
@@ -112,11 +125,11 @@ func runRestore(c *cli.Context) error {
|
||||
dirPath := path.Join(setting.AppDataPath, dir)
|
||||
if com.IsExist(dirPath) {
|
||||
if err = os.Rename(dirPath, dirPath+".bak"); err != nil {
|
||||
log.Fatal(0, "Fail to backup current 'data': %v", err)
|
||||
log.Fatal(0, "Failed to backup current 'data': %v", err)
|
||||
}
|
||||
}
|
||||
if err = os.Rename(srcPath, dirPath); err != nil {
|
||||
log.Fatal(0, "Fail to import 'data': %v", err)
|
||||
log.Fatal(0, "Failed to import 'data': %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -125,11 +138,10 @@ func runRestore(c *cli.Context) error {
|
||||
reposPath := path.Join(archivePath, "repositories.zip")
|
||||
if !c.Bool("exclude-repos") && !c.Bool("database-only") && com.IsExist(reposPath) {
|
||||
if err := zip.ExtractTo(reposPath, path.Dir(setting.RepoRootPath)); err != nil {
|
||||
log.Fatal(0, "Fail to extract 'repositories.zip': %v", err)
|
||||
log.Fatal(0, "Failed to extract 'repositories.zip': %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
os.RemoveAll(path.Join(tmpDir, _ARCHIVE_ROOT_DIR))
|
||||
log.Info("Restore succeed!")
|
||||
log.Shutdown()
|
||||
return nil
|
||||
|
||||
@@ -16,10 +16,9 @@ import (
|
||||
"github.com/urfave/cli"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
http "github.com/gogits/gogs/routes/repo"
|
||||
"github.com/gogs/gogs/models"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -252,7 +251,7 @@ func runServ(c *cli.Context) error {
|
||||
gitCmd = exec.Command(verb, repoFullName)
|
||||
}
|
||||
if requestMode == models.ACCESS_MODE_WRITE {
|
||||
gitCmd.Env = append(os.Environ(), http.ComposeHookEnvs(http.ComposeHookEnvsOptions{
|
||||
gitCmd.Env = append(os.Environ(), models.ComposeHookEnvs(models.ComposeHookEnvsOptions{
|
||||
AuthUser: user,
|
||||
OwnerName: owner.Name,
|
||||
OwnerSalt: owner.Salt,
|
||||
|
||||
67
cmd/web.go
67
cmd/web.go
@@ -25,24 +25,25 @@ import (
|
||||
"github.com/go-macaron/session"
|
||||
"github.com/go-macaron/toolbox"
|
||||
"github.com/mcuadros/go-version"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
"github.com/urfave/cli"
|
||||
log "gopkg.in/clog.v1"
|
||||
"gopkg.in/macaron.v1"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/bindata"
|
||||
"github.com/gogits/gogs/pkg/context"
|
||||
"github.com/gogits/gogs/pkg/form"
|
||||
"github.com/gogits/gogs/pkg/mailer"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogits/gogs/pkg/template"
|
||||
"github.com/gogits/gogs/routes"
|
||||
"github.com/gogits/gogs/routes/admin"
|
||||
apiv1 "github.com/gogits/gogs/routes/api/v1"
|
||||
"github.com/gogits/gogs/routes/dev"
|
||||
"github.com/gogits/gogs/routes/org"
|
||||
"github.com/gogits/gogs/routes/repo"
|
||||
"github.com/gogits/gogs/routes/user"
|
||||
"github.com/gogs/gogs/models"
|
||||
"github.com/gogs/gogs/pkg/bindata"
|
||||
"github.com/gogs/gogs/pkg/context"
|
||||
"github.com/gogs/gogs/pkg/form"
|
||||
"github.com/gogs/gogs/pkg/mailer"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/template"
|
||||
"github.com/gogs/gogs/routes"
|
||||
"github.com/gogs/gogs/routes/admin"
|
||||
apiv1 "github.com/gogs/gogs/routes/api/v1"
|
||||
"github.com/gogs/gogs/routes/dev"
|
||||
"github.com/gogs/gogs/routes/org"
|
||||
"github.com/gogs/gogs/routes/repo"
|
||||
"github.com/gogs/gogs/routes/user"
|
||||
)
|
||||
|
||||
var Web = cli.Command{
|
||||
@@ -64,7 +65,7 @@ func checkVersion() {
|
||||
if err != nil {
|
||||
log.Fatal(2, "Fail to read 'templates/.VERSION': %v", err)
|
||||
}
|
||||
tplVer := string(data)
|
||||
tplVer := strings.TrimSpace(string(data))
|
||||
if tplVer != setting.AppVer {
|
||||
if version.Compare(tplVer, setting.AppVer, ">") {
|
||||
log.Fatal(2, "Binary version is lower than template file version, did you forget to recompile Gogs?")
|
||||
@@ -96,7 +97,14 @@ func newMacaron() *macaron.Macaron {
|
||||
m.Use(macaron.Static(
|
||||
setting.AvatarUploadPath,
|
||||
macaron.StaticOptions{
|
||||
Prefix: "avatars",
|
||||
Prefix: models.USER_AVATAR_URL_PREFIX,
|
||||
SkipLogging: setting.DisableRouterLog,
|
||||
},
|
||||
))
|
||||
m.Use(macaron.Static(
|
||||
setting.RepositoryAvatarUploadPath,
|
||||
macaron.StaticOptions{
|
||||
Prefix: models.REPO_AVATAR_URL_PREFIX,
|
||||
SkipLogging: setting.DisableRouterLog,
|
||||
},
|
||||
))
|
||||
@@ -172,6 +180,8 @@ func runWeb(c *cli.Context) error {
|
||||
|
||||
bindIgnErr := binding.BindIgnErr
|
||||
|
||||
m.SetAutoHead(true)
|
||||
|
||||
// FIXME: not all routes need go through same middlewares.
|
||||
// Especially some AJAX requests, we can reduce middleware number to improve performance.
|
||||
// Routers.
|
||||
@@ -251,11 +261,11 @@ func runWeb(c *cli.Context) error {
|
||||
})
|
||||
// ***** END: User *****
|
||||
|
||||
adminReq := context.Toggle(&context.ToggleOptions{SignInRequired: true, AdminRequired: true})
|
||||
reqAdmin := context.Toggle(&context.ToggleOptions{SignInRequired: true, AdminRequired: true})
|
||||
|
||||
// ***** START: Admin *****
|
||||
m.Group("/admin", func() {
|
||||
m.Get("", adminReq, admin.Dashboard)
|
||||
m.Get("", admin.Dashboard)
|
||||
m.Get("/config", admin.Config)
|
||||
m.Post("/config/test_mail", admin.SendTestMail)
|
||||
m.Get("/monitor", admin.Monitor)
|
||||
@@ -289,7 +299,7 @@ func runWeb(c *cli.Context) error {
|
||||
m.Post("/delete", admin.DeleteNotices)
|
||||
m.Get("/empty", admin.EmptyNotices)
|
||||
})
|
||||
}, adminReq)
|
||||
}, reqAdmin)
|
||||
// ***** END: Admin *****
|
||||
|
||||
m.Group("", func() {
|
||||
@@ -417,6 +427,9 @@ func runWeb(c *cli.Context) error {
|
||||
m.Group("/settings", func() {
|
||||
m.Combo("").Get(repo.Settings).
|
||||
Post(bindIgnErr(form.RepoSetting{}), repo.SettingsPost)
|
||||
m.Combo("/avatar").Get(repo.SettingsAvatar).
|
||||
Post(binding.MultipartForm(form.Avatar{}), repo.SettingsAvatarPost)
|
||||
m.Post("/avatar/delete", repo.SettingsDeleteAvatar)
|
||||
m.Group("/collaboration", func() {
|
||||
m.Combo("").Get(repo.SettingsCollaboration).Post(repo.SettingsCollaborationPost)
|
||||
m.Post("/access_mode", repo.ChangeCollaborationAccessMode)
|
||||
@@ -635,8 +648,10 @@ func runWeb(c *cli.Context) error {
|
||||
// e.g. with or without ".git" suffix.
|
||||
m.Group("/:reponame([\\d\\w-_\\.]+\\.git$)", func() {
|
||||
m.Get("", ignSignIn, context.RepoAssignment(), context.RepoRef(), repo.Home)
|
||||
m.Options("/*", ignSignInAndCsrf, repo.HTTPContexter(), repo.HTTP)
|
||||
m.Route("/*", "GET,POST", ignSignInAndCsrf, repo.HTTPContexter(), repo.HTTP)
|
||||
})
|
||||
m.Options("/:reponame/*", ignSignInAndCsrf, repo.HTTPContexter(), repo.HTTP)
|
||||
m.Route("/:reponame/*", "GET,POST", ignSignInAndCsrf, repo.HTTPContexter(), repo.HTTP)
|
||||
})
|
||||
// ***** END: Repository *****
|
||||
@@ -645,6 +660,18 @@ func runWeb(c *cli.Context) error {
|
||||
apiv1.RegisterRoutes(m)
|
||||
}, ignSignIn)
|
||||
|
||||
m.Group("/-", func() {
|
||||
if setting.Prometheus.Enabled {
|
||||
m.Get("/metrics", func(c *context.Context) {
|
||||
if !setting.Prometheus.EnableBasicAuth {
|
||||
return
|
||||
}
|
||||
|
||||
c.RequireBasicAuth(setting.Prometheus.BasicAuthUsername, setting.Prometheus.BasicAuthPassword)
|
||||
}, promhttp.Handler())
|
||||
}
|
||||
})
|
||||
|
||||
// robots.txt
|
||||
m.Get("/robots.txt", func(c *context.Context) {
|
||||
if setting.HasRobotsTxt {
|
||||
@@ -723,7 +750,7 @@ func runWeb(c *cli.Context) error {
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(4, "Fail to start server: %v", err)
|
||||
log.Fatal(4, "Failed to start server: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
34
conf/app.ini
34
conf/app.ini
@@ -35,6 +35,8 @@ SSH_LISTEN_HOST = 0.0.0.0
|
||||
SSH_LISTEN_PORT = %(SSH_PORT)s
|
||||
; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'.
|
||||
SSH_ROOT_PATH =
|
||||
; Indicate whether to rewrite authorized_keys at start, ignored when use builtin SSH server
|
||||
REWRITE_AUTHORIZED_KEYS_AT_START = false
|
||||
; Choose the ciphers to support for SSH connections
|
||||
SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128
|
||||
; Directory to create temporary files when test publick key using ssh-keygen,
|
||||
@@ -224,8 +226,8 @@ PAGING_NUM = 10
|
||||
ENABLED = false
|
||||
; Buffer length of channel, keep it as it is if you don't know what it is.
|
||||
SEND_BUFFER_LEN = 100
|
||||
; Name displayed in mail title
|
||||
SUBJECT = %(APP_NAME)s
|
||||
; Prefix prepended to the subject line
|
||||
SUBJECT_PREFIX = `[%(APP_NAME)s] `
|
||||
; Mail server
|
||||
; Gmail: smtp.gmail.com:587
|
||||
; QQ: smtp.qq.com:465
|
||||
@@ -284,6 +286,8 @@ CSRF_COOKIE_NAME = _csrf
|
||||
[picture]
|
||||
; Path to store user uploaded avatars
|
||||
AVATAR_UPLOAD_PATH = data/avatars
|
||||
; Path to store repository uploaded avatars
|
||||
REPOSITORY_AVATAR_UPLOAD_PATH = data/repo-avatars
|
||||
; Chinese users can choose "duoshuo"
|
||||
; or a custom avatar source, like: http://cn.gravatar.com/avatar/
|
||||
GRAVATAR_SOURCE = gravatar
|
||||
@@ -292,7 +296,7 @@ DISABLE_GRAVATAR = false
|
||||
; Federated avatar lookup uses DNS to discover avatar associated
|
||||
; with emails, see https://www.libravatar.org
|
||||
; This value will be forced to be false in offline mode or Gravatar is disbaled.
|
||||
ENABLE_FEDERATED_AVATAR = true
|
||||
ENABLE_FEDERATED_AVATAR = false
|
||||
|
||||
; Attachment settings for issues
|
||||
[attachment]
|
||||
@@ -351,6 +355,14 @@ LEVEL =
|
||||
; Webhook URL
|
||||
URL =
|
||||
|
||||
[log.discord]
|
||||
; leave empty to inherit
|
||||
LEVEL =
|
||||
; Webhook URL
|
||||
URL =
|
||||
; Username displayed in webhook
|
||||
USERNAME = %(APP_NAME)s
|
||||
|
||||
[log.xorm]
|
||||
; Enable file rotation
|
||||
ROTATE = true
|
||||
@@ -452,9 +464,15 @@ NEWS_FEED_PAGING_NUM = 20
|
||||
; Number of commits that are showed in one page
|
||||
COMMITS_PAGING_NUM = 30
|
||||
|
||||
[prometheus]
|
||||
ENABLED = true
|
||||
ENABLE_BASIC_AUTH = false
|
||||
BASIC_AUTH_USERNAME =
|
||||
BASIC_AUTH_PASSWORD =
|
||||
|
||||
[i18n]
|
||||
LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR,gl-ES,uk-UA,en-GB,hu-HU,sk-SK
|
||||
NAMES = English,简体中文,繁體中文(香港),繁體中文(臺灣),Deutsch,français,Nederlands,latviešu,русский,日本語,español,português do Brasil,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어,galego,українська,English (United Kingdom),Magyar,slovenský
|
||||
LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR,gl-ES,uk-UA,en-GB,hu-HU,sk-SK,id-ID,fa-IR,vi-VN
|
||||
NAMES = English,简体中文,繁體中文(香港),繁體中文(臺灣),Deutsch,français,Nederlands,latviešu,русский,日本語,español,português do Brasil,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어,galego,українська,English (United Kingdom),Magyar,Slovenčina,Indonesian,Persian,Vietnamese
|
||||
|
||||
; Used for datetimepicker
|
||||
[i18n.datelang]
|
||||
@@ -481,6 +499,12 @@ sv-SE = sv
|
||||
ko-KR = ko
|
||||
gl-ES = gl
|
||||
uk-UA = uk
|
||||
en-GB = en-GB
|
||||
hu-HU = hu
|
||||
sk-SK = sk
|
||||
id-ID = id
|
||||
fa-IR = fa
|
||||
vi-VN = vi
|
||||
|
||||
; Extension mapping to highlight class
|
||||
; e.g. .toml=ini
|
||||
|
||||
29
conf/auth.d/ldap_bind_dn.conf.example
Normal file
29
conf/auth.d/ldap_bind_dn.conf.example
Normal file
@@ -0,0 +1,29 @@
|
||||
# This is an example of LDAP (BindDN) authentication
|
||||
#
|
||||
id = 101
|
||||
type = ldap_bind_dn
|
||||
name = LDAP BindDN
|
||||
is_activated = true
|
||||
|
||||
[config]
|
||||
host = mydomain.com
|
||||
port = 636
|
||||
# 0 - Unencrypted, 1 - LDAPS, 2 - StartTLS
|
||||
security_protocol = 0
|
||||
skip_verify = false
|
||||
bind_dn =
|
||||
bind_password =
|
||||
user_base = ou=Users,dc=mydomain,dc=com
|
||||
attribute_username =
|
||||
attribute_name =
|
||||
attribute_surname =
|
||||
attribute_mail = mail
|
||||
attributes_in_bind = false
|
||||
filter = (&(objectClass=posixAccount)(cn=%s))
|
||||
admin_filter =
|
||||
group_enabled = false
|
||||
group_dn =
|
||||
group_filter =
|
||||
group_member_uid =
|
||||
user_uid =
|
||||
|
||||
30
conf/auth.d/ldap_simple_auth.conf.example
Normal file
30
conf/auth.d/ldap_simple_auth.conf.example
Normal file
@@ -0,0 +1,30 @@
|
||||
# This is an example of LDAP (simple auth) authentication
|
||||
#
|
||||
id = 102
|
||||
type = ldap_simple_auth
|
||||
name = LDAP Simple Auth
|
||||
is_activated = true
|
||||
|
||||
[config]
|
||||
host = mydomain.com
|
||||
port = 636
|
||||
# 0 - Unencrypted, 1 - LDAPS, 2 - StartTLS
|
||||
security_protocol = 0
|
||||
skip_verify = false
|
||||
bind_dn =
|
||||
bind_password =
|
||||
user_base =
|
||||
user_dn = cn=%s,ou=Users,dc=mydomain,dc=com
|
||||
attribute_username =
|
||||
attribute_name =
|
||||
attribute_surname =
|
||||
attribute_mail = mail
|
||||
attributes_in_bind = false
|
||||
filter = (&(objectClass=posixAccount)(cn=%s))
|
||||
admin_filter =
|
||||
group_enabled = false
|
||||
group_dn =
|
||||
group_filter =
|
||||
group_member_uid =
|
||||
user_uid =
|
||||
|
||||
10
conf/auth.d/pam.conf.example
Normal file
10
conf/auth.d/pam.conf.example
Normal file
@@ -0,0 +1,10 @@
|
||||
# This is an example of PAM authentication
|
||||
#
|
||||
id = 104
|
||||
type = pam
|
||||
name = System Auth
|
||||
is_activated = true
|
||||
|
||||
[config]
|
||||
service_name = system-auth
|
||||
|
||||
16
conf/auth.d/smtp.conf.example
Normal file
16
conf/auth.d/smtp.conf.example
Normal file
@@ -0,0 +1,16 @@
|
||||
# This is an example of SMTP authentication
|
||||
#
|
||||
id = 103
|
||||
type = smtp
|
||||
name = GMail
|
||||
is_activated = true
|
||||
|
||||
[config]
|
||||
# Either "PLAIN" or "LOGIN"
|
||||
auth = PLAIN
|
||||
host = smtp.gmail.com
|
||||
port = 587
|
||||
allowed_domains =
|
||||
tls = true
|
||||
skip_verify = false
|
||||
|
||||
63
conf/gitignore/PhpStorm
vendored
Normal file
63
conf/gitignore/PhpStorm
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff:
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/dictionaries
|
||||
|
||||
# Sensitive or high-churn files:
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.xml
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
|
||||
# Gradle:
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# CMake
|
||||
cmake-build-debug/
|
||||
|
||||
# Mongo Explorer plugin:
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
## File-based project format:
|
||||
*.iws
|
||||
|
||||
## Plugin-specific files:
|
||||
|
||||
# IntelliJ
|
||||
/out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# Ruby plugin and RubyMine
|
||||
/.rakeTasks
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
### PhpStorm Patch ###
|
||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||
|
||||
# *.iml
|
||||
# modules.xml
|
||||
# .idea/misc.xml
|
||||
# *.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
.idea/sonarlint
|
||||
63
conf/gitignore/WebStorm
vendored
Normal file
63
conf/gitignore/WebStorm
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff:
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/dictionaries
|
||||
|
||||
# Sensitive or high-churn files:
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.xml
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
|
||||
# Gradle:
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# CMake
|
||||
cmake-build-debug/
|
||||
|
||||
# Mongo Explorer plugin:
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
## File-based project format:
|
||||
*.iws
|
||||
|
||||
## Plugin-specific files:
|
||||
|
||||
# IntelliJ
|
||||
/out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# Ruby plugin and RubyMine
|
||||
/.rakeTasks
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
### WebStorm Patch ###
|
||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||
|
||||
# *.iml
|
||||
# modules.xml
|
||||
# .idea/misc.xml
|
||||
# *.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
.idea/sonarlint
|
||||
@@ -21,6 +21,7 @@ Barış Arda Yılmaz <ardayilmazgamer AT gmail DOT com>
|
||||
Bo-Yi Wu <appleboy DOT tw AT gmail DOT com>
|
||||
Breton Corentin <contact AT neodarz DOT net>
|
||||
Camille Baronnet <gogs AT camillebaronnet DOT fr>
|
||||
Changwoo Ryu <cwryu AT debian DOT org>
|
||||
Christoph Kisfeld <christoph DOT kisfeld AT gmail DOT com>
|
||||
Cysioland
|
||||
Damaris Padieu <damizx AT hotmail DOT fr>
|
||||
@@ -31,6 +32,7 @@ Dmitriy Nogay <me AT catwhocode DOT ga>
|
||||
Enrico Testori hypertesto AT gmail DOT com
|
||||
Ezequiel Gonzalez Rial <gonrial AT gmail DOT com>
|
||||
Farhan Naysee <wpmagic70 AT gmail DOT com>
|
||||
Flávio Monteiro <flaviomonteiro2013 AT gmail DOT com>
|
||||
Gabriel Dugny <gabriel DOT dugny AT gmail DOT com>
|
||||
Ganesha <reekoheek AT gmail DOT com>
|
||||
Gregor Santner <gdev AT live DOT de>
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Вече имате профил? Впишете се сег
|
||||
social_register_hepler_msg=Вече имате профил? Свържете се сега!
|
||||
disable_register_prompt=За съжаление създаването на нови регистрации е изключено. Обърнете се към администратора на сайта.
|
||||
disable_register_mail=За съжаление потвърждението на регистрации е изключено.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Запомни ме
|
||||
forgot_password=Забравена парола
|
||||
forget_password=Забравена парола?
|
||||
@@ -169,11 +171,11 @@ reset_password_helper=Щракнете тук, за да нулирате пар
|
||||
password_too_short=Размерът на паролата не може да бъде по-малък от 6 знака.
|
||||
non_local_account=Нелокални потребители не могат да сменят паролата си през Gogs.
|
||||
|
||||
login_two_factor=Two-factor Authentication
|
||||
login_two_factor=Двуфакторно удостоверяване
|
||||
login_two_factor_passcode=Парола за удостоверяване
|
||||
login_two_factor_enter_recovery_code=Enter a two-factor recovery code
|
||||
login_two_factor_recovery=Two-factor Recovery
|
||||
login_two_factor_recovery_code=Recovery Code
|
||||
login_two_factor_recovery_code=Код за възстановяване
|
||||
login_two_factor_enter_passcode=Enter a two-factor passcode
|
||||
login_two_factor_invalid_recovery_code=Този код за възстановяване вече е бил използван или не е валиден.
|
||||
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Името на организацията вече се п
|
||||
team_name_been_taken=Името на екипа вече се ползва.
|
||||
email_been_used=Този адрес на ел. поща вече се ползва.
|
||||
username_password_incorrect=Потребителското име или паролата не са верни.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Моля уверете се, че въведеното име на хранилище е вярно.
|
||||
enterred_invalid_owner_name=Моля уверете се, че въведеното име на притежател е вярно.
|
||||
enterred_invalid_password=Моля уверете се, че въведената парола е вярна.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=След това въведете паролата:
|
||||
two_factor_verify=Потвърждаване
|
||||
two_factor_invalid_passcode=Въведената парола е невалидна! Моля опитайте отново.
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Последна синхр.
|
||||
watchers=Наблюдаващи
|
||||
stargazers=Харесващи
|
||||
forks=Разклонения
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Притежателят е достигнал настроения лимит от %d брой хранилища.
|
||||
form.name_reserved=Името на хранилището '%s' е запазено.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Съдържанието на файла е б
|
||||
editor.file_already_exists=Файл с име '%s' вече съществува в това хранилище.
|
||||
editor.no_changes_to_show=Няма промени.
|
||||
editor.fail_to_update_file=Невъзможно модифициране/създаване на файл '%s' заради грешка: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Добави поддиректория...
|
||||
editor.unable_to_upload_files=Невъзможно качване на файлове в '%s' заради грешка: %v
|
||||
editor.upload_files_to_dir=Качи файлове в '%s'
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc=Не може да се извърши обедин
|
||||
pulls.cannot_auto_merge_helper=Моля, използвайте инструменти на командния ред за да разрешите конфликтите.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Обедини заявка за сливане
|
||||
pulls.open_unmerged_pull_exists=`Невъзможно повторно отваряне, защото вече съществува заявка за сливане (#%d) от същото хранилище със същата информация за обединяване, която чака да бъде извършена`
|
||||
pulls.delete_branch=Изтрий клон
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style=Стил на именуване на външна
|
||||
settings.tracker_issue_style.numeric=Цифров
|
||||
settings.tracker_issue_style.alphanumeric=Символен
|
||||
settings.tracker_url_format_desc=Можете да използвате текстови маркери <code>{user} {repo} {index}</code> за потребителско име, име на хранилище и индекс на задача съответно.
|
||||
settings.pulls_desc=Включва заявки за сливане за да може да се приемат външни доработки
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Опасна зона
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Данните за уики на това хра
|
||||
settings.delete=Изтрий това хранилище
|
||||
settings.delete_desc=След като изтриете хранилището, няма връщане назад. Моля, бъдете сигурни.
|
||||
settings.delete_notices_1=- Тази операция <strong>НЕ МОЖЕ</strong> да бъде отменена в последствие.
|
||||
settings.delete_notices_2=- Тази операция ще изтрие всичко от това хранилище, включително Git данни, задачи, коментари и достъпа на сътрудници.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- Всички разклонения ще станат независими след изтриването.
|
||||
settings.deletion_success=Хранилището е изтрито успешно!
|
||||
settings.update_settings_success=Настройките на хранилището са запазени успешно.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Предаване
|
||||
settings.event_push_desc=Git предаване към хранилището
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Заявка за сливане
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Активна
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Новият ключ за внедряване '%s' е
|
||||
settings.deploy_key_deletion=Изтрий ключ за внедряване
|
||||
settings.deploy_key_deletion_desc=При изтриването на този ключ за внедряване ще се премахнат свързаните права за достъп до това хранилище. Желаете ли да продължите?
|
||||
settings.deploy_key_deletion_success=Ключът за внедряване е изтрит успешно!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Преглед на файлове
|
||||
diff.parent=родител
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Харесвания
|
||||
repos.issues=Задачи
|
||||
repos.size=Размер
|
||||
|
||||
auths.auth_manage_panel=Управление на удостоверявания
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Добави нов начин на удостоверяване
|
||||
auths.name=Име
|
||||
auths.type=Тип
|
||||
auths.enabled=Активно
|
||||
auths.default=Default
|
||||
auths.updated=Последна модификация
|
||||
auths.auth_type=Тип на удостоверяване
|
||||
auths.auth_name=Име на удостоверяване
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Включи TLS криптиране
|
||||
auths.skip_tls_verify=Пропусни проверка на TLS сертификат
|
||||
auths.pam_service_name=Име на PAM услуга
|
||||
auths.enable_auto_register=Включи автоматична регистрация
|
||||
auths.tips=Съвети
|
||||
auths.edit=Редактирай настройки за удостоверяване
|
||||
auths.activated=Това удостоверяване е активно
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Новото удостоверяване '%s' е добавено успешно.
|
||||
auths.update_success=Настройките за удостоверяване са запазени успешно.
|
||||
auths.update=Запази настройки за удостоверяване
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Домейн
|
||||
config.ssh_port=Порт
|
||||
config.ssh_listen_port=Порт за слушане
|
||||
config.ssh_root_path=Основен път
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Път до ключове
|
||||
config.ssh_keygen_path=Път до генератор ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Проверка за минимален размер на ключове
|
||||
@@ -1178,7 +1190,7 @@ config.disable_http_git=Забраняване на HTTP Git
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_config=Конфигуриране на HTTP
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
|
||||
config.db_config=Настройки на базата данни
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Пропусни проверка на TLS
|
||||
config.mailer_config=Конфигурация на мейлър
|
||||
config.mailer_enabled=Активен
|
||||
config.mailer_disable_helo=Изключи HELO
|
||||
config.mailer_name=Име
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Сървър
|
||||
config.mailer_user=Потребител
|
||||
config.send_test_mail=Изпрати тестово писмо
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Системните съобщения са изтрит
|
||||
|
||||
[action]
|
||||
create_repo=създаде хранилище <a href="%s"> %s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=преименува хранилище от <code>%[1]s</code> на <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=предаде към <a href="%[1]s/src/%[2]s">%[3]s</a> в <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Сравнение между тези %d ревизии
|
||||
@@ -1300,6 +1311,10 @@ create_branch=създаде клон <a href="%[1]s/src/%[2]s"> %[3]s</a> % <a
|
||||
delete_branch=изтри клон <code>%[2]s</code> % <a href="%[1]s">[3]s</a>
|
||||
push_tag=предаде маркер <a href="%s/src/%s">%[2]s</a> към <a href="%[1]s">[3]s</a>
|
||||
delete_tag=изтри етикет <code>%[2]s</code> % <a href="%[1]s">[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=преди
|
||||
|
||||
@@ -39,7 +39,7 @@ your_profile=Váš profil
|
||||
your_settings=Vaše nastavení
|
||||
|
||||
activities=Aktivity
|
||||
pull_requests=Pull Requesty
|
||||
pull_requests=Požadavky na natažení
|
||||
issues=Úkoly
|
||||
|
||||
cancel=Zrušit
|
||||
@@ -72,7 +72,7 @@ run_user=Účet pro spouštění
|
||||
run_user_helper=Tento uživatel musí mít přístup do kořenového adresáře repositářů a právo spustit Gogs.
|
||||
domain=Doména
|
||||
domain_helper=Toto ovlivňuje URL klonů skrze SSH.
|
||||
ssh_port=SSH port
|
||||
ssh_port=Port SSH
|
||||
ssh_port_helper=Číslo portu, které používá váš SSH server. Nechte jej prázdné pro vypnutí používání SSH.
|
||||
use_builtin_ssh_server=Použít vestavěný SSH server
|
||||
use_builtin_ssh_server_popup=Pro Git operace spustit vestavěný SSH server, aby byl rozpoznán od systémové SSH služby.
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Již máte účet? Přihlašte se!
|
||||
social_register_hepler_msg=Již máte účet? Připojte se!
|
||||
disable_register_prompt=Omlouváme se, ale registrace jsou vypnuty. Kontaktujte správce systému.
|
||||
disable_register_mail=Omlouváme se, ale e-mailové služby jsou vypnuté. Kontaktujte správce systému.
|
||||
auth_source=Zdroj ověření
|
||||
local=Lokální
|
||||
remember_me=Zapamatovat si mne
|
||||
forgot_password=Zapomenuté heslo
|
||||
forget_password=Zapomněli jste heslo?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Název organizace je již obsazen.
|
||||
team_name_been_taken=Název týmu je již obsazen.
|
||||
email_been_used=E-mailová adresa je již použita.
|
||||
username_password_incorrect=Chybné uživatelské jméno nebo heslo.
|
||||
auth_source_mismatch=Vybraný zdroj ověření není propojen s uživatelem.
|
||||
enterred_invalid_repo_name=Ujistěte se, prosím, že zadaný název repositáře je správný.
|
||||
enterred_invalid_owner_name=Ujistěte se, prosím, že jméno vlastníka je zadáno správně.
|
||||
enterred_invalid_password=Ujistěte se, prosím, že zadané heslo je správné.
|
||||
@@ -316,7 +319,7 @@ add_email_success=Vaše nová e-mailová adresa byla přidána.
|
||||
|
||||
manage_ssh_keys=Správa SSH klíčů
|
||||
add_key=Přidat klíč
|
||||
ssh_desc=Toto je seznam SSH klíčů vašeho účtu. Tyto klíče umožňují plný přístup k vašim repositářům, proto je velmi důležité, abyste jste si byli jistí, že jsou skutečně vaše.
|
||||
ssh_desc=Toto je seznam SSH klíčů vašeho účtu. Jelikož SSH klíče umožňují komukoliv plný přístup k vašim repositářům, je velmi důležité, abyste si byli jistí, že jsou skutečně vaše.
|
||||
ssh_helper=<strong>Nevíte jak?</strong> Podívejte se do příručky GitHubu jak si <a href="%s">vytvořit vlastní SSH klíč</a>, nebo na <a href="%s">řešení častých problémů</a>, na které můžete narazit při používání SSH.
|
||||
add_new_key=Přidat SSH klíč
|
||||
ssh_key_been_used=Obsah veřejného klíče byl použit.
|
||||
@@ -326,8 +329,8 @@ key_content=Obsah
|
||||
add_key_success=Byl přidán nový SSH klíč '%s'!
|
||||
delete_key=Smazat
|
||||
ssh_key_deletion=Smazání SSH klíče
|
||||
ssh_key_deletion_desc=Smazání tohoto SSH klíče odstraní všechny související přístupy k vašemu účtu. Chcete pokračovat?
|
||||
ssh_key_deletion_success=SSH klíč úspěšně odstraněn!
|
||||
ssh_key_deletion_desc=Smazání tohoto klíče SSH odstraní všechny související přístupy k vašemu účtu. Chcete pokračovat?
|
||||
ssh_key_deletion_success=SSH klíč byl úspěšně smazán!
|
||||
add_on=Přidán dne
|
||||
last_used=Naposledy použit dne
|
||||
no_activity=Žádná aktuální aktivita
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Nebo zadejte tajný kód:
|
||||
two_factor_then_enter_passcode=Pak zadejte přístupový kód:
|
||||
two_factor_verify=Ověřit
|
||||
two_factor_invalid_passcode=Zadaný přístupový kód není platný, prosím, zkuste to znova!
|
||||
two_factor_reused_passcode=Kód, který jste zadali už byl použit. Prosím, zkuste jiný!
|
||||
two_factor_enable_error=Povolení dvoufaktorového ověření selhalo: %v
|
||||
two_factor_enable_success=Dvoufaktorové ověření bylo pro váš účet povoleno!
|
||||
two_factor_recovery_codes_title=Obnovovací kódy dvoufaktorového ověření
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Naposledy synchronizováno
|
||||
watchers=Sledující
|
||||
stargazers=Sledující
|
||||
forks=Rozštěpení
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Vlastník dosáhl maximálního počtu %d vytvořených repositořů.
|
||||
form.name_reserved=Název repositáře '%s' je rezervován.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Obsah souboru se změnil od začátku úprav.
|
||||
editor.file_already_exists=Soubor '%s' již v tomto repositáři existuje.
|
||||
editor.no_changes_to_show=Žádné změny k zobrazení.
|
||||
editor.fail_to_update_file=Vytvoření nebo změna souboru '%s' skončila chybou: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Přidat podadresář...
|
||||
editor.unable_to_upload_files=Nepodařilo se nahrát soubor do '%s'. Chyba: %v
|
||||
editor.upload_files_to_dir=Nahrát soubory do '%s'
|
||||
@@ -616,7 +623,7 @@ pulls.compare_compare=porovnat
|
||||
pulls.filter_branch=Filtrovat větev
|
||||
pulls.no_results=Nebyly nalezeny žádné výsledky.
|
||||
pulls.nothing_to_compare=Není co porovnávat, protože základ a hlavní větve jsou shodné.
|
||||
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
|
||||
pulls.nothing_merge_base=Není co porovnávat, protože tyto dvě větve mají úplně jinou historii.
|
||||
pulls.has_pull_request=`Požadavek na natažení mezi těmito větvemi již existuje: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Vytvořit požadavek na natažení
|
||||
pulls.title_desc=chce sloučit %[1]d revizí z větve <code>%[2]s</code> do větve <code>%[3]s</code>
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=Kontrola rozporů stále pokračuje, prosím obnovte za někol
|
||||
pulls.can_auto_merge_desc=Tento požadavek na natažení může být automaticky sloučen.
|
||||
pulls.cannot_auto_merge_desc=Tento požadavek na natažení nemůže být automaticky sloučen, neboť se v něm nachází rozpory.
|
||||
pulls.cannot_auto_merge_helper=Prosím proveďte sloučení ručně, aby byly vyřešeny rozpory.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.create_merge_commit=Vytvořit slučovací commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Sloučit požadavek na natažení
|
||||
pulls.open_unmerged_pull_exists=`Nemůžete znovuotevřít požadavek na natažení, neboť požadavek na natažení ze stejného repositáře se stejnými informacemi pro sloučení již existuje (#%d) a čeká na sloučení.`
|
||||
pulls.delete_branch=Smazat větev
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=Styl pojmenování úkolů v externím systému úk
|
||||
settings.tracker_issue_style.numeric=Číselný
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumerický
|
||||
settings.tracker_url_format_desc=Můžete použít zástupné výrazy <code>{user} {repo} {index}</code> pro uživatelské jméno, název repositáře a číslo úkolu.
|
||||
settings.pulls_desc=Povolit požadavky na natažení, aby mohly být příspěvky veřejnosti akceptovány
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignorovat změny v netisknutelných znacích
|
||||
settings.pulls.allow_rebase_merge=Povolit použití reabse pro slučovací commity
|
||||
settings.danger_zone=Nebezpečná zóna
|
||||
settings.cannot_fork_to_same_owner=Nemůžete rozštěpit repositář jejímu vlastníkovi.
|
||||
settings.new_owner_has_same_repo=Nový vlastník již repositář se stejným názvem má. Vyberte, prosím, jiné jméno.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Odeslat
|
||||
settings.event_push_desc=Odeslání pomocí Gitu do repositáře
|
||||
settings.event_issues=Úkoly
|
||||
settings.event_issues_desc=Úkol, který je otevřen, uzavřen, znovuotevřen, změněn, přiřazen, nepřiřazen, mající změněn štítek, smazán štítek, mající přiřazen milník, nemající přiřazen milník.
|
||||
settings.event_issue_comment=Komentář k úkolu
|
||||
settings.event_issue_comment_desc=Komentář k úkolu vytvořen, upraven nebo smazán.
|
||||
settings.event_pull_request=Požadavek na natažení
|
||||
settings.event_pull_request_desc=Požadavek na natažení otevřen, uzavřen, znovuotevřen, změněn, přiřazen, nepřiřazen, změněn štítek, smazán štítek, mající nastaven štítek, zrušeno nastavení štítku nebo synchronizován.
|
||||
settings.event_issue_comment=Komentář k úkolu
|
||||
settings.event_issue_comment_desc=Komentář k úkolu vytvořen, upraven nebo smazán.
|
||||
settings.event_release=Vydání
|
||||
settings.event_release_desc=Vydání vystaveno v repositáři.
|
||||
settings.active=Aktivní
|
||||
@@ -835,14 +843,14 @@ settings.recent_deliveries=Nedávné dodávky
|
||||
settings.hook_type=Typ háčku
|
||||
settings.add_slack_hook_desc=Přidat integraci <a href="%s">Slacku</a> do vašeho repositáře.
|
||||
settings.add_discord_hook_desc=Přidat integraci <a href="%s">Discord</a> do vašeho repositáře.
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=Přidat integraci <a href="%s">Dingtalk</a> do vašeho repositáře.
|
||||
settings.slack_token=Poukázka
|
||||
settings.slack_domain=Doména
|
||||
settings.slack_channel=Kanál
|
||||
settings.deploy_keys=Klíče pro nasazení
|
||||
settings.deploy_keys_helper=<b>Přichycen při činu!</b> Pokud chcete přidat osobní veřejné klíče, zadejte je prosím v <a href="%s%s">nastavení vašeho účtu</a>.
|
||||
settings.add_deploy_key=Přidat klíč pro nasazení
|
||||
settings.deploy_key_desc=Klíče pro nasazení mají pouze přístup ke čtení. Nejsou stejné jako osobní SSH klíče.
|
||||
settings.deploy_key_desc=Klíče pro nasazení mají pouze přístup ke čtení. Nejsou stejné jako SSH klíče osobního účtu.
|
||||
settings.no_deploy_keys=Žádné klíče pro nasazení nebyly ještě přidány.
|
||||
settings.title=Název
|
||||
settings.deploy_key_content=Obsah
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Nový klíč pro nasazení '%s' byl přidán!
|
||||
settings.deploy_key_deletion=Smazat klíč pro nasazení
|
||||
settings.deploy_key_deletion_desc=Smazání toho klíče pro nasazení smaže také veškerý k němu svázaný přístup do tohoto repositáře. Chcete pokračovat?
|
||||
settings.deploy_key_deletion_success=Klíč pro nasazení byl smazán!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Procházet zdrojové kódy
|
||||
diff.parent=rodič
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Oblíbení
|
||||
repos.issues=Úkoly
|
||||
repos.size=Velikost
|
||||
|
||||
auths.auth_manage_panel=Panel správy způsobů ověřování
|
||||
auths.auth_sources=Zdroje ověření
|
||||
auths.new=Přidat nový zdroj
|
||||
auths.name=Název
|
||||
auths.type=Typ
|
||||
auths.enabled=Povolený
|
||||
auths.default=Default
|
||||
auths.updated=Změněné
|
||||
auths.auth_type=Typ ověření
|
||||
auths.auth_name=Název ověření
|
||||
@@ -1100,7 +1111,7 @@ auths.domain=Doména
|
||||
auths.host=Server
|
||||
auths.port=Port
|
||||
auths.bind_dn=Připojení DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=Můžete použít '%s' jako zástupný znak pro uživatelské jméno, například DOM\%s
|
||||
auths.bind_password=Heslo připojení
|
||||
auths.bind_password_helper=Upozornění: Toto heslo je ukládáno nešifrované. Nepoužívejte pro správcovské účty.
|
||||
auths.user_base=Výchozí místo hledání uživatelů
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Povolit šifrování TLS
|
||||
auths.skip_tls_verify=Přeskočit ověření TLS
|
||||
auths.pam_service_name=Název služby PAM
|
||||
auths.enable_auto_register=Povolit zaregistrování se
|
||||
auths.tips=Tipy
|
||||
auths.edit=Upravit nastavení ověřování
|
||||
auths.activated=Tento způsob ověřování je aktivní
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Nový způsob ověřování '%s' byl přidán.
|
||||
auths.update_success=Nastavení ověřování bylo změněno.
|
||||
auths.update=Změnit nastavení ověřování
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=Tento způsob ověřování je stále používán některým
|
||||
auths.deletion_success=Způsob ověřování byl smazán!
|
||||
auths.login_source_exist=Zdroj přihlášení '%s' již existuje.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(není nastaveno)
|
||||
config.server_config=Nastavení serveru
|
||||
config.app_name=Název aplikace
|
||||
config.app_ver=Verze aplikace
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Doména
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Port pro naslouchání
|
||||
config.ssh_root_path=Kořenová cesta
|
||||
config.ssh_rewrite_authorized_keys_at_start=Přepsat authorized_keys při startu
|
||||
config.ssh_key_test_path=Cesta testu klíčů
|
||||
config.ssh_keygen_path=Cesta ke generátoru klíčů ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Kontrola minimální velikosti klíčů
|
||||
@@ -1178,7 +1190,7 @@ config.disable_http_git=Vypnout HTTP Git
|
||||
config.enable_local_path_migration=Povolit migraci z místní cesty
|
||||
config.commits_fetch_concurrency=Souběžnost vyzvednutí revizí
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_config=Nastavení HTTP
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
|
||||
config.db_config=Nastavení databáze
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Přeskočit ověření TLS
|
||||
config.mailer_config=Nastavení odesílání e-mailů
|
||||
config.mailer_enabled=Povolený
|
||||
config.mailer_disable_helo=Vypnout HELO
|
||||
config.mailer_name=Název
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Server
|
||||
config.mailer_user=Uživatel
|
||||
config.send_test_mail=Odeslat zkušební E-mail
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Systémová upozornění byla smazána.
|
||||
|
||||
[action]
|
||||
create_repo=vytvořil repositář <a href="%s">%s</a>
|
||||
fork_repo=rozštěpil repositář do <a href="%s">%s</a>
|
||||
rename_repo=přejmenoval repositář z <code>%[1]s</code> na <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=odeslal do větve <a href="%[1]s/src/%[2]s">%[3]s</a> v repositáři <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Zobrazit porovnání pro tyto %d revize
|
||||
@@ -1300,6 +1311,10 @@ create_branch=vytvořil novou větev <a href="%[1]s/src/%[2]s">%[3]s</a> v <a hr
|
||||
delete_branch=smazal větev <code>%[2]s</code> v <a href="%[1]s">%[3]s</a>
|
||||
push_tag=odeslal značku <a href="%s/src/%s">%[2]s</a> do repositáře <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=smazána značka <code>%[2]s</code> v <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=rozštěpil repositář do <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=před
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Haben Sie bereits ein Konto? Jetzt anmelden!
|
||||
social_register_hepler_msg=Haben Sie bereits ein Konto? Jetzt verknüpfen!
|
||||
disable_register_prompt=Es tut uns leid, die Registrierung wurde deaktiviert. Bitte wenden Sie sich an den Administrator.
|
||||
disable_register_mail=Es tut uns leid, die Bestätigung der Registrierungs-E-Mail wurde deaktiviert.
|
||||
auth_source=Authentifizierungsquelle
|
||||
local=Lokalisierung
|
||||
remember_me=Angemeldet bleiben
|
||||
forgot_password=Passwort vergessen
|
||||
forget_password=Passwort vergessen?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Organisationsname ist bereits vergeben.
|
||||
team_name_been_taken=Teamname ist bereits vergeben.
|
||||
email_been_used=E-Mail-Adresse wird bereits verwendet.
|
||||
username_password_incorrect=Benutzername oder Passwort ist nicht korrekt.
|
||||
auth_source_mismatch=Die ausgewählte Authentifizierungsquelle ist dem Benutzer nicht zugeordnet.
|
||||
enterred_invalid_repo_name=Bitte achten Sie darauf, dass der von Ihnen eingegebene Repository-Name korrekt ist.
|
||||
enterred_invalid_owner_name=Bitte achten Sie darauf, dass der eingegebene Name des Besitzers korrekt ist.
|
||||
enterred_invalid_password=Bitte achten Sie darauf, dass das eingegebene Passwort richtig ist.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Oder geben Sie Ihren Geheim-Code ein:
|
||||
two_factor_then_enter_passcode=Geben Sie die PIN ein:
|
||||
two_factor_verify=Bestätigen
|
||||
two_factor_invalid_passcode=Die eingegebene PIN ist ungültig. Bitte versuchen Sie es erneut!
|
||||
two_factor_reused_passcode=Der von dir eingegebene Passcode wurde bereits verwendet, bitte probiere einen anderen!
|
||||
two_factor_enable_error=Einschalten der Zwei-Faktor-Authentifizierung ist fehlgeschlagen: %v
|
||||
two_factor_enable_success=Die Zwei-Faktor-Authentifizierung wurde für Ihr Konto erfolgreich aktiviert!
|
||||
two_factor_recovery_codes_title=Zwei-Faktor-Authentifizierung-Wiederherstellungscodes
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Zuletzt synchronisiert
|
||||
watchers=Beobachter
|
||||
stargazers=In Favoriten von
|
||||
forks=Forks
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Der Besitzer hat die maximale Anzahl von %d erstellbaren Repositories erreicht.
|
||||
form.name_reserved=Repository-Name '%s' ist reserviert.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Seit dem Start der Bearbeitung hat sich die Da
|
||||
editor.file_already_exists=Eine Datei mit dem Namen '%s' existiert bereits in diesem Repository.
|
||||
editor.no_changes_to_show=Keine Änderungen vorhanden.
|
||||
editor.fail_to_update_file=Fehler beim Ändern/Erstellen der Datei '%s'. Fehler: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Unterverzeichnis erstellen...
|
||||
editor.unable_to_upload_files=Fehler beim Hochladen der Dateien zu '%s'. Fehler: %v
|
||||
editor.upload_files_to_dir=Dateien hochladen nach '%s'
|
||||
@@ -616,7 +623,7 @@ pulls.compare_compare=vergleichen
|
||||
pulls.filter_branch=Branch filtern
|
||||
pulls.no_results=Keine Ergebnisse verfügbar.
|
||||
pulls.nothing_to_compare=Es gibt nichts zu vergleichen, da Base- und Head-Branch gleich sind.
|
||||
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
|
||||
pulls.nothing_merge_base=Es gibt nichts zu vergleichen, da beide Zweige eine komplett unterschiedliche Historie haben.
|
||||
pulls.has_pull_request=`Es existiert bereits ein Pull-Request zwischen diesen beiden Zielen: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Pull-Request erstellen
|
||||
pulls.title_desc=möchte %[1]d Commits von <code>%[2]s</code> nach <code>%[3]s</code> zusammenführen
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=Die Konfliktprüfung läuft noch. Bitte aktualisieren Sie die
|
||||
pulls.can_auto_merge_desc=Dieser Pull-Request kann automatisch zusammengeführt werden.
|
||||
pulls.cannot_auto_merge_desc=Dieser Pull-Request kann nicht automatisch zusammengeführt werden, da es Konflikte gibt.
|
||||
pulls.cannot_auto_merge_helper=Bitte manuell zusammenführen, um die Konflikte zu lösen.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=Erstelle einen Merge-Commit
|
||||
pulls.rebase_before_merging=Rebase vor dem Zusammenführen
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Pull-Request zusammenführen
|
||||
pulls.open_unmerged_pull_exists=`Sie können diesen Pull-Request nicht wieder öffnen, da bereits ein offener Pull-Request (#%d) aus dem selben Repository mit den gleichen Merge-Informationen existiert und auf das Zusammenführen wartet.`
|
||||
pulls.delete_branch=Zweig löschen
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=Namenskonvention des externen Issue-Trackers:
|
||||
settings.tracker_issue_style.numeric=Numerisch
|
||||
settings.tracker_issue_style.alphanumeric=Alphanumerisch
|
||||
settings.tracker_url_format_desc=Sie können die Platzhalter <code>{user} {repo} {index}</code> für den Benutzernamen, den Namen des Repositories und die Issue-Nummer verwenden.
|
||||
settings.pulls_desc=Pull-Requests aktivieren, um öffentliche Mitwirkung zu ermöglichen
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignoriere whitespace Änderungen
|
||||
settings.pulls.allow_rebase_merge=Die Verwendung von Rebase erlauben, um Commits zu mergen
|
||||
settings.danger_zone=Gefahrenzone
|
||||
settings.cannot_fork_to_same_owner=Besitzer kann das Repository nicht forken.
|
||||
settings.new_owner_has_same_repo=Der neue Eigentümer hat bereits ein Repository mit dem gleichen Namen. Bitte wählen Sie einen anderen Namen.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push auf ein Repository
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue geöffnet, geschlossen, wieder geöffnet, bearbeitet, zugewiesen, nicht zugewiesen, Label aktualisiert, Label gelöscht, einem Meilenstein zugewiesen oder davon entfernt.
|
||||
settings.event_issue_comment=Issue-Kommentar
|
||||
settings.event_issue_comment_desc=Issue-Kommentar angelegt, geändert oder gelöscht.
|
||||
settings.event_pull_request=Pull-Request
|
||||
settings.event_pull_request_desc=Pull-Request geöffnet, geschlossen, wieder geöffnet, bearbeitet, zugewiesen, nicht zugewiesen, Label aktualisiert, Label gelöscht, einem Meilenstein zugewiesen, davon entfernt oder synchronisiert.
|
||||
settings.event_issue_comment=Issue-Kommentar
|
||||
settings.event_issue_comment_desc=Issue-Kommentar angelegt, geändert oder gelöscht.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release in Repository veröffentlicht.
|
||||
settings.active=Aktiv
|
||||
@@ -835,7 +843,7 @@ settings.recent_deliveries=Letzte Zustellungen
|
||||
settings.hook_type=Hook Typ
|
||||
settings.add_slack_hook_desc=Fügen Sie <a href="%s">Slack</a>-Integration zu Ihrem Repository hinzu.
|
||||
settings.add_discord_hook_desc=Fügen Sie <a href="%s">Discord</a>-Integration zu Ihrem Repository hinzu.
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=<a href="%s">Dingtalk</a>-Integration zu deinem Repository hinzufügen.
|
||||
settings.slack_token=Token
|
||||
settings.slack_domain=Domain
|
||||
settings.slack_channel=Kanal
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Der Deploy-Schlüssel '%s' wurde erfolgreich hinzugefü
|
||||
settings.deploy_key_deletion=Deploy-Schlüssel löschen
|
||||
settings.deploy_key_deletion_desc=Nach dem Löschen dieses Deploy-Schlüssels werden entsprechende Zugriffe auf dieses Repository nicht mehr möglich sein. Möchten Sie wirklich fortfahren?
|
||||
settings.deploy_key_deletion_success=Deploy-Schlüssel wurde erfolgreich gelöscht!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Quellcode durchsuchen
|
||||
diff.parent=Ursprung
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Favoriten
|
||||
repos.issues=Issues
|
||||
repos.size=Größe
|
||||
|
||||
auths.auth_manage_panel=Authentifizierung
|
||||
auths.auth_sources=Authentifizierungsquelle
|
||||
auths.new=Neue Quelle hinzufügen
|
||||
auths.name=Name
|
||||
auths.type=Typ
|
||||
auths.enabled=Aktiviert
|
||||
auths.default=Default
|
||||
auths.updated=Aktualisiert
|
||||
auths.auth_type=Authentifizierungstyp
|
||||
auths.auth_name=Authentifizierungsname
|
||||
@@ -1100,7 +1111,7 @@ auths.domain=Domain
|
||||
auths.host=Host
|
||||
auths.port=Port
|
||||
auths.bind_dn=DN binden
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=Sie können "%s" als Platzhalter für den Benutzernamen einsetzen, z.B. DOM\%s
|
||||
auths.bind_password=Passwort binden
|
||||
auths.bind_password_helper=Achtung: Das Passwort wird im Klartext gespeichert. Benutzen Sie kein Konto mit hoher Berechtigungsstufe.
|
||||
auths.user_base=Basis für Benutzersuche
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=TLS-Verschlüsselung aktivieren
|
||||
auths.skip_tls_verify=TLS-Prüfung überspringen
|
||||
auths.pam_service_name=PAM Dienstname
|
||||
auths.enable_auto_register=Automatische Registrierung aktivieren
|
||||
auths.tips=Tipps
|
||||
auths.edit=Authentifizierungseinstellungen bearbeiten
|
||||
auths.activated=Diese Authentifizierung ist aktiv
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Neue Authentifizierung '%s' wurde erfolgreich hinzugefügt.
|
||||
auths.update_success=Die Authentifizierungseinstellungen wurden erfolgreich aktualisiert.
|
||||
auths.update=Authentifizierungseinstellungen aktualisieren
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=Diese Authentifizierung wird noch von einigen Benutzern verw
|
||||
auths.deletion_success=Authentifizierung wurde erfolgreich gelöscht!
|
||||
auths.login_source_exist=Login-Quelle '%s' ist bereits vorhanden.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(nicht festgelegt)
|
||||
config.server_config=Serverkonfiguration
|
||||
config.app_name=Name der Anwendung
|
||||
config.app_ver=Anwendungsversion
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Domain
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Listen Port
|
||||
config.ssh_root_path=Verzeichnis
|
||||
config.ssh_rewrite_authorized_keys_at_start=Beim Start authorized_keys umschreiben
|
||||
config.ssh_key_test_path=Schlüssel-Test-Pfad
|
||||
config.ssh_keygen_path=Keygen ('ssh-keygen') Pfad
|
||||
config.ssh_minimum_key_size_check=Prüfung der Mindestschlüssellänge
|
||||
@@ -1178,7 +1190,7 @@ config.disable_http_git=Deaktiviere HTTP-Git
|
||||
config.enable_local_path_migration=Erlaube Migration von lokalem Pfad
|
||||
config.commits_fetch_concurrency=Anzahl gleichzeitiger Commit-/Fetch-Prozesse
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_config=HTTP-Konfiguration
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
|
||||
config.db_config=Datenbankkonfiguration
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=TLS verifikation überspringen
|
||||
config.mailer_config=Mailer-Konfiguration
|
||||
config.mailer_enabled=Aktiviert
|
||||
config.mailer_disable_helo=HELO Deaktivieren
|
||||
config.mailer_name=Name
|
||||
config.mailer_subject_prefix=Betreff-Präfix
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Benutzer
|
||||
config.send_test_mail=Test-E-Mail senden
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Systemmitteilungen wurden erfolgreich gelöscht.
|
||||
|
||||
[action]
|
||||
create_repo=hat das Repository <a href="%s">%s</a> erstellt
|
||||
fork_repo=hat das Repository nach <a href="%s">%s</a> geforkt
|
||||
rename_repo=hat das Repository von <code>%[1]s</code> zu <a href="%[2]s">%[3]s</a> umbenannt
|
||||
commit_repo=hat auf <a href="%[1]s/src/%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a> gepusht
|
||||
compare_commits=Zeige Vergleich für diese %d Commits
|
||||
@@ -1295,11 +1306,15 @@ comment_issue=`hat Issue <a href="%s/issues/%s">%s#%[2]s</a> kommentiert`
|
||||
create_pull_request=`hat Pull-Request <a href="%s/pulls/%s">%s#%[2]s</a> erstellt`
|
||||
close_pull_request=`hat Pull-Request <a href="%s/pulls/%s">%s#%[2]s</a> geschlossen`
|
||||
reopen_pull_request=`hat den Pull-Request <a href="%s/pulls/%s">%s#%[2]s</a> wieder geöffnet`
|
||||
merge_pull_request=`hat Pull-Request <a href="%s/pulls/%s">%s#%[2]s</a> zuammengeführt`
|
||||
merge_pull_request=`hat Pull-Request <a href="%s/pulls/%s">%s#%[2]s</a> zusammengeführt`
|
||||
create_branch=hat neuen Branch <a href="%[1]s/src/%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a> angelegt
|
||||
delete_branch=hat Branch <code>%[2]s</code> in <a href="%[1]s">%[3]s</a> gelöscht
|
||||
push_tag=hat Tag <a href="%s/src/%s">%[2]s</a> auf <a href="%[1]s">%[3]s</a> gepusht
|
||||
delete_tag=hat Tag <code>%[2]s</code> in <a href="%[1]s">%[3]s</a> gelöscht
|
||||
fork_repo=hat das Repository nach <a href="%s">%s</a> geforkt
|
||||
mirror_sync_push=hat auf <a href="%[1]s/src/%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a> gepusht
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=vor
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Already have an account? Sign in now!
|
||||
social_register_hepler_msg=Already have an account? Bind now!
|
||||
disable_register_prompt=Sorry, registration has been disabled. Please contact the site administrator.
|
||||
disable_register_mail=Sorry, Register Mail Confirmation has been disabled.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Remember Me
|
||||
forgot_password=Forgot Password
|
||||
forget_password=Forgot password?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Organisation name has already been taken.
|
||||
team_name_been_taken=Team name has already been taken.
|
||||
email_been_used=Email address has already been used.
|
||||
username_password_incorrect=Username or password is not correct.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Please make sure that the repository name you have entered is correct.
|
||||
enterred_invalid_owner_name=Please make sure that the owner name you have entered is correct.
|
||||
enterred_invalid_password=Please make sure the that password you have entered is correct.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=Then enter passcode:
|
||||
two_factor_verify=Verify
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Last Synced
|
||||
watchers=Watchers
|
||||
stargazers=Stargazers
|
||||
forks=Forks
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=The owner has reached maximum creation limit of %d repositories.
|
||||
form.name_reserved=Repository name '%s' is reserved.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=File content has been changed since you starte
|
||||
editor.file_already_exists=A file with name '%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
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Add subdirectory...
|
||||
editor.unable_to_upload_files=Failed to upload files to '%s' with error: %v
|
||||
editor.upload_files_to_dir=Upload files to '%s'
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc=This pull request can't be merged automatically bec
|
||||
pulls.cannot_auto_merge_helper=Please merge manually in order to resolve the conflicts.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Merge Pull Request
|
||||
pulls.open_unmerged_pull_exists=`You can't perform reopen operation because there is already an open pull request (#%d) from same repository with same merge information and is waiting for merging.`
|
||||
pulls.delete_branch=Delete Branch
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style=External Issue Tracker Naming Style:
|
||||
settings.tracker_issue_style.numeric=Numeric
|
||||
settings.tracker_issue_style.alphanumeric=Alphanumeric
|
||||
settings.tracker_url_format_desc=You can use placeholder <code>{user} {repo} {index}</code> for user name, repository name and issue index.
|
||||
settings.pulls_desc=Enable pull requests to accept public contributions
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Danger Zone
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Repository wiki data have been erased successfull
|
||||
settings.delete=Delete This Repository
|
||||
settings.delete_desc=Once you delete a repository, there is no going back. Please be certain.
|
||||
settings.delete_notices_1=- This operation <strong>CANNOT</strong> be undone.
|
||||
settings.delete_notices_2=- This operation will permanently delete the everything of this repository, including Git data, issues, comments and accesses of collaborators.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- All forks will become independent after deletion.
|
||||
settings.deletion_success=Repository has been deleted successfully!
|
||||
settings.update_settings_success=Repository options has been updated successfully.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push to a repository
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Active
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=New deploy key '%s' has been added successfully!
|
||||
settings.deploy_key_deletion=Delete Deploy Key
|
||||
settings.deploy_key_deletion_desc=Deleting this deploy key will remove all related accesses for this repository. Do you want to continue?
|
||||
settings.deploy_key_deletion_success=Deploy key has been deleted successfully!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Browse Source
|
||||
diff.parent=parent
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Stars
|
||||
repos.issues=Issues
|
||||
repos.size=Size
|
||||
|
||||
auths.auth_manage_panel=Authentication Manage Panel
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Add New Source
|
||||
auths.name=Name
|
||||
auths.type=Type
|
||||
auths.enabled=Enabled
|
||||
auths.default=Default
|
||||
auths.updated=Updated
|
||||
auths.auth_type=Authentication Type
|
||||
auths.auth_name=Authentication Name
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Enable TLS Encryption
|
||||
auths.skip_tls_verify=Skip TLS Verify
|
||||
auths.pam_service_name=PAM Service Name
|
||||
auths.enable_auto_register=Enable Auto Registration
|
||||
auths.tips=Tips
|
||||
auths.edit=Edit Authentication Setting
|
||||
auths.activated=This authentication is activated
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=New authentication '%s' has been added successfully.
|
||||
auths.update_success=Authentication setting has been updated successfully.
|
||||
auths.update=Update Authentication Setting
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Domain
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Listen Port
|
||||
config.ssh_root_path=Root Path
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Key Test Path
|
||||
config.ssh_keygen_path=Keygen ('ssh-keygen') Path
|
||||
config.ssh_minimum_key_size_check=Minimum Key Size Check
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Skip TLS Verify
|
||||
config.mailer_config=Mailer Configuration
|
||||
config.mailer_enabled=Enabled
|
||||
config.mailer_disable_helo=Disable HELO
|
||||
config.mailer_name=Name
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=User
|
||||
config.send_test_mail=Send Test Email
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=System notices have been deleted successfully.
|
||||
|
||||
[action]
|
||||
create_repo=created repository <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=renamed repository from <code>%[1]s</code> to <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=pushed to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=View comparison for these %d commits
|
||||
@@ -1300,6 +1311,10 @@ create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href=
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=pushed tag <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=ago
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg = Already have an account? Sign in now!
|
||||
social_register_hepler_msg = Already have an account? Bind now!
|
||||
disable_register_prompt = Sorry, registration has been disabled. Please contact the site administrator.
|
||||
disable_register_mail = Sorry, email services are disabled. Please contact the site administrator.
|
||||
auth_source = Authentication Source
|
||||
local = Local
|
||||
remember_me = Remember Me
|
||||
forgot_password= Forgot Password
|
||||
forget_password = Forgot password?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken = Organization name has already been taken.
|
||||
team_name_been_taken = Team name has already been taken.
|
||||
email_been_used = Email address has already been used.
|
||||
username_password_incorrect = Username or password is not correct.
|
||||
auth_source_mismatch = The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name = Please make sure that the repository name you entered is correct.
|
||||
enterred_invalid_owner_name = Please make sure that the owner name you entered is correct.
|
||||
enterred_invalid_password = Please make sure the that password you entered is correct.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret = Or enter the secret:
|
||||
two_factor_then_enter_passcode = Then enter passcode:
|
||||
two_factor_verify = Verify
|
||||
two_factor_invalid_passcode = The passcode you entered is not valid, please try again!
|
||||
two_factor_reused_passcode = The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error = Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success = Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title = Two-factor Authentication Recovery Codes
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced = Last Synced
|
||||
watchers = Watchers
|
||||
stargazers = Stargazers
|
||||
forks = Forks
|
||||
repo_description_helper = Description of repository. Maximum 512 characters length.
|
||||
repo_description_length = Available characters
|
||||
|
||||
form.reach_limit_of_creation = The owner has reached maximum creation limit of %d repositories.
|
||||
form.name_reserved = Repository name '%s' is reserved.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing = File content has been changed since you star
|
||||
editor.file_already_exists = A file with name '%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
|
||||
editor.fail_to_delete_file = Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir = Add subdirectory...
|
||||
editor.unable_to_upload_files = Failed to upload files to '%s' with error: %v
|
||||
editor.upload_files_to_dir = Upload files to '%s'
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc = This pull request can't be merged automatically b
|
||||
pulls.cannot_auto_merge_helper = Please merge manually in order to resolve the conflicts.
|
||||
pulls.create_merge_commit = Create a merge commit
|
||||
pulls.rebase_before_merging = Rebase before merging
|
||||
pulls.commit_description = Commit Description
|
||||
pulls.merge_pull_request = Merge Pull Request
|
||||
pulls.open_unmerged_pull_exists = `You can't perform reopen operation because there is already an open pull request (#%d) from same repository with same merge information and is waiting for merging.`
|
||||
pulls.delete_branch = Delete Branch
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style = External Issue Tracker Naming Style:
|
||||
settings.tracker_issue_style.numeric = Numeric
|
||||
settings.tracker_issue_style.alphanumeric = Alphanumeric
|
||||
settings.tracker_url_format_desc = You can use placeholder <code>{user} {repo} {index}</code> for user name, repository name and issue index.
|
||||
settings.pulls_desc = Enable pull requests to accept public contributions
|
||||
settings.pulls_desc = Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace = Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge = Allow use rebase to merge commits
|
||||
settings.danger_zone = Danger Zone
|
||||
@@ -806,9 +814,9 @@ settings.slack_username = Username
|
||||
settings.slack_icon_url = Icon URL
|
||||
settings.slack_color = Color
|
||||
settings.event_desc = When should this webhook be triggered?
|
||||
settings.event_push_only = Just the <code>push</code> event.
|
||||
settings.event_send_everything = I need <strong>everything</strong>.
|
||||
settings.event_choose = Let me choose what I need.
|
||||
settings.event_push_only = Just the <code>push</code> event
|
||||
settings.event_send_everything = I need <strong>everything</strong>
|
||||
settings.event_choose = Let me choose what I need
|
||||
settings.event_create = Create
|
||||
settings.event_create_desc = Branch or tag created
|
||||
settings.event_delete = Delete
|
||||
@@ -819,10 +827,10 @@ settings.event_push = Push
|
||||
settings.event_push_desc = Git push to a repository
|
||||
settings.event_issues = Issues
|
||||
settings.event_issues_desc = Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment = Issue Comment
|
||||
settings.event_issue_comment_desc = Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request = Pull Request
|
||||
settings.event_pull_request_desc = Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment = Issue Comment
|
||||
settings.event_issue_comment_desc = Issue comment created, edited, or deleted.
|
||||
settings.event_release = Release
|
||||
settings.event_release_desc = Release published in a repository.
|
||||
settings.active = Active
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success = New deploy key '%s' has been added successfully!
|
||||
settings.deploy_key_deletion = Delete Deploy Key
|
||||
settings.deploy_key_deletion_desc = Deleting this deploy key will remove all related accesses for this repository. Do you want to continue?
|
||||
settings.deploy_key_deletion_success = Deploy key has been deleted successfully!
|
||||
settings.description_desc = Description of repository. Maximum 512 characters length.
|
||||
settings.description_length = Available characters
|
||||
|
||||
diff.browse_source = Browse Source
|
||||
diff.parent = parent
|
||||
@@ -1087,11 +1097,12 @@ repos.stars = Stars
|
||||
repos.issues = Issues
|
||||
repos.size = Size
|
||||
|
||||
auths.auth_manage_panel = Authentication Manage Panel
|
||||
auths.auth_sources = Authentication Sources
|
||||
auths.new = Add New Source
|
||||
auths.name = Name
|
||||
auths.type = Type
|
||||
auths.enabled = Enabled
|
||||
auths.default = Default
|
||||
auths.updated = Updated
|
||||
auths.auth_type = Authentication Type
|
||||
auths.auth_name = Authentication Name
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls = Enable TLS Encryption
|
||||
auths.skip_tls_verify = Skip TLS Verify
|
||||
auths.pam_service_name = PAM Service Name
|
||||
auths.enable_auto_register = Enable Auto Registration
|
||||
auths.tips = Tips
|
||||
auths.edit = Edit Authentication Setting
|
||||
auths.activated = This authentication is activated
|
||||
auths.default_auth = This authentication is default login source
|
||||
auths.new_success = New authentication '%s' has been added successfully.
|
||||
auths.update_success = Authentication setting has been updated successfully.
|
||||
auths.update = Update Authentication Setting
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain = Domain
|
||||
config.ssh_port = Port
|
||||
config.ssh_listen_port = Listen Port
|
||||
config.ssh_root_path = Root Path
|
||||
config.ssh_rewrite_authorized_keys_at_start = Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path = Key Test Path
|
||||
config.ssh_keygen_path = Keygen ('ssh-keygen') Path
|
||||
config.ssh_minimum_key_size_check = Minimum Key Size Check
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify = Skip TLS Verify
|
||||
config.mailer_config = Mailer Configuration
|
||||
config.mailer_enabled = Enabled
|
||||
config.mailer_disable_helo = Disable HELO
|
||||
config.mailer_name = Name
|
||||
config.mailer_subject_prefix = Subject Prefix
|
||||
config.mailer_host = Host
|
||||
config.mailer_user = User
|
||||
config.send_test_mail = Send Test Email
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success = System notices have been deleted successfully.
|
||||
|
||||
[action]
|
||||
create_repo = created repository <a href="%s">%s</a>
|
||||
fork_repo = forked a repository to <a href="%s">%s</a>
|
||||
rename_repo = renamed repository from <code>%[1]s</code> to <a href="%[2]s">%[3]s</a>
|
||||
commit_repo = pushed to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
compare_commits = View comparison for these %d commits
|
||||
@@ -1300,6 +1311,10 @@ create_branch = created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a hre
|
||||
delete_branch = deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag = pushed tag <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a>
|
||||
delete_tag = deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo = forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push = synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create = synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete = synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago = ago
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=¿Ya tienes una cuenta? ¡Inicia sesión!
|
||||
social_register_hepler_msg=¿Ya tienes una cuenta? ¡Enlázala!
|
||||
disable_register_prompt=Lo sentimos, el registro está deshabilitado. Por favor, contacta con el administrador del sitio.
|
||||
disable_register_mail=Lo sentimos. Los correos de Confirmación de Registro están deshabilitados.
|
||||
auth_source=Authentication Source
|
||||
local=Idioma
|
||||
remember_me=Recuérdame
|
||||
forgot_password=He olvidado mi contraseña
|
||||
forget_password=¿Has olvidado tu contraseña?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Ya existe una organización con este nombre.
|
||||
team_name_been_taken=Ya existe un equipo con este nombre.
|
||||
email_been_used=Esta dirección de correo electrónico ya está en uso.
|
||||
username_password_incorrect=Nombre de usuario o contraseña incorrectos.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Por favor, asegúrate de que has introducido correctamente el nombre del repositorio.
|
||||
enterred_invalid_owner_name=Por favor, asegúrate de que has introducido correctamente el nombre del propietario.
|
||||
enterred_invalid_password=Por favor, asegúrate de que has introducido correctamente tu contraseña.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=Introduce el Pin:
|
||||
two_factor_verify=Verificar
|
||||
two_factor_invalid_passcode=¡El Pin que has introducido no es válido, por favor, inténtalo de nuevo!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Última sincronización
|
||||
watchers=Seguidores
|
||||
stargazers=Fans
|
||||
forks=Forks
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=El propietario ha alcanzado el límite máximo de %d repositorios creados.
|
||||
form.name_reserved=El nombre del repositorio '%s' está reservado.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=El contenido del archivo ha sido modificado de
|
||||
editor.file_already_exists=Ya existe un archivo con nombre '%s' en este repositorio.
|
||||
editor.no_changes_to_show=No existen cambios para mostrar.
|
||||
editor.fail_to_update_file=Error al actualizar/crear el archivo '%s', error: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Añadir subdirectorio...
|
||||
editor.unable_to_upload_files=Error al subir archivos a '%s', error: %v
|
||||
editor.upload_files_to_dir=Subir archivos a '%s'
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc=Este Pull Request no puede ser fusionado automátic
|
||||
pulls.cannot_auto_merge_helper=Por favor, fusiona manualmente para resolver los conflictos.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Fusionar Pull Request
|
||||
pulls.open_unmerged_pull_exists=`Usted no puede realizar la operación de reapertura porque en estos momentos existe una solicitud de pull request (#%d) para el mismo repositorio con la misma información que se encuentra a la espera de aprobación`
|
||||
pulls.delete_branch=Eliminar la rama
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style=Estilo de etiquetado del tracker externo de inciden
|
||||
settings.tracker_issue_style.numeric=Numérico
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumérico
|
||||
settings.tracker_url_format_desc=Puedes usar las plantillas <code>{user} {repo} {index}</code> para el nombre de usuario, nombre del repositorio e índice de la incidencia.
|
||||
settings.pulls_desc=Habilitar Pull Requests para aceptar contribuciones públicas
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Zona de Peligro
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Los datos de la wiki del repositorio han sido bor
|
||||
settings.delete=Eliminar este repositorio
|
||||
settings.delete_desc=Una vez has eliminado un repositorio, no hay vuelta atrás. Por favor, asegúrate de que es lo que quieres.
|
||||
settings.delete_notices_1=- Esta operación <strong>NO PUEDE</strong> revertirse.
|
||||
settings.delete_notices_2=- Esta operación eliminará de manera permanente todo el contenido de este repositorio, incluyendo los datos de git, las incidencias, los comentarios y los permisos de acceso de los colaboradores.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- Todos los forks se convertirán en independientes tras el borrado.
|
||||
settings.deletion_success=¡El respositorio ha sido eliminado satisfactoriamente!
|
||||
settings.update_settings_success=Las opciones del repositorio se han actualizado correctamente.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push a un repositorio
|
||||
settings.event_issues=Incidencias
|
||||
settings.event_issues_desc=Incidencia abierta, cerrada, reabierta, editada, asignada, desasignada, etiqueta actualizada, etiqueta limpiada, hito marcado, o desmarcado,.
|
||||
settings.event_issue_comment=Comentario de incidencia
|
||||
settings.event_issue_comment_desc=Comentario de incidencias creado, editado o borrado.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull request abierto, cerrado, reabierto, editado, asignado, desasignado, etiqueta actualizada, etiqueta limpiada, hito marcado, hito desmarcado, o sincronizado.
|
||||
settings.event_issue_comment=Comentario de incidencia
|
||||
settings.event_issue_comment_desc=Comentario de incidencias creado, editado o borrado.
|
||||
settings.event_release=Lanzamiento
|
||||
settings.event_release_desc=Lanzamiento publicado en un repositorio.
|
||||
settings.active=Activo
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=¡La nueva clave de desplieque '%s' ha sido creada con
|
||||
settings.deploy_key_deletion=Eliminar Clave de Despliegue
|
||||
settings.deploy_key_deletion_desc=Al eliminar esta clave de despliegue se perderán el permiso de acceso a este repositorio con dicha clave. ¿Deseas continuar?
|
||||
settings.deploy_key_deletion_success=¡Clave de despliegue eliminada con éxito!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Explorar el Código
|
||||
diff.parent=padre
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Estrellas
|
||||
repos.issues=Incidencias
|
||||
repos.size=Tamaño
|
||||
|
||||
auths.auth_manage_panel=Panel de administración de autenticación
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Añadir nuevo origen
|
||||
auths.name=Nombre
|
||||
auths.type=Tipo
|
||||
auths.enabled=Activo
|
||||
auths.default=Default
|
||||
auths.updated=Actualizado
|
||||
auths.auth_type=Tipo de autenticación
|
||||
auths.auth_name=Nombre de autenticación
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Habilitar cifrado TLS
|
||||
auths.skip_tls_verify=Omitir la verificación TLS
|
||||
auths.pam_service_name=Nombre del Servicio PAM
|
||||
auths.enable_auto_register=Hablilitar Auto-Registro
|
||||
auths.tips=Consejos
|
||||
auths.edit=Editar la Configuración de Autenticación
|
||||
auths.activated=Esta autenticación ha sido activada
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=¡La autenticación '%s' ha sido añadida con éxito!
|
||||
auths.update_success=La configuración de autenticación ha sido actualizada con éxito.
|
||||
auths.update=Actualizar la configuración de autenticación
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Dominio
|
||||
config.ssh_port=Puerto
|
||||
config.ssh_listen_port=Puerto de escucha
|
||||
config.ssh_root_path=Ruta raíz
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Ruta de la clave de prueba
|
||||
config.ssh_keygen_path=Ruta del generador de claves ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Tamaño mínimo de la clave de verificación
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Omitir la Verificación TLS
|
||||
config.mailer_config=Configuración del servidor de correo
|
||||
config.mailer_enabled=Activado
|
||||
config.mailer_disable_helo=Desactivar HELO
|
||||
config.mailer_name=Nombre
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Usuario
|
||||
config.send_test_mail=Enviar email de prueba
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Las notificaciones del sistema han sido eliminadas satisf
|
||||
|
||||
[action]
|
||||
create_repo=creó el repositorio <a href="%s">%s</a>
|
||||
fork_repo=ha hecho un Fork en <a href="%s">%s</a>
|
||||
rename_repo=repositorio renombrado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=hizo push a <a href="%[1]s/src/%[2]s">%[3]s</a> en <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Ver comparación de estos %d commits
|
||||
@@ -1295,11 +1306,15 @@ comment_issue=`comentó en la incidencia <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
create_pull_request=`creado pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
close_pull_request=`cerró el pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
reopen_pull_request=`reabrió el pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`fusionado pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`fusionó el pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=nueva rama <a href="%[1]s/src/%[2]s">%[3]s</a> creada en <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=borrada rama <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=hizo push del tag <a href="%s/src/%s">%[2]s</a> a <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=borrada etiqueta <code>%[2]s</code> en <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=ha hecho un Fork en <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=hace
|
||||
|
||||
1347
conf/locale/locale_fa-IR.ini
Normal file
1347
conf/locale/locale_fa-IR.ini
Normal file
File diff suppressed because it is too large
Load Diff
@@ -151,6 +151,8 @@ register_hepler_msg=On jo tili? Kirjaudu sisään nyt!
|
||||
social_register_hepler_msg=On jo tili? Liitä nyt!
|
||||
disable_register_prompt=Sori, rekisteröinti on poistettu käytöstä. Ole hyvä ja ota yhteyttä sivuston ylläpitoon.
|
||||
disable_register_mail=Sori, rekisteröinti sähköpostivarmistukset on poistettu käytöstä.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Muista minut
|
||||
forgot_password=Unohtuiko salasana
|
||||
forget_password=Unohtuiko salasana?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Organisaation nimi on jo käytössä.
|
||||
team_name_been_taken=Tiimin nimi on jo käytössä.
|
||||
email_been_used=Sähköpostiosoite on jo käytössä.
|
||||
username_password_incorrect=Käyttäjätunnus tai salasana ei ole oikein.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Ole hyvä ja varmista että kirjoittamasi repon nimi on oikein.
|
||||
enterred_invalid_owner_name=Ole hyvä ja varmista että kirjoittamasi omistajan nimi on oikein.
|
||||
enterred_invalid_password=Ole hyvä ja varmista että kirjoittamasi salasana on oikein.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Tai kirjoita salaisuus:
|
||||
two_factor_then_enter_passcode=Sitten kirjoita salasana:
|
||||
two_factor_verify=Vahvista
|
||||
two_factor_invalid_passcode=Kirjoittamasi salasana ei kelpaa, yritä uudelleen!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Ota käyttöön kaksivaiheinen todennus epäonnistui: %v
|
||||
two_factor_enable_success=Kaksivaiheinen todennus on otettu käyttöön tilissäsi menestyksekkäästi!
|
||||
two_factor_recovery_codes_title=Kaksivaiheinen todennus palautuskoodit
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Synkronoitu viimeksi
|
||||
watchers=Tarkkailijat
|
||||
stargazers=Tähtiharrastajat
|
||||
forks=Haarat
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Omistaja on saavuttanut maksimi luontirajan %d repoa.
|
||||
form.name_reserved=Repon nimi '%s' on varattu.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Tiedoston sisältöä on muutettu aloittamises
|
||||
editor.file_already_exists=Tiedosto '%s' on jo olemassa tässä repossa.
|
||||
editor.no_changes_to_show=Ei muutoksia näytettäväksi.
|
||||
editor.fail_to_update_file=Tiedoston '%s' päivitys/luonti epäonnistui virheeseen: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Lisää alikansio...
|
||||
editor.unable_to_upload_files=Tiedostojen lataus epäonnistui kansioon '%s' virheellä: %v
|
||||
editor.upload_files_to_dir=Lataa tiedostoja kansioon '%s'
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc=Tätä pull-pyyntöä ei voi yhdistää automaattis
|
||||
pulls.cannot_auto_merge_helper=Ole hyvä ja yhdistä manuaalisesti konfliktien ratkaisemiseksi.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Yhdistä Pull-pyyntö
|
||||
pulls.open_unmerged_pull_exists=`Et voi suorittaa uudelleenavaus toimintoa koska on jo olemassa pull-pyyntö (#%d) samasta reposta samoilla yhdistämistiedoilla ja odottaa yhdistämistä.`
|
||||
pulls.delete_branch=Poista haara
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style=Ulkoisen virheenseurannan nimeämistyyli:
|
||||
settings.tracker_issue_style.numeric=Numeerinen
|
||||
settings.tracker_issue_style.alphanumeric=Aakkosnumeerinen
|
||||
settings.tracker_url_format_desc=Voit käyttää paikkamerkkiä <code>{user} {repo} {index}</code> käyttäjänimelle, reponimelle ja vikanumerolle.
|
||||
settings.pulls_desc=Ota käyttöön pull-pyynnöt salliaksesi julkiset koodilahjoitukset
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Vaaravyöhyke
|
||||
@@ -761,10 +769,10 @@ settings.wiki_deletion_success=Repo wiki tiedot on poistettu onnistuneesti.
|
||||
settings.delete=Poista tämä repo
|
||||
settings.delete_desc=Huomio, kun kerran poistat repon, niin ei ole paluuta. Varmista että haluat todella tehdä tämän.
|
||||
settings.delete_notices_1=- Tätä toimintoa <strong>EI VOI</strong> peruuttaa myöhemmin.
|
||||
settings.delete_notices_2=- Tämä toiminto poistaa pysyvästi kaikki tästä reposta, mukaanlukien Git tiedot, ongelmat, kommentit ja yhteistyökumppanien pääsyoikeudet.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- Kaikki haarat muuttuvat itsenäisiksi poiston jälkeen.
|
||||
settings.deletion_success=Repo on poistettu onnistuneesti!
|
||||
settings.update_settings_success=Repom asetukset on päivitetty onnistuneesti.
|
||||
settings.update_settings_success=Repon asetukset on päivitetty onnistuneesti.
|
||||
settings.transfer_owner=Uusi omistaja
|
||||
settings.make_transfer=Tee siirto
|
||||
settings.transfer_succeed=Arkiston omistusoikeus on siirretty onnistuneesti.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push repoon
|
||||
settings.event_issues=Ongelmat
|
||||
settings.event_issues_desc=Ongelma avattu, suljettu, uudelleenavattu, muokattu, annettu, anto vedottu, tarra päivitetty, tarra poistettu, merkkipaalutettu, tai poistettu merkkipaalu.
|
||||
settings.event_issue_comment=Ongelman kommentti
|
||||
settings.event_issue_comment_desc=Ongelman kommentti luotu, muokattu, tai poistettu.
|
||||
settings.event_pull_request=Pull-pyyntö
|
||||
settings.event_pull_request_desc=Pull-pyyntö avattu, suljettu, uudelleenavattu, muokattu, annettu, anto vedottu, tarra päivitetty, tarra poistettu, merkkipaalutettu, poistettu merkkipaalu, tai synkronoitu.
|
||||
settings.event_issue_comment=Ongelman kommentti
|
||||
settings.event_issue_comment_desc=Ongelman kommentti luotu, muokattu, tai poistettu.
|
||||
settings.event_release=Julkaisu
|
||||
settings.event_release_desc=Julkaisu julkaistu repoon.
|
||||
settings.active=Aktiivinen
|
||||
@@ -835,7 +843,7 @@ settings.recent_deliveries=Viimeisimmät toimitukset
|
||||
settings.hook_type=Koukkutyyppi
|
||||
settings.add_slack_hook_desc=Lisää <a href="%s">Slack</a> integraatio repoosi.
|
||||
settings.add_discord_hook_desc=Lisää <a href="%s">Discord</a> integraatio repositoryysi.
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=Lisää <a href="%s">Dingtalk</a> integraatio repositoryysi.
|
||||
settings.slack_token=Pääsymerkki
|
||||
settings.slack_domain=Verkkotunnus
|
||||
settings.slack_channel=Kanava
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Uusi deploy avain '%s' on lisätty onnistuneesti!
|
||||
settings.deploy_key_deletion=Poista deploy avain
|
||||
settings.deploy_key_deletion_desc=Deploy avaimen poistaminen poistaa myös kaikki liitetyt käyttötiedot tästä reposta. Haluatko jatkaa?
|
||||
settings.deploy_key_deletion_success=Deploy avain on poistettu onnistuneesti!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Selaa lähdekoodia
|
||||
diff.parent=vanhempi
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Äänet
|
||||
repos.issues=Ongelmat
|
||||
repos.size=Koko
|
||||
|
||||
auths.auth_manage_panel=Todennus hallintapaneeli
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Lisää uusi lähde
|
||||
auths.name=Nimi
|
||||
auths.type=Tyyppi
|
||||
auths.enabled=Käytössä
|
||||
auths.default=Default
|
||||
auths.updated=Päivitetty
|
||||
auths.auth_type=Todennustyyppi
|
||||
auths.auth_name=Todennusnimi
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Ota käyttöön TLS-salaus
|
||||
auths.skip_tls_verify=Ohita TLS tarkistaminen
|
||||
auths.pam_service_name=PAM palvelun nimi
|
||||
auths.enable_auto_register=Ota käyttöön automaattinen rekisteröinti
|
||||
auths.tips=Vinkit
|
||||
auths.edit=Muokkaa todennusasetusta
|
||||
auths.activated=Tämä todennus on aktivoitu
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Uusi todennus '%s' on luotu onnistuneesti.
|
||||
auths.update_success=Todennusasetus on päivitetty onnistuneesti.
|
||||
auths.update=Päivitä todennusasetus
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=Tämä todennus on yhä joidenkin käyttäjien käytössä,
|
||||
auths.deletion_success=Todennus on poistettu onnistuneesti!
|
||||
auths.login_source_exist=Kirjautumislähde '%s' on jo olemassa
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(ei ole asetettu)
|
||||
config.server_config=Palvelin asetukset
|
||||
config.app_name=Sovellus nimi
|
||||
config.app_ver=Sovellus versio
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Verkkotunnus
|
||||
config.ssh_port=Portti
|
||||
config.ssh_listen_port=Kuuntele porttia
|
||||
config.ssh_root_path=Juuren polku
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Polku jossa avaimet testataan
|
||||
config.ssh_keygen_path=Keygen ('ssh-keygen') polku
|
||||
config.ssh_minimum_key_size_check=Avaimen vähimmäiskoko tarkistus
|
||||
@@ -1178,7 +1190,7 @@ config.disable_http_git=Poista käytöstä HTTP Git
|
||||
config.enable_local_path_migration=Ota käyttöön paikallisen polun migraatio
|
||||
config.commits_fetch_concurrency=Committien noudon samanaikaisuus
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_config=HTTP-asetukset
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
|
||||
config.db_config=Tietokannan asetukset
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Ohita TLS tarkistaminen
|
||||
config.mailer_config=Sähköpostipalvelin asetukset
|
||||
config.mailer_enabled=Käytössä
|
||||
config.mailer_disable_helo=Poista käytöstä HELO
|
||||
config.mailer_name=Nimi
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Isäntä
|
||||
config.mailer_user=Käyttäjä
|
||||
config.send_test_mail=Lähetä testi sähköposti
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Järjestelmän ilmoitukset on poistettu onnistuneesti.
|
||||
|
||||
[action]
|
||||
create_repo=luotu repo <a href="%s">%s</a>
|
||||
fork_repo=forkattu repo kohteeseen <a href="%s"> %s</a>
|
||||
rename_repo=uudelleennimetty repo <code>%[1]s</code> nimelle <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=pushattu kohteeseen <a href="%[1]s/src/%[2]s">%[3]s</a> paikassa <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Näytä vertailu näille %d commiteille
|
||||
@@ -1300,6 +1311,10 @@ create_branch=luotu uusi haara <a href="%[1]s/src/%[2]s">%[3]s</a> kohteeseen <a
|
||||
delete_branch=poistettu haara <code>%[2]s</code> kohteesta <a href="%[1]s">%[3]s</a>
|
||||
push_tag=pushattu tagi <a href="%s/src/%s">%[2]s</a> kohteeseen <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=poistettu tagi <code>%[2]s</code> kohteesta <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forkattu repo kohteeseen <a href="%s"> %s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=sitten
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Déjà enregistré ? Connectez-vous !
|
||||
social_register_hepler_msg=Déjà enregistré ? Associez-le !
|
||||
disable_register_prompt=Désolé, les enregistrements ont été désactivés. Veuillez contacter l'administrateur du site.
|
||||
disable_register_mail=Désolé, la confirmation par courriel des enregistrements a été désactivée.
|
||||
auth_source=Sources d'authentification
|
||||
local=Locale
|
||||
remember_me=Se souvenir de moi
|
||||
forgot_password=Mot de passe oublié
|
||||
forget_password=Mot de passe oublié ?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Nom d'organisation déjà pris.
|
||||
team_name_been_taken=Nom d'équipe déjà pris.
|
||||
email_been_used=Adresse e-mail déjà utilisée.
|
||||
username_password_incorrect=Nom d'utilisateur ou mot de passe incorrect.
|
||||
auth_source_mismatch=La source d’authentification sélectionnée n’est pas associée à l’utilisateur.
|
||||
enterred_invalid_repo_name=Veuillez vérifier que le nom saisi du dépôt soit correct.
|
||||
enterred_invalid_owner_name=Veuillez vérifier que le nom du propriétaire saisi soit correct.
|
||||
enterred_invalid_password=Veuillez vérifier que le mot de passe saisi soit correct.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Ou entrez la phrase secrète :
|
||||
two_factor_then_enter_passcode=Puis entrez le mot de passe :
|
||||
two_factor_verify=Vérifier
|
||||
two_factor_invalid_passcode=Le mot de passe que vous avez entré n'est pas valide, veuillez réessayer.
|
||||
two_factor_reused_passcode=Le mot de passe que vous avez entré a déjà été utilisé, veuillez en essayez un autre !
|
||||
two_factor_enable_error=L'activation de l'authentification en deux étapes a échoué : %v
|
||||
two_factor_enable_success=L'authentification en deux étapes a été bien été activée pour votre compte.
|
||||
two_factor_recovery_codes_title=Codes de secours pour l'authentification en deux étapes
|
||||
@@ -393,7 +397,7 @@ repo_name_helper=Idéalement, le nom d'un dépot devrait être court, mémorable
|
||||
visibility=Visibilité
|
||||
visiblity_helper=Ce dépôt est <span class="ui red text"> privé</span>
|
||||
visiblity_helper_forced=L'administrateur du site a forcé tous les nouveaux dépôts à être <span class="ui red text">privés</span>
|
||||
visiblity_fork_helper=(Les changement de cette valeur affecteront tous les forks)
|
||||
visiblity_fork_helper=(Les changements de cette valeur affecteront tous les forks)
|
||||
clone_helper=Besoin d'aide pour dupliquer ? Visitez <a target="_blank" href="%s">l'aide</a> !
|
||||
fork_repo=Créer un fork du dépôt
|
||||
fork_from=Fork de
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Dernière synchronisation
|
||||
watchers=Observateurs
|
||||
stargazers=Stargazers
|
||||
forks=Forks
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Le propriétaire a atteint le nombre maximal de %d dépôts créés.
|
||||
form.name_reserved=Le nom de dépôt '%s' est réservé.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Le contenu du fichier à changé depuis que vo
|
||||
editor.file_already_exists=La branche '%s' existe déjà dans ce dépôt.
|
||||
editor.no_changes_to_show=Il n’y a aucun changement à afficher.
|
||||
editor.fail_to_update_file=Échec lors de la mise à jour/création du fichier '%s' avec l'erreur : %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Ajouter un sous-répertoire...
|
||||
editor.unable_to_upload_files=Échec lors de l'envoie du fichier '%s' avec l'erreur : %v
|
||||
editor.upload_files_to_dir=Transférer les fichiers vers '%s'
|
||||
@@ -617,14 +624,14 @@ pulls.filter_branch=Filtre de branche
|
||||
pulls.no_results=Aucun résultat trouvé.
|
||||
pulls.nothing_to_compare=Il n'y a rien de comparable parce que les deux branches sont égales.
|
||||
pulls.nothing_merge_base=Il n'y a rien à comparer parce que les deux branches ont un historique complètement différent.
|
||||
pulls.has_pull_request=`Il y a déjà une demande de tirer entre ces deux cibles : <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Creer une Pull Request
|
||||
pulls.has_pull_request=`Il y a déjà une pull request entre ces deux cibles : <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Créer une Pull Request
|
||||
pulls.title_desc=veut fusionner %[1]d commits à partir de <code>%[2]s</code> vers <code>%[3]s</code>
|
||||
pulls.merged_title_desc=à fusionné %[1]d commits à partir de <code>%[2]s</code> vers <code>%[3]s</code> %[4]s
|
||||
pulls.merged_title_desc=a fusionné %[1]d commits à partir de <code>%[2]s</code> vers <code>%[3]s</code> %[4]s
|
||||
pulls.tab_conversation=Conversation
|
||||
pulls.tab_commits=Commits
|
||||
pulls.tab_files=Fichiers modifiés
|
||||
pulls.reopen_to_merge=Veuillez rouvrir cette demande de Pull Request pour effectuer l'opération de fusion.
|
||||
pulls.reopen_to_merge=Veuillez rouvrir cette Pull Request pour effectuer l'opération de fusion.
|
||||
pulls.merged=Fusionné
|
||||
pulls.has_merged=Cette Pull Request a été fusionnée avec succès !
|
||||
pulls.data_broken=Les données de cette pull request ont été compromises en raison de la suppression d'informations sur le fork.
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=La recherche de conflits est toujours en cours, veuillez rafra
|
||||
pulls.can_auto_merge_desc=Cette pull request peut être fusionnée automatiquement.
|
||||
pulls.cannot_auto_merge_desc=Cette pull request ne peut être fusionnée automatiquement à cause de conflits.
|
||||
pulls.cannot_auto_merge_helper=Fusionner manuellement afin de résoudre les conflits.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=Créer un commit de fusion
|
||||
pulls.rebase_before_merging=Rebaser avant la fusion
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Fusionner la Pull Request
|
||||
pulls.open_unmerged_pull_exists=`Vous ne pouvez effectuer une réouverture car il y a déjà une pull-request ouverte (#%d) depuis le même dépôt avec les mêmes informations de fusion et est en attente de fusion.`
|
||||
pulls.delete_branch=Supprimer la branche
|
||||
@@ -702,7 +710,7 @@ settings.branch_protection=Protection de branche
|
||||
settings.branch_protection_desc=Sélectionnez les options de protection pour la branche <b>%s</b>.
|
||||
settings.protect_this_branch=Protéger cette branche
|
||||
settings.protect_this_branch_desc=Interdire les push forcés et empêcher la suppression.
|
||||
settings.protect_require_pull_request=Exiger une requête de fusion plutôt qu'un push immédiat
|
||||
settings.protect_require_pull_request=Exiger une pull request plutôt qu'un push immédiat
|
||||
settings.protect_require_pull_request_desc=Activez cette option pour empêcher la publication immédiate vers cette branche. Les commits devront être publiés vers une autre branche (non protégée) et fusionnée dans cette branche avec une requête de fusion.
|
||||
settings.protect_whitelist_committers=Liste blanche de personnes pouvant publier sur cette branche
|
||||
settings.protect_whitelist_committers_desc=Ajouter des personnes ou des équipes à la liste blanche des fusions directes de cette branche. Les utilisateurs dans cette liste blanche passeront outre la nécessité de valider leurs requêtes de fusion.
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=Style de nommage des bugs du tracker externe :
|
||||
settings.tracker_issue_style.numeric=Numérique
|
||||
settings.tracker_issue_style.alphanumeric=Alphanumérique
|
||||
settings.tracker_url_format_desc=Vous pouvez utiliser l'espace réservé <code>{user} {repo} {index}</code> pour le nom d'utilisateur, le nom du dépôt et le numéro de bug.
|
||||
settings.pulls_desc=Activer les pull requests pour accepter les contributions publiques
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignorer les changements quand ce sont des espaces
|
||||
settings.pulls.allow_rebase_merge=Autoriser l'utilisation de rebase pour fusionner les validations
|
||||
settings.danger_zone=Zone de danger
|
||||
settings.cannot_fork_to_same_owner=Vous ne pouvez par créer un fork d'un dépot à son propriétaire actuel.
|
||||
settings.new_owner_has_same_repo=Le nouveau propriétaire a déjà un dépôt nommé ainsi.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push vers un dépôt
|
||||
settings.event_issues=Tickets
|
||||
settings.event_issues_desc=Ticket ouvert, fermé, réouvert, modifié, assigné, non-assigné, étiquette mise à jour, étiquette nettoyée, jalonnée, ou déjalonnée.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull requests ouverte, fermée, réouverte, modifiée, assignée, non-assignée, étiquette mise à jour, étiquette nettoyée, jalonnée, déjalonnée, ou synchronisée.
|
||||
settings.event_issue_comment=Commentaire du ticket
|
||||
settings.event_issue_comment_desc=Commentaire du ticket créé, modifié, ou supprimé.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Requête de fusion ouverte, fermée, réouverte, modifiée, assignée, non-assignée, étiquette mise à jour, étiquette nettoyée, jalonnée, déjalonnée, ou synchronisée.
|
||||
settings.event_release=Version publiée
|
||||
settings.event_release_desc=Version publiée dans un dépôt.
|
||||
settings.active=Actif
|
||||
@@ -835,7 +843,7 @@ settings.recent_deliveries=Livraisons récentes
|
||||
settings.hook_type=Type de Hook
|
||||
settings.add_slack_hook_desc=Intégrer <a href="%s"> Slack</a> à votre dépôt.
|
||||
settings.add_discord_hook_desc=Ajouter l'intégration de <a href="%s">Discord</a> à votre dépôt.
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=Ajouter l'intégration de <a href="%s">Dingtalk</a> à votre dépôt.
|
||||
settings.slack_token=Jeton
|
||||
settings.slack_domain=Domaine
|
||||
settings.slack_channel=Canal
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=La nouvelle clé de déploiement '%s' a été ajoutée
|
||||
settings.deploy_key_deletion=Supprimer la Clé de Déploiement
|
||||
settings.deploy_key_deletion_desc=Supprimer cette clé de déploiement effacera tous les accès relatifs pour ce référentiel. Voulez-vous continuer ?
|
||||
settings.deploy_key_deletion_success=La clé de déploiement a été supprimée avec succès !
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Parcourir la source
|
||||
diff.parent=Parent
|
||||
@@ -935,7 +945,7 @@ settings.delete_prompt=Cela supprimera cette organisation définitivement. Cette
|
||||
settings.confirm_delete_account=Confirmez la suppression
|
||||
settings.delete_org_title=Suppression d'organisation
|
||||
settings.delete_org_desc=Cette organisation sera définitivement supprimée. Continuer ?
|
||||
settings.hooks_desc=Ajoute des vebhooks qui seront activés pour <strong>tous les dépôts</strong> de cette organisation.
|
||||
settings.hooks_desc=Ajoute des webhooks qui seront activés pour <strong>tous les dépôts</strong> de cette organisation.
|
||||
|
||||
members.membership_visibility=Visibilité des membres:
|
||||
members.public=Public
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Votes
|
||||
repos.issues=Tickets
|
||||
repos.size=Taille
|
||||
|
||||
auths.auth_manage_panel=Panel d'administration des authentifications
|
||||
auths.auth_sources=Sources d'authentification
|
||||
auths.new=Ajouter une nouvelle source d'authentification
|
||||
auths.name=Nom
|
||||
auths.type=Type
|
||||
auths.enabled=Activé
|
||||
auths.default=Default
|
||||
auths.updated=Mis à jour
|
||||
auths.auth_type=Type d'authentification
|
||||
auths.auth_name=Nom de l'authentification
|
||||
@@ -1100,21 +1111,21 @@ auths.domain=Domaine
|
||||
auths.host=Hôte
|
||||
auths.port=Port
|
||||
auths.bind_dn=Bind DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=Vous pouvez utiliser « %s » qui sera remplacé par le nom d'utilisateur, par exemple « DOM\%s »
|
||||
auths.bind_password=Bind mot de passe
|
||||
auths.bind_password_helper=Avertissement : Ce mot de passe est stocké en clair. N'utilisez pas le mot de passe d'un compte doté de privilèges élevés.
|
||||
auths.user_base=Utilisateur Search Base
|
||||
auths.user_dn=Utilisateur DN
|
||||
auths.attribute_username=Attribut nom d'utilisateur
|
||||
auths.attribute_username_placeholder=Laisser vide pour utiliser la valeur du formulaire d'authentification comme nom d'utilisateur.
|
||||
auths.attribute_name=First Name Attribute
|
||||
auths.attribute_name=Attribut du prénom
|
||||
auths.attribute_surname=Attribut du nom de famille
|
||||
auths.attribute_mail=Attribut de l'e-mail
|
||||
auths.verify_group_membership=Vérifier l'appartenance à un groupe
|
||||
auths.group_search_base_dn=Group Search Base DN
|
||||
auths.group_search_base_dn=Recherche de groupe basée sur le nom de domaine
|
||||
auths.group_filter=Filtre par groupe
|
||||
auths.group_attribute_contain_user_list=Attribut de groupe contenant la liste des utilisateurs
|
||||
auths.user_attribute_listed_in_group=User Attribute Listed in Group
|
||||
auths.user_attribute_listed_in_group=Attribut de l'utilisateur listé dans le groupe
|
||||
auths.attributes_in_bind=Aller chercher les attributs dans le contexte de liaison DN
|
||||
auths.filter=Filtre utilisateur
|
||||
auths.admin_filter=Filtre administrateur
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Activer le Chiffrement TLS
|
||||
auths.skip_tls_verify=Ne pas vérifier TLS
|
||||
auths.pam_service_name=Nom du Service PAM
|
||||
auths.enable_auto_register=Connexion Automatique
|
||||
auths.tips=Conseils
|
||||
auths.edit=Modifier les paramètres d'authentification
|
||||
auths.activated=Authentification activée
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Nouvelle authentification «%s » a été ajoutée avec succès.
|
||||
auths.update_success=Les paramètre d'authentification a été mis à jour avec succès.
|
||||
auths.update=Mettre à jour les paramètres d'authentifications
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=Cette authentification est encore utilisée par d'autres uti
|
||||
auths.deletion_success=L'authentification a été supprimée avec succès !
|
||||
auths.login_source_exist=La source de connexion « %s » existe déjà.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(non défini)
|
||||
config.server_config=Configuration du Serveur
|
||||
config.app_name=Nom de l'application
|
||||
config.app_ver=Version de l'application
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Domaine
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Port d'écoute
|
||||
config.ssh_root_path=Emplacement racine
|
||||
config.ssh_rewrite_authorized_keys_at_start=Réécrire authorized_keys au démarrage
|
||||
config.ssh_key_test_path=Chemin de test des clés
|
||||
config.ssh_keygen_path=Chemin vers le générateur de clefs ("ssh-keygen")
|
||||
config.ssh_minimum_key_size_check=Vérification de la longueur de clé minimale
|
||||
@@ -1178,8 +1190,8 @@ config.disable_http_git=Désactiver Git HTTP
|
||||
config.enable_local_path_migration=Activer la migration de chemin locale
|
||||
config.commits_fetch_concurrency=Concurrence des récupérations de commits
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
config.http_config=Configuration HTTP
|
||||
config.http_access_control_allow_origin=Autoriser le partage d’accès avec l’origine
|
||||
|
||||
config.db_config=Configuration de la Base de Données
|
||||
config.db_type=Type
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Ne pas vérifier TLS
|
||||
config.mailer_config=Configuration du service de mail
|
||||
config.mailer_enabled=Activé
|
||||
config.mailer_disable_helo=Désactiver HELO
|
||||
config.mailer_name=Nom
|
||||
config.mailer_subject_prefix=Préfixe du sujet
|
||||
config.mailer_host=Hôte
|
||||
config.mailer_user=Utilisateur
|
||||
config.send_test_mail=Envoyer courriel de Test
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Notifications système supprimées avec succès.
|
||||
|
||||
[action]
|
||||
create_repo=a créé le dépôt <a href="%s">%s</a>
|
||||
fork_repo=a créé sa branche du dépôt vers <a href="%s">%s</a>
|
||||
rename_repo=a rebaptisé le dépôt de <code>%[1]s</code> vers <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=a commité dans <a href="%[1]s/src/%[2]s">%[3]s</a> sur <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Comparer ces %d commits
|
||||
@@ -1293,13 +1304,17 @@ close_issue=`tickets clos <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
reopen_issue=`tickets ré-ouverts <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
comment_issue=`a commenté le problème <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
create_pull_request=`pull request créée le <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
close_pull_request=`pull request fermé <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
close_pull_request=`pull request fermée <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
reopen_pull_request=`pull request ré-ouverte <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`pull request fusionné le <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=nouvelle branche créée <a href="%[1]s/src/%[2]s">%[3]s</a> sur <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=branche supprimée <code>%[2]s</code> sur <a href="%[1]s">%[3]s</a>
|
||||
push_tag=a soumis le tag <a href="%s/src/%s">%[2]s</a> sur <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=étiquette supprimée <code>%[2]s</code> sur <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=a créé sa branche du dépôt vers <a href="%s">%s</a>
|
||||
mirror_sync_push=a commité dans <a href="%[1]s/src/%[2]s">%[3]s</a> sur <a href="%[1]s">%[4]s</a>
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=Référence synchronisés et supprimé <code>%[2]s</code> sur <a href="%[1]s">%[3]s</a>
|
||||
|
||||
[tool]
|
||||
ago=il y a
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Xa tes unha conta? Inicia sesión!
|
||||
social_register_hepler_msg=Xa tes unha conta? Enlázaa!
|
||||
disable_register_prompt=Sentímolo, o rexistro está deshabilitado. Por favor, contacta co administrador do sitio.
|
||||
disable_register_mail=Sentímolo. Os correos de confirmación de rexistro están deshabilitados.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Recórdame
|
||||
forgot_password=Esquecín o meu contrasinal
|
||||
forget_password=Esqueciches o teu contrasinal?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Xa existe unha organización con este nome.
|
||||
team_name_been_taken=Xa existe un equipo con este nome.
|
||||
email_been_used=Este enderezo de correo electrónico xa está en uso.
|
||||
username_password_incorrect=Nome de usuario ou contrasinal incorrectos.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Por favor, asegúrate de que introduciches correctamente o nome do repositorio.
|
||||
enterred_invalid_owner_name=Por favor, asegúrate de que introduciches correctamente o nome do propietario.
|
||||
enterred_invalid_password=Por favor, asegúrate de que introduciches correctamente o teu contrasinal.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=Then enter passcode:
|
||||
two_factor_verify=Verify
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Sincronizado por última vez
|
||||
watchers=Seguidores
|
||||
stargazers=Fans
|
||||
forks=Forks
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=El propietario ha alcanzado el límite máximo de %d repositorios creados.=O propietario acadou o límite máximo de %d repositorios creados.
|
||||
form.name_reserved=El nombre del repositorio '%s' está reservado.=O nome do repositorio '%s' está reservado.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=O contido do arquivo cambiou desde que comezac
|
||||
editor.file_already_exists=Un arquivo co nome '%s' xa existe no repositorio.
|
||||
editor.no_changes_to_show=Non hai cambios que mostrar.
|
||||
editor.fail_to_update_file=Fallou o actualizar/crear o arquivo '%s' co erro: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Engadir subdirectorio...
|
||||
editor.unable_to_upload_files=Fallou ao subir arquivos a '%s' co erro: %v
|
||||
editor.upload_files_to_dir=Subir arquivos a '%s'
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc=Este Pull Request non pode ser fusionado automatica
|
||||
pulls.cannot_auto_merge_helper=Por favor, fusiona manualmente para resolver os conflitos.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Fusionar Pull Request
|
||||
pulls.open_unmerged_pull_exists=`Vostede non pode realizar a operación de reapertura porque nestes momentos existe unha solicitude de pull request (#%d) para o mesmo repositorio coa mesma información que se encontra á espera de aprobación`
|
||||
pulls.delete_branch=Eliminar branch
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style=Estilo de etiquetaxe do tracker externo de incidenc
|
||||
settings.tracker_issue_style.numeric=Numérico
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumérico
|
||||
settings.tracker_url_format_desc=Podes usar os modelos <code>{user} {repo} {index}</code> para o nome de usuario, nome do repositorio e índice da incidencia.
|
||||
settings.pulls_desc=Habilitar Pull Requests para aceptar contribucións públicas
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Zona de perigo
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Os datos da wiki do repositorio foron borrados co
|
||||
settings.delete=Eliminar este repositorio
|
||||
settings.delete_desc=Unha vez que eliminaches un repositorio, non hai volta atrás. Por favor, asegúrate de que é o que queres.
|
||||
settings.delete_notices_1=- Esta operación <strong>NON SE PODE</strong> reverter.
|
||||
settings.delete_notices_2=- Esta operación eliminará de maneira permanente todo o contido deste repositorio, incluíndo os datos de git, as incidencias, os comentarios e os permisos de acceso dos colaboradores.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- Todos os forks converteranse en independentes tras o borrado.
|
||||
settings.deletion_success=O repositorio foi eliminado satisfactoriamente!
|
||||
settings.update_settings_success=As opcións do repositorio actualizáronse correctamente.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push a un repositorio
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Activo
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=A nova clave de despregamento '%s' foi creada con éxit
|
||||
settings.deploy_key_deletion=Eliminar clave de despregamento
|
||||
settings.deploy_key_deletion_desc=Ao eliminar esta clave de despregamento perderase o permiso de acceso a este repositorio coa dita clave. Desexas continuar?
|
||||
settings.deploy_key_deletion_success=Clave de despregamento eliminada con éxito!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Explorar o código
|
||||
diff.parent=pai
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Estrelas
|
||||
repos.issues=Incidencias
|
||||
repos.size=Size
|
||||
|
||||
auths.auth_manage_panel=Panel de administración de autenticación
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Engadir nova orixe
|
||||
auths.name=Nome
|
||||
auths.type=Tipo
|
||||
auths.enabled=Activo
|
||||
auths.default=Default
|
||||
auths.updated=Actualizado
|
||||
auths.auth_type=Tipo de autenticación
|
||||
auths.auth_name=Nome de autenticación
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Habilitar cifrado TLS
|
||||
auths.skip_tls_verify=Omitir a verificación TLS
|
||||
auths.pam_service_name=Nome do servizo PAM
|
||||
auths.enable_auto_register=Habilitar auto-rexistro
|
||||
auths.tips=Consellos
|
||||
auths.edit=Editar a configuración de autenticación
|
||||
auths.activated=Esta autenticación foi activada
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=A autenticación '%s' foi engadida con éxito!
|
||||
auths.update_success=A configuración de autenticación foi actualizada con éxito.
|
||||
auths.update=Actualizar a configuración de autenticación
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Dominio
|
||||
config.ssh_port=Porto
|
||||
config.ssh_listen_port=Porto de escoita
|
||||
config.ssh_root_path=Ruta raíz
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Ruta da clave de proba
|
||||
config.ssh_keygen_path=Ruta do xerador de claves ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Tamaño mínimo da clave de verificación
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Omitir a verificación TLS
|
||||
config.mailer_config=Configuración do servidor de correo
|
||||
config.mailer_enabled=Activado
|
||||
config.mailer_disable_helo=Desactivar HELO
|
||||
config.mailer_name=Nome
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Usuario
|
||||
config.send_test_mail=Enviar correo electrónico de proba
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=As notificacións do sistema foron eliminadas satisfactor
|
||||
|
||||
[action]
|
||||
create_repo=creou o repositorio <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=repositorio renomeado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=fixo push a <a href="%[1]s/src/%[2]s">%[3]s</a> en <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Ver comparación destas %d achegas
|
||||
@@ -1300,6 +1311,10 @@ create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href=
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=fixo push do tag <a href="%s/src/%s">%[2]s</a> a <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=hai
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Van már felhasználói fiókja? Jelentkezz be!
|
||||
social_register_hepler_msg=Van már fiókod? Csatold most!
|
||||
disable_register_prompt=Elnézést, a regisztrációt kikapcsolták. Kérlek szólj az oldal adminisztrátorának.
|
||||
disable_register_mail=Elnézést, az email regisztráció megerősítését kikapcsolták.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Emlékezz rám
|
||||
forgot_password=Elfelejtett jelszó
|
||||
forget_password=Elfelejtette a jelszavát?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=A szervezet neve már foglalt.
|
||||
team_name_been_taken=Az a csapatnév már foglalt.
|
||||
email_been_used=Ezt az email címet már felhasználták.
|
||||
username_password_incorrect=Felhasználó név vagy jelszó hibás.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Kérjük, ellenőrizze, hogy a tároló neve helyes.
|
||||
enterred_invalid_owner_name=Kérjük, ellenőrizze, hogy a tulajdonos neve helyes.
|
||||
enterred_invalid_password=Kérlek ellenőrizd, hogy a beírt jelszó helyes.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Vagy adja meg a titkos kódot:
|
||||
two_factor_then_enter_passcode=Ezután írja be ezt a jelkódot:
|
||||
two_factor_verify=Ellenőrzés
|
||||
two_factor_invalid_passcode=Érvénytelen a megadott jelkód, próbálja meg újra!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Kétlépcsős hitelesítés engedélyezése sikertelen: %v
|
||||
two_factor_enable_success=Kétlépcsős hitelesítés sikeresen engedélyezve a fiókjához!
|
||||
two_factor_recovery_codes_title=Kettőlépcsős hitelesítés helyreállítási kódok
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Utoljára szinkr.
|
||||
watchers=Figyelők
|
||||
stargazers=Csillagvizsgálók
|
||||
forks=Másolások
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=A tulajdonos túllépte a maximum létrehozható tárolók számát (%d).
|
||||
form.name_reserved=Ez a tároló név ('%s') le van foglalva.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=A fájl tartalma megváltozott mióta elkezdte
|
||||
editor.file_already_exists=A(z) '%s' nevű fájl már létezik a tárolóban.
|
||||
editor.no_changes_to_show=Nincsen megjeleníthető változás.
|
||||
editor.fail_to_update_file=Nem sikerült frissíteni/létrehozni a következő fájlt: '%s' A hiba oka: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Alkönyvtár hozzáadása...
|
||||
editor.unable_to_upload_files=Nem sikerült feltölteni a fájlokat a "%s" hiba: %v
|
||||
editor.upload_files_to_dir=Fájlok feltöltése '%s'
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=Az ütközés ellenőrzés még folyamatban van, frissítsd az
|
||||
pulls.can_auto_merge_desc=Ez a beolvasztási kérés automatikusán egyesíthető.
|
||||
pulls.cannot_auto_merge_desc=Ez a beolvasztási kérés ütközések miatt nem egyesíthető automatikusan.
|
||||
pulls.cannot_auto_merge_helper=Kérlek, egyesítsd kézileg a konfliktusok megoldásához.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=Eggyesítő commit létrehozása
|
||||
pulls.rebase_before_merging=Rebase eggyesítés előtt
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Beolvasztási kérés egyesítése
|
||||
pulls.open_unmerged_pull_exists=`Nem tudja újranyitni, mert már van egy nyitott egyesítési kérés (#%d) ugyanebben a tárolóban, ugyanezekket az egyesítési információkkal, és végrehajtásra vár.`
|
||||
pulls.delete_branch=Ág törlése
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=Külső hibajegykezelő elnevezési stílus:
|
||||
settings.tracker_issue_style.numeric=Numerikus
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumerikus
|
||||
settings.tracker_url_format_desc=Az alábbiak helyettesítik a felhasználónevet, repository nevet és hibajegy számot: <code>{user} {repo} {index}</code>.
|
||||
settings.pulls_desc=Beolvasztási kérések engedélyezése a nyilvános hozzájárulások végett
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Whitespacek figyelmen kívül hagyása
|
||||
settings.pulls.allow_rebase_merge=Rebase engedélyezése eggyesítő commitokhoz
|
||||
settings.danger_zone=Veszélyes terület
|
||||
settings.cannot_fork_to_same_owner=Nem másolható a tároló az eredeti tulajdonosához.
|
||||
settings.new_owner_has_same_repo=Az új tulaj már rendelkezik ilyen nevű repository-val. Kérlek, válassz másik nevet.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Push-olás egy repository-ba
|
||||
settings.event_issues=Problémák
|
||||
settings.event_issues_desc=A probléma meg left nyitva, le left zárva, újranyitva, szerkesztve, hozzárendelve, visszarendelve, cimkézve, cimketelenítve, mérföldkövezve, vagy mérföldkőtelenítve.
|
||||
settings.event_issue_comment=Probléma hozzászólás
|
||||
settings.event_issue_comment_desc=Probléma megjegyzés létrehozva, szerkesztve vagy törölve.
|
||||
settings.event_pull_request=Beolvasztási kérés
|
||||
settings.event_pull_request_desc=Beolvasztási kérés megnyitva, lezárva, újranyitva, hozzárendelve, visszarendelve, címkézve, címke eltávolítva, mérföldkövezve, mérföldkő eltávolítva vagy szinkronizálva.
|
||||
settings.event_issue_comment=Probléma hozzászólás
|
||||
settings.event_issue_comment_desc=Probléma megjegyzés létrehozva, szerkesztve vagy törölve.
|
||||
settings.event_release=Kiadás
|
||||
settings.event_release_desc=Kiadás publikálva a tárolóban.
|
||||
settings.active=Aktív
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Az új deploy kulcsot ('%s') sikeresen hozzáadtuk!
|
||||
settings.deploy_key_deletion=Deploy Kulcs Törlése
|
||||
settings.deploy_key_deletion_desc=A deploy kulcs törlése minden kapcsolódó hozzáférést töröl a repository-ból. Biztosan folytatod?
|
||||
settings.deploy_key_deletion_success=A deploy kulcs sikeresen törölve!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Forráskód Böngészése
|
||||
diff.parent=szülő
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Csillagok
|
||||
repos.issues=Problémák
|
||||
repos.size=Méret
|
||||
|
||||
auths.auth_manage_panel=Hitelesítés kezelő Panel
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Új forrás hozzáadása
|
||||
auths.name=Név
|
||||
auths.type=Típus
|
||||
auths.enabled=Engedélyezett
|
||||
auths.default=Default
|
||||
auths.updated=Frissítve
|
||||
auths.auth_type=Hitelesítés típusa
|
||||
auths.auth_name=Hitelesítési név
|
||||
@@ -1100,7 +1111,7 @@ auths.domain=Tartomány
|
||||
auths.host=Állomás
|
||||
auths.port=Port
|
||||
auths.bind_dn=Bind DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=Használhatja a '%s'-t felhasználónév helyett, pl.: DOM\%s
|
||||
auths.bind_password=Bind jelszó
|
||||
auths.bind_password_helper=Figyelmeztetés: Ez a jelszó egyszerű szöveges formátumban kerül metésre. Ne használjon egy magas szintű jogosultsággal rendelkező fiókot.
|
||||
auths.user_base=Felhasználókeresés alapja
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=TLS titkosítás engedélyezése
|
||||
auths.skip_tls_verify=TLS ellenőrzése mellőzése
|
||||
auths.pam_service_name=PAM szolgáltatás neve
|
||||
auths.enable_auto_register=Automatikus regisztráció engedélyezése
|
||||
auths.tips=Tippek
|
||||
auths.edit=Hitelesítési beállítások szerkesztése
|
||||
auths.activated=Ez a hitelesítés mód aktiválva van
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Az új hitelesítési mód '%s' sikeresen hozzáadva.
|
||||
auths.update_success=A hitelesítési beállítások sikeresen firssítve lettek.
|
||||
auths.update=Hitelesítési forrás frissítése
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=A hitelesítési mód még használatban van, mielőtt tör
|
||||
auths.deletion_success=Hitelesítési forrás sikeresen törölve!
|
||||
auths.login_source_exist=Bejelentkezési forrás "%s" már létezik.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(nincs beállítva)
|
||||
config.server_config=Kiszolgáló konfiguráció
|
||||
config.app_name=Alkalmazás neve
|
||||
config.app_ver=Alkalmazás verziója
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Tartomány
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Figyelő port
|
||||
config.ssh_root_path=Gyökér elérési útvonal
|
||||
config.ssh_rewrite_authorized_keys_at_start=SSH authorized_keys fájl újraírása indításnál
|
||||
config.ssh_key_test_path=Kulcs ellenőrzés útvonala
|
||||
config.ssh_keygen_path=Kulcsgeneráló ('ssh-keygen') elérési útja
|
||||
config.ssh_minimum_key_size_check=Minimális kulcsméret ellenőrzés
|
||||
@@ -1178,8 +1190,8 @@ config.disable_http_git=A HTTP protokoll letiltása GIT-hez
|
||||
config.enable_local_path_migration=Engedélyezi a migrációt helyi elérési út alapján
|
||||
config.commits_fetch_concurrency=Konkurens lekérés
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
config.http_config=HTTP beállítások
|
||||
config.http_access_control_allow_origin=Hozzáférés vezérlés forrás szerint
|
||||
|
||||
config.db_config=Adatbázis konfiguráció
|
||||
config.db_type=Típus
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=TLS ellenőrzése mellőzése
|
||||
config.mailer_config=Levelező beállítások
|
||||
config.mailer_enabled=Engedélyezett
|
||||
config.mailer_disable_helo=HELO letiltása
|
||||
config.mailer_name=Név
|
||||
config.mailer_subject_prefix=Tárgy előtag
|
||||
config.mailer_host=Állomás
|
||||
config.mailer_user=Felhasználó
|
||||
config.send_test_mail=Teszt E-mail küldése
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=A rendszer értesítések sikeresen törölve.
|
||||
|
||||
[action]
|
||||
create_repo=létrehozott tárolót: <a href="%s"> %s</a>
|
||||
fork_repo=lemásolta a(z) <a href="%s">%s</a> tárolót
|
||||
rename_repo=átnevezte a <code>%[1]s</code> tárolót <a href="%[2]s">%[3]s</a>-ra
|
||||
commit_repo=feltöltött a <a href="%[1]s/src/%[2]s">%[3]s</a> ágba ide: <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=%d commit összehasonlítása
|
||||
@@ -1300,6 +1311,10 @@ create_branch=létrehozott egy új <a href="%[1]s/src/%[2]s">%[3]s</a> ágat ebb
|
||||
delete_branch=törölt egy ágat <code>%[2]s</code> ekkor: <a href="%[1]s">%[3]s</a>
|
||||
push_tag=feltöltött egy cimkét: <a href="%s/src/%s">%[2]s</a> ide: <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=törölt egy cimkét <code>%[2]s</code> ekkor: <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=lemásolta a(z) <a href="%s">%s</a> tárolót
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=
|
||||
@@ -1307,14 +1322,14 @@ from_now=mostantól
|
||||
now=most
|
||||
1s=1 másodperce %s
|
||||
1m=1 perce %s
|
||||
1h=1 órája
|
||||
1h=1 órája %s
|
||||
1d=1 napja %s
|
||||
1w=1 hete %s
|
||||
1mon=1 hónapja %s
|
||||
1y=1 éve %s
|
||||
seconds=%d másodperce %s
|
||||
minutes=%d perce %s
|
||||
hours=%d órája
|
||||
hours=%d órája %s
|
||||
days=%d napja %s
|
||||
weeks=%d hete %s
|
||||
months=%d hónapja %s
|
||||
|
||||
1345
conf/locale/locale_id-ID.ini
Normal file
1345
conf/locale/locale_id-ID.ini
Normal file
File diff suppressed because it is too large
Load Diff
@@ -151,6 +151,8 @@ register_hepler_msg=Hai già un account? Accedi ora!
|
||||
social_register_hepler_msg=Hai già un account? Associalo ora!
|
||||
disable_register_prompt=Siamo spiacenti, registrazione è stata disabilitata. Si prega di contattare l'amministratore del sito.
|
||||
disable_register_mail=Siamo spiacenti, la conferma di registrazione via Mail è stata disattivata.
|
||||
auth_source=Fonte di autenticazione
|
||||
local=Local
|
||||
remember_me=Ricordami
|
||||
forgot_password=Password dimenticata
|
||||
forget_password=Password dimenticata?
|
||||
@@ -170,7 +172,7 @@ password_too_short=La lunghezza della password non può essere meno 6 caratteri.
|
||||
non_local_account=Gli account non locali non possono modificare le password tramite Gogs.
|
||||
|
||||
login_two_factor=Autenticazione in Due Passaggi
|
||||
login_two_factor_passcode=Authentication Passcode
|
||||
login_two_factor_passcode=Codice di autenticazione
|
||||
login_two_factor_enter_recovery_code=Inserisci il codice di recupero dell'Autenticazione a due Fattori
|
||||
login_two_factor_recovery=Two-factor Recovery
|
||||
login_two_factor_recovery_code=Recupera il codice
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Il nome dell'Organizzazione è già utlizzato.
|
||||
team_name_been_taken=Il nome del Team è già utilizzato.
|
||||
email_been_used=L'indirizzo E-mail è già utilizzato.
|
||||
username_password_incorrect=Nome utente o password incorretti.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Si prega di assicurarsi che il nome del repository inserito sia corretto.
|
||||
enterred_invalid_owner_name=Si prega di assicurarsi che il nome del proprietario inserito sia corretto.
|
||||
enterred_invalid_password=Verificare che la password inserita sia corretta.
|
||||
@@ -264,7 +267,7 @@ profile=Profilo
|
||||
password=Password
|
||||
avatar=Avatar
|
||||
ssh_keys=Chiavi SSH
|
||||
security=Security
|
||||
security=Sicurezza
|
||||
repos=Repository
|
||||
orgs=Organizzazioni
|
||||
applications=Applicazioni
|
||||
@@ -335,29 +338,30 @@ key_state_desc=Hai utilizzato questa chiave negli ultimi 7 giorni
|
||||
token_state_desc=Questo token e' satato utilizzato negli ultimi 7 giorni
|
||||
|
||||
two_factor=Autenticazione in Due Passaggi
|
||||
two_factor_status=Status:
|
||||
two_factor_status=Stato:
|
||||
two_factor_on=Attiva
|
||||
two_factor_off=Off
|
||||
two_factor_enable=Enable
|
||||
two_factor_off=Non attivo
|
||||
two_factor_enable=Abilita
|
||||
two_factor_disable=Disattivata
|
||||
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
|
||||
two_factor_view_recovery_codes=Visualizza e memorizza i tuoi <a href="%s%s">codici di recupero</a> in un posto sicuro. Puoi utilizzarli come codice di sicurezza se perdi gli accessi all'applicazione di autenticazione.
|
||||
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
|
||||
two_factor_enable_title=Abilita l'autenticazione in due passaggi
|
||||
two_factor_scan_qr=Please use your authentication application to scan the image:
|
||||
two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=Then enter passcode:
|
||||
two_factor_scan_qr=Per favore, utilizza la tua applicazione di autenticazione per scansionare l'immagine:
|
||||
two_factor_or_enter_secret=O inserisci la chiave segreta:
|
||||
two_factor_then_enter_passcode=Poi inserisci la chiave di sicurezza:
|
||||
two_factor_verify=Verifica
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_invalid_passcode=La chiave di sicurezza che hai inserito non è valida, riprova!
|
||||
two_factor_reused_passcode=La chiave di sicurezza che hai inserito è già stata utilizzata, provane un'altra!
|
||||
two_factor_enable_error=Impossibile abilitare l'autenticazione a due fattori: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
two_factor_recovery_codes_desc=Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
|
||||
two_factor_regenerate_recovery_codes=Regenerate Recovery Codes
|
||||
two_factor_regenerate_recovery_codes_error=Regenerate recovery codes failed: %v
|
||||
two_factor_regenerate_recovery_codes_success=New recovery codes has been generated successfully!
|
||||
two_factor_disable_title=Disable Two-factor Authentication
|
||||
two_factor_disable_desc=Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
|
||||
two_factor_disable_success=Two-factor authentication has disabled successfully!
|
||||
two_factor_regenerate_recovery_codes=Rigenera codici di recupero
|
||||
two_factor_regenerate_recovery_codes_error=Impossibile rigenerare codici di recupero: %v
|
||||
two_factor_regenerate_recovery_codes_success=I nuovi codici di recupero sono stati generati correttamente!
|
||||
two_factor_disable_title=Disabilita autenticazione a due fattori
|
||||
two_factor_disable_desc=Il livello di sicurezza del tuo account diminuirà disabilitando l'autenticazione a due fattori. Vuoi continuare?
|
||||
two_factor_disable_success=L'autenticazione a due fattori è stata disabilitata!
|
||||
|
||||
manage_access_token=Gestisci i Token di Accesso Personale
|
||||
generate_new_token=Genera Nuovo Token
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Ultimo aggiornamento
|
||||
watchers=Osservatori
|
||||
stargazers=Fan
|
||||
forks=Fork
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Il proprietario ha raggiunto il limite massimo di %d repository creati.
|
||||
form.name_reserved=Il nome repository %s è riservato.
|
||||
@@ -463,7 +469,7 @@ pulls=Pull Requests
|
||||
labels=Etichette
|
||||
milestones=Traguardi
|
||||
commits=Commit
|
||||
git_branches=Branches
|
||||
git_branches=Rami (Branch)
|
||||
releases=Rilasci
|
||||
file_raw=Originale
|
||||
file_history=Cronologia
|
||||
@@ -472,12 +478,12 @@ file_permalink=Permalink
|
||||
file_too_large=Questo file è troppo grande per essere mostrato
|
||||
video_not_supported_in_browser=Il tuo browser non supporta i tag "video" di HTML5.
|
||||
|
||||
branches.overview=Overview
|
||||
branches.active_branches=Active Branches
|
||||
branches.overview=Panoramica
|
||||
branches.active_branches=Rami (Branch) attivi
|
||||
branches.stale_branches=Stale Branches
|
||||
branches.all=All Branches
|
||||
branches.all=Tutti i rami (branch)
|
||||
branches.updated_by=Updated %[1]s by %[2]s
|
||||
branches.change_default_branch=Change Default Branch
|
||||
branches.change_default_branch=Cambia branch di default
|
||||
|
||||
editor.new_file=Nuovo file
|
||||
editor.upload_file=Carica File
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Il file è stato cambiato in un'altra posizion
|
||||
editor.file_already_exists=Un file di nome '%s' esiste già in questo repository.
|
||||
editor.no_changes_to_show=Nessuna modifica da mostrare.
|
||||
editor.fail_to_update_file=La creazione o la modifica del file '%s' è fallita: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Aggiungi sottocartella...
|
||||
editor.unable_to_upload_files=È fallito il caricamento dei file su '%s': %v
|
||||
editor.upload_files_to_dir=Carica file su '%s'
|
||||
@@ -576,8 +583,8 @@ issues.next=Pagina successiva
|
||||
issues.open_title=Aperto
|
||||
issues.closed_title=Chiuso
|
||||
issues.num_comments=%d commenti
|
||||
issues.commented_at=`commented <a href="#%s">%s</a>`
|
||||
issues.delete_comment_confirm=Are you sure you want to delete this comment?
|
||||
issues.commented_at=`ha commentato <a href="#%s">%s</a>`
|
||||
issues.delete_comment_confirm=Sei sicuro/a di voler eliminare questo commento?
|
||||
issues.no_content=Non ci sono ancora contenuti.
|
||||
issues.close_issue=Chiudi
|
||||
issues.close_comment_issue=Commenta e chiudi
|
||||
@@ -633,7 +640,8 @@ pulls.can_auto_merge_desc=La pull request può essere mergiata automaticamente.
|
||||
pulls.cannot_auto_merge_desc=Questa pull request non può essere mergiata automaticamente perchè ci sono dei conflitti.
|
||||
pulls.cannot_auto_merge_helper=Effettua il merge manualmente per risolvere i conflitti.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.rebase_before_merging=Effettua un Rebase prima del Merge
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Unisci Pull Request
|
||||
pulls.open_unmerged_pull_exists=`You can't perform reopen operation because there is already an open pull request (#%d) from same repository with same merge information and is waiting for merging.`
|
||||
pulls.delete_branch=Delete Branch
|
||||
@@ -714,32 +722,32 @@ settings.update_protect_branch_success=Protect options for this branch has been
|
||||
settings.hooks=Webhooks
|
||||
settings.githooks=Git Hooks
|
||||
settings.basic_settings=Impostazioni di Base
|
||||
settings.mirror_settings=Mirror Settings
|
||||
settings.sync_mirror=Sync Now
|
||||
settings.mirror_sync_in_progress=Mirror syncing is in progress, please refresh page in about a minute.
|
||||
settings.mirror_settings=Impostazioni mirror
|
||||
settings.sync_mirror=Sincronizza ora
|
||||
settings.mirror_sync_in_progress=Sincronizzazione del mirror in corso, aggiorna la pagina tra un minuto.
|
||||
settings.site=Sito Ufficiale
|
||||
settings.update_settings=Aggiorna Impostazioni
|
||||
settings.change_reponame_prompt=Questa modifica influirà i link al repository.
|
||||
settings.advanced_settings=Opzioni avanzate
|
||||
settings.wiki_desc=Enable wiki system
|
||||
settings.use_internal_wiki=Use builtin wiki
|
||||
settings.wiki_desc=Abilita wiki
|
||||
settings.use_internal_wiki=Usa wiki incorporato
|
||||
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
|
||||
settings.use_external_wiki=Usa Wiki esterno
|
||||
settings.external_wiki_url=URL Wiki esterno
|
||||
settings.external_wiki_url_desc=I visitatori verranno reindirizzati all'URL quando cliccano sulla scheda.
|
||||
settings.issues_desc=Enable issue tracker
|
||||
settings.use_internal_issue_tracker=Use builtin lightweight issue tracker
|
||||
settings.issues_desc=Abilita tracking problemi
|
||||
settings.use_internal_issue_tracker=Utilizza il segnalatore di problemi integrato (molto leggero)
|
||||
settings.allow_public_issues_desc=Allow public access to issues when repository is private
|
||||
settings.use_external_issue_tracker=Utilizza gestore di problemi esterno
|
||||
settings.external_tracker_url=External Issue Tracker URL
|
||||
settings.external_tracker_url_desc=Visitors will be redirected to URL when they click on the tab.
|
||||
settings.external_tracker_url=URL di un segnalatore di problemi esterno
|
||||
settings.external_tracker_url_desc=I visitatori verranno reindirizzati all'URL quando faranno click sulla scheda.
|
||||
settings.tracker_url_format=Formato URL Gestore Problemi Esterno
|
||||
settings.tracker_issue_style=External Issue Tracker Naming Style:
|
||||
settings.tracker_issue_style.numeric=Numeric
|
||||
settings.tracker_issue_style.alphanumeric=Alphanumeric
|
||||
settings.tracker_issue_style.numeric=Numerico
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumerico
|
||||
settings.tracker_url_format_desc=You can use placeholder <code>{user} {repo} {index}</code> for user name, repository name and issue index.
|
||||
settings.pulls_desc=Abilita le pull requests per accettare contributi pubblici
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignora cambiamenti di spazi bianchi
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Zona Pericolosa
|
||||
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=I dati della wiki del repository sono stati elimi
|
||||
settings.delete=Elimina questo repository
|
||||
settings.delete_desc=Una volta che hai cancellato il repository, non puoi tornare indietro. Si prega di fare attenzione.
|
||||
settings.delete_notices_1=-Questa operazione <strong>NON PUÒ</strong> essere annullata.
|
||||
settings.delete_notices_2=-Questa operazione eliminerà definitivamente il tutto il contenuto del repository, inclusi i dati di Git, incidenti, commenti e accessi dei collaboratori.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- All forks will become independent after deletion.
|
||||
settings.deletion_success=Il repository è stato eliminato con successo!
|
||||
settings.update_settings_success=Le opzioni repository sono state aggiornate con successo.
|
||||
@@ -811,19 +819,19 @@ settings.event_send_everything=Ho bisogno di <strong>tutto</strong>.
|
||||
settings.event_choose=Lasciami scegliere ciò di cui ho bisogno.
|
||||
settings.event_create=Crea
|
||||
settings.event_create_desc=Branch, o tag creato
|
||||
settings.event_delete=Delete
|
||||
settings.event_delete_desc=Branch or tag deleted
|
||||
settings.event_delete=Elimina
|
||||
settings.event_delete_desc=Branch o tag eliminato
|
||||
settings.event_fork=Forka
|
||||
settings.event_fork_desc=Repository Forkata
|
||||
settings.event_push=Push
|
||||
settings.event_push_desc=Git push in un repository
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues=Problemi
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Pull request
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_release=Release
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Versione
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Attivo
|
||||
settings.active_helper=Anche i dettagli riguardanti l'evento che ha innescato l'hook saranno inviati.
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=La nuova deploy key '%s' è stata aggiunta con successo
|
||||
settings.deploy_key_deletion=Elimina Deploy Key
|
||||
settings.deploy_key_deletion_desc=Cancellando questa deploy key verrà rismosso ogni accesso relativo a questa repository. Vuoi continuare?
|
||||
settings.deploy_key_deletion_success=Deploy key eliminata con successo!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Sfoglia il codice sorgente
|
||||
diff.parent=parent
|
||||
@@ -894,7 +904,7 @@ release.deletion=Eliminazione Release
|
||||
release.deletion_desc=Eliminando questa release cancellarai anche i tag Git corrispondenti. Vuoi continuare?
|
||||
release.deletion_success=La release è stata eliminata con successo!
|
||||
release.tag_name_already_exist=Un rilascio con questo tag esiste già.
|
||||
release.tag_name_invalid=Tag name is not valid.
|
||||
release.tag_name_invalid=Il nome del Tag non è valido.
|
||||
release.downloads=Download
|
||||
|
||||
[org]
|
||||
@@ -918,7 +928,7 @@ team_permission_desc=Quale livello di autorizzazione dovrebbe avere questa squad
|
||||
|
||||
form.name_reserved=Il nome organizzazione '%s' è riservato.
|
||||
form.name_pattern_not_allowed=La struttura del nome dell'organizzazione '%s' non è consentita.
|
||||
form.team_name_reserved=Team name '%s' is reserved.
|
||||
form.team_name_reserved=Non puoi utilizzare '%s' come nome del Team.
|
||||
|
||||
settings=Impostazioni
|
||||
settings.options=Opzioni
|
||||
@@ -1085,13 +1095,14 @@ repos.private=Privati
|
||||
repos.watches=Segue
|
||||
repos.stars=Voti
|
||||
repos.issues=Problemi
|
||||
repos.size=Size
|
||||
repos.size=Dimensione
|
||||
|
||||
auths.auth_manage_panel=Pannello di configurazione dei meccanismi di autenticazione
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Aggiungi Nuova Origine
|
||||
auths.name=Nome
|
||||
auths.type=Tipo
|
||||
auths.enabled=Attivo
|
||||
auths.default=Default
|
||||
auths.updated=Aggiornato
|
||||
auths.auth_type=Tipo di autenticazione
|
||||
auths.auth_name=Nome di autenticazione
|
||||
@@ -1110,7 +1121,7 @@ auths.attribute_username_placeholder=Se vuoto, verrà usato il nome di login del
|
||||
auths.attribute_name=First Name Attribute
|
||||
auths.attribute_surname=Attributo Cognome
|
||||
auths.attribute_mail=Attributo Email
|
||||
auths.verify_group_membership=Verify group membership
|
||||
auths.verify_group_membership=Verifica gruppo di appartenenza
|
||||
auths.group_search_base_dn=Group Search Base DN
|
||||
auths.group_filter=Group Filter
|
||||
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Abilitare Crittografia TLS
|
||||
auths.skip_tls_verify=Salta verifica TLS
|
||||
auths.pam_service_name=Nome del Servizio PAM
|
||||
auths.enable_auto_register=Abilitare Registrazione Automatica
|
||||
auths.tips=Consigli
|
||||
auths.edit=Modifica impostazioni di autenticazione
|
||||
auths.activated=Questa Autenticazione è stata attivata
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Nuovo meccanismo di autenticazione '%s' aggiunto.
|
||||
auths.update_success=Parametro di autenticazione aggiornato.
|
||||
auths.update=Aggiornare le impostazioni di autenticazione
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=Questo meccanismo di autenticazione è ancora attivo per alc
|
||||
auths.deletion_success=Il meccanismo di autenticazione è stato eliminato!
|
||||
auths.login_source_exist=La fonte di autenticazione '%s' esiste già.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(non impostata)
|
||||
config.server_config=Configurazione Server
|
||||
config.app_name=Nome Applicazione
|
||||
config.app_ver=Versione Applicazione
|
||||
@@ -1163,22 +1174,23 @@ config.ssh_domain=Dominio
|
||||
config.ssh_port=Porta
|
||||
config.ssh_listen_port=Porta in ascolto
|
||||
config.ssh_root_path=Percorso Root
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Percorso chiave di test
|
||||
config.ssh_keygen_path=Percorso Keygen ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Verifica delle dimensioni minime della chiave
|
||||
config.ssh_minimum_key_sizes=Dimensioni minime della chiave
|
||||
|
||||
config.repo_config=Repository Configuration
|
||||
config.repo_config=Configurazione Repository
|
||||
config.repo_root_path=Percorso Root del Repository
|
||||
config.script_type=Tipo di Script
|
||||
config.repo_force_private=Force Private
|
||||
config.max_creation_limit=Max Creation Limit
|
||||
config.preferred_licenses=Preferred Licenses
|
||||
config.disable_http_git=Disable HTTP Git
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.disable_http_git=Disabilita Git in HTTP
|
||||
config.enable_local_path_migration=Abilita migrazioni con path locale
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_config=Configurazione HTTP
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
|
||||
config.db_config=Configurazione Database
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Salta verifiche TLS
|
||||
config.mailer_config=Configurazione Mailer
|
||||
config.mailer_enabled=Attivo
|
||||
config.mailer_disable_helo=Disattiva HELO
|
||||
config.mailer_name=Nome
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Utente
|
||||
config.send_test_mail=Invia email di test
|
||||
@@ -1254,7 +1266,7 @@ config.git_gc_timeout=Timeout per le operazioni di GC
|
||||
|
||||
config.log_config=Configurazione Log
|
||||
config.log_mode=Modalità
|
||||
config.log_options=Options
|
||||
config.log_options=Opzioni
|
||||
|
||||
monitor.cron=Incarici di cron
|
||||
monitor.name=Nome
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Gli avvisi di sistema sono stati successivamente eliminat
|
||||
|
||||
[action]
|
||||
create_repo=ha creato il repository <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=repository rinominato da <code>%[1]s</code> a <a href="%[2]s">[3]s</a>
|
||||
commit_repo=ha pushato nel <a href="%[1]s/src/%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Visualizza comparazione tra questi %d commit
|
||||
@@ -1300,6 +1311,10 @@ create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href=
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=ha pushato il tag <a href="%s/src/%s">%[2]s</a> a <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=fa
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=既にアカウントをお持ちですか?今すぐログ
|
||||
social_register_hepler_msg=既にアカウントをお持ちですか?連携しましょう!
|
||||
disable_register_prompt=申し訳ありませんが、現在登録は受け付けておりません。サイトの管理者にお問い合わせください。
|
||||
disable_register_mail=申し訳ありませんが、登録メールの確認機能が無効になっています。
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=ログインしたままにする
|
||||
forgot_password=パスワードを忘れた
|
||||
forget_password=パスワードを忘れましたか?
|
||||
@@ -229,17 +231,18 @@ org_name_been_taken=組織名は既に使用されています。
|
||||
team_name_been_taken=チーム名は既に使用されています。
|
||||
email_been_used=電子メール アドレスは既に使用されています。
|
||||
username_password_incorrect=ユーザー名またはパスワードが正しくありません。
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=入力したリポジトリの名前が正しいかどうかを確認してください。
|
||||
enterred_invalid_owner_name=入力された所有者名が正しいかどうかを確認してください。
|
||||
enterred_invalid_password=入力したパスワードが正しいかを確認してください。
|
||||
enterred_invalid_password=入力したパスワードが正しいか確認してください。
|
||||
user_not_exist=指定されたユーザーは存在しません。
|
||||
last_org_owner=削除するユーザーはチームの最後のメンバーです。別の所有者設定が必要です。
|
||||
last_org_owner=所有者のチームから最後のユーザーを削除することはできません。組織には常に最低でも1人の所有者が必要です。
|
||||
|
||||
invalid_ssh_key=SSHを確認できません:%s
|
||||
invalid_ssh_key=申し訳ございませんが、SSH キーを検証することができません: %s
|
||||
unable_verify_ssh_key=GogsはあなたのSSH keyを確認できません。しかし、我々は有効とみなしますので、自分自身で確認してください。
|
||||
auth_failed=認証に失敗しました: %v
|
||||
|
||||
still_own_repo=アカウント所有のリポジトリがあり、リポジトリの削除または所有者の移譲が必要です。
|
||||
still_own_repo=あなたのアカウントはまだ少なくとも1つのリポジトリの所有権を所持しています。まずそれらの削除または移譲を行う必要があります。
|
||||
still_has_org=あなたのアカウントは1つ以上の組織に所属しているため、先に組織を脱退するか削除する必要があります。
|
||||
org_still_own_repo=この組織はまだリポジトリの所有しています、リポジトリを削除または転送する必要があります。
|
||||
|
||||
@@ -297,7 +300,7 @@ old_password=現在のパスワード
|
||||
new_password=新しいパスワード
|
||||
retype_new_password=新しいパスワードを再入力します。
|
||||
password_incorrect=現在のパスワードが正しくありません。
|
||||
change_password_success=パスワードが正常に変更されました。今すぐ新しいパスワード経由でサインインすることができます。
|
||||
change_password_success=パスワードが正常に変更されました。今すぐ新しいパスワードを使用してサインインすることができます。
|
||||
password_change_disabled=ローカルユーザ以外はパスワードを変更できません。
|
||||
|
||||
emails=メールアドレス
|
||||
@@ -307,11 +310,11 @@ primary=プライマリー
|
||||
primary_email=プライマリに設定
|
||||
delete_email=削除
|
||||
email_deletion=電子メールの削除
|
||||
email_deletion_desc=この電子メール アドレスを削除すると、あなたのアカウントの関連情報も削除されます。続行しますか。
|
||||
email_deletion_desc=このメールアドレスを削除すると、あなたのアカウントの関連情報も削除されます。続行しますか?
|
||||
email_deletion_success=電子メールが正常に削除されました。
|
||||
add_new_email=新しいメールアドレスを追加
|
||||
add_email=メールアドレスの追加
|
||||
add_email_confirmation_sent='%s' に新しい確認メールを送信しました、次の %d 時間以内に受信トレイを確認し、確認プロセスを完了してください。
|
||||
add_email_confirmation_sent='%s' に新しい確認メールを送信しました。%d 時間以内に受信トレイを確認し、確認プロセスを完了してください。
|
||||
add_email_success=新しいメールアドレスが追加されました。
|
||||
|
||||
manage_ssh_keys=SSH キーを管理
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=またはシークレットを入力:
|
||||
two_factor_then_enter_passcode=パスコードを入力してください:
|
||||
two_factor_verify=確認
|
||||
two_factor_invalid_passcode=入力されたパスコードは使用できません。もう一度お試しください。
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=2段階認証の有効化に失敗しました: %v
|
||||
two_factor_enable_success=2段階認証があなたのアカウントで有効化されました!
|
||||
two_factor_recovery_codes_title=2段階認証のリカバリーコード
|
||||
@@ -372,7 +376,7 @@ access_token_deletion_desc=パーソナルアクセストークンを削除す
|
||||
delete_token_success=パーソナルアクセストークンは正常に削除されました!同時にあなたのアプリケーションを更新することを忘れないでください。
|
||||
|
||||
orgs.none=あなたはどの組織のメンバーでもありません。
|
||||
orgs.leave_title=組織を作成
|
||||
orgs.leave_title=組織からの脱退
|
||||
orgs.leave_desc=組織から脱退すると、全てのリポジトリとチームへのアクセスができなくなります。続行しますか?
|
||||
|
||||
repos.leave=脱退
|
||||
@@ -415,8 +419,10 @@ mirror_address=ミラー アドレス
|
||||
mirror_address_desc=アドレスに必要なユーザーの資格情報を入力してください。
|
||||
mirror_last_synced=最終同期
|
||||
watchers=ウォッチャー
|
||||
stargazers=Stargazers
|
||||
stargazers=スターゲイザー
|
||||
forks=フォーク
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=リポジトリの最大作成数 %d にすでに達しています。
|
||||
form.name_reserved=リポジトリ名 '%s' は使用されています。
|
||||
@@ -485,7 +491,7 @@ editor.edit_file=ファイルを編集
|
||||
editor.preview_changes=変更箇所のプレビュー
|
||||
editor.cannot_edit_non_text_files=テキストファイルでないため編集できません
|
||||
editor.edit_this_file=このファイルを編集
|
||||
editor.must_be_on_a_branch=You must be on a branch to make or propose changes to this file
|
||||
editor.must_be_on_a_branch=このファイルを作成または変更の提案をするには、ブランチ上である必要があります。
|
||||
editor.fork_before_edit=ファイルを編集する前にこのリポジトリをフォークする必要があります。
|
||||
editor.delete_this_file=このファイルを削除
|
||||
editor.must_have_write_access=このファイルへの変更を作成・提案するには、書き込み権限が必要です
|
||||
@@ -506,7 +512,7 @@ editor.new_branch_name_desc=新しいブランチ名...
|
||||
editor.cancel=キャンセル
|
||||
editor.filename_cannot_be_empty=ファイル名を空にすることはできません。
|
||||
editor.branch_already_exists=ブランチ '%s' は、このリポジトリに既に存在します。
|
||||
editor.directory_is_a_file=Entry '%s' in the parent path is a file not a directory in this repository.
|
||||
editor.directory_is_a_file=リポジトリのファイル '%s' はディレクトリではありません。
|
||||
editor.file_is_a_symlink=ファイル '%s' はシンボリックリンクのため、Webエディターから編集することができません。
|
||||
editor.filename_is_a_directory=ファイル名 '%s' は、このリポジトリに存在するディレクトリと同じ名前です。
|
||||
editor.file_editing_no_longer_exists=あなたが編集しているファイル '%s' は、すでにリポジトリに存在しません。
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=あなたが編集を開始してから、フ
|
||||
editor.file_already_exists=ファイル名 '%s' は、このリポジトリに既に存在します。
|
||||
editor.no_changes_to_show=表示する変更箇所はありません。
|
||||
editor.fail_to_update_file=ファイル '%s' の作成/更新に失敗しました: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=サブディレクトリを追加...
|
||||
editor.unable_to_upload_files='%s' へのファイルアップロード中にエラーが発生し、失敗しました: %v
|
||||
editor.upload_files_to_dir='%s' にファイルをアップロード
|
||||
@@ -576,7 +583,7 @@ issues.next=次ページ
|
||||
issues.open_title=オープン
|
||||
issues.closed_title=クローズ
|
||||
issues.num_comments=%d コメント
|
||||
issues.commented_at=`<a href="#%s">%s</a> にコメント`
|
||||
issues.commented_at=`が <a href="#%s">%s</a> にコメントしました`
|
||||
issues.delete_comment_confirm=このコメントを削除してよろしいですか?
|
||||
issues.no_content=まだコンテンツがありません
|
||||
issues.close_issue=閉じる
|
||||
@@ -616,28 +623,29 @@ pulls.compare_compare=比較
|
||||
pulls.filter_branch=フィルターブランチ
|
||||
pulls.no_results=結果が見つかりませんでした。
|
||||
pulls.nothing_to_compare=ベースブランチとヘッドブランチが同一であるため、比較するものがありません。
|
||||
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
|
||||
pulls.nothing_merge_base=2 本の枝が完全に異なる歴史を持っているので、比較するものがありません。
|
||||
pulls.has_pull_request=`既にプルリクエストがこれらのターゲット間に存在します: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=プルリクエストを作成します。
|
||||
pulls.title_desc=wants to merge %[1]d commits from <code>%[2]s</code> into <code>%[3]s</code>
|
||||
pulls.title_desc=が <code>%[2]s</code> から <code>%[3]s</code> への %[1]d コミットのマージを希望しています
|
||||
pulls.merged_title_desc=%[4]s に %[1]d 件のコミットが <code>%[2]s</code> から <code>%[3]s</code> にマージされました
|
||||
pulls.tab_conversation=会話
|
||||
pulls.tab_commits=コミット
|
||||
pulls.tab_files=ファイルが変更された
|
||||
pulls.tab_files=変更されたファイル
|
||||
pulls.reopen_to_merge=マージ操作を実行するには、このプルリクエストを再び開いてください。
|
||||
pulls.merged=マージされた
|
||||
pulls.has_merged=このプルプルリクエストは正常にマージされました!
|
||||
pulls.data_broken=Data of this pull request has been broken due to deletion of fork information.
|
||||
pulls.data_broken=フォーク情報の削除によってこのプルリクエストのデータは壊れています。
|
||||
pulls.is_checking=コンフリクトが発生していないかチェック中です、しばらく待ったのちページを更新してください。
|
||||
pulls.can_auto_merge_desc=このプルリクエストは自動的にマージできます。
|
||||
pulls.cannot_auto_merge_desc=コンフリクトが発生しているため、このプルリクエストを自動的にマージすることはできません。
|
||||
pulls.cannot_auto_merge_helper=競合を解決するためには、手動でマージする必要があります。
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=マージコミットを作成する
|
||||
pulls.rebase_before_merging=マージする前に再配置します。
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=プルリクエストをマージします。
|
||||
pulls.open_unmerged_pull_exists=`You can't perform reopen operation because there is already an open pull request (#%d) from same repository with same merge information and is waiting for merging.`
|
||||
pulls.open_unmerged_pull_exists=`同じリポジトリに同じマージ情報持つ未解決のプルリクエスト (#%d) が存在するため再び開くことができません。`
|
||||
pulls.delete_branch=ブランチの削除
|
||||
pulls.delete_branch_has_new_commits=マージ後に新しいコミットがされているため、ブランチを削除することが出来ません。
|
||||
pulls.delete_branch_has_new_commits=マージ後に新しいコミットが行われているため、ブランチを削除することはできません。
|
||||
|
||||
milestones.new=新しいマイルストーン
|
||||
milestones.open_tab=%d オープン
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=外部課題トラッキングシステムの命名
|
||||
settings.tracker_issue_style.numeric=数値
|
||||
settings.tracker_issue_style.alphanumeric=英数字
|
||||
settings.tracker_url_format_desc=ユーザー名、リポジトリ名、課題番号を埋め込むために <code>{user} {repo} {index}</code> が使用できます。
|
||||
settings.pulls_desc=誰でもコントリビュートできるよう、プルリクエストの受け付けを有効にします
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=空白の変更を無視する
|
||||
settings.pulls.allow_rebase_merge=コミットをマージするためのリベースの使用を許可する
|
||||
settings.danger_zone=危険地帯
|
||||
settings.cannot_fork_to_same_owner=元の持ち主に向けてフォークすることは出来ません。
|
||||
settings.new_owner_has_same_repo=新しいオーナーは、既に同じ名前のリポジトリを持っています。
|
||||
@@ -752,17 +760,17 @@ settings.convert_succeed=リポジトリは正常に通常リポジトリへ変
|
||||
settings.transfer=オーナー移転
|
||||
settings.transfer_desc=リポジトリをあなたが管理者権限を持っている別のユーザーまた組織に移譲します。
|
||||
settings.transfer_notices_1=-新しい所有者が個人ユーザーの場合、あなたがアクセスできなくなります。
|
||||
settings.transfer_notices_2=- You will conserve access if new owner is an organization and if you're one of the owners.
|
||||
settings.transfer_notices_2=- 新しい所有者が組織で、あなたがその組織の所有者である場合はアクセス権が残ります。
|
||||
settings.transfer_form_title=操作を確認するために、以下の情報を入力してください。
|
||||
settings.wiki_delete=Wikiのデータ消去
|
||||
settings.wiki_delete_desc=Wikiのデータを消去すると元に戻すことは出来ません。よく確認してください。
|
||||
settings.wiki_delete_notices_1=- This will delete and disable the wiki for %s
|
||||
settings.wiki_delete_notices_1=- %s の Wiki を削除して無効にします。
|
||||
settings.wiki_deletion_success=Wikiのデータ消去が完了しました。
|
||||
settings.delete=このリポジトリを削除
|
||||
settings.delete_desc=リポジトリを削除すると元に戻せません。確実に確認してください。
|
||||
settings.delete_notices_1=-この操作は<strong>元に戻せません</strong> 。
|
||||
settings.delete_notices_2=- この操作は、Git データ、課題、コメント、共同編集者のアクセス権などを含む、このリポジトリに関するすべてを完全に削除します。
|
||||
settings.delete_notices_fork_1=- All forks will become independent after deletion.
|
||||
settings.delete_notices_2=-この操作はこのリポジトリで、Git データ、問題、コメント協力アクセスなどすべて削除されます。
|
||||
settings.delete_notices_fork_1=- 削除後、すべてのフォークは独立したリポジトリになります。
|
||||
settings.deletion_success=リポジトリが正常に削除されました。
|
||||
settings.update_settings_success=リポジトリ オプションが更新されました。
|
||||
settings.transfer_owner=新しいオーナー
|
||||
@@ -801,7 +809,7 @@ settings.add_webhook_desc=私たちは、指定されたURLに購読されたイ
|
||||
settings.payload_url=ペイロードの URL
|
||||
settings.content_type=コンテンツ タイプ
|
||||
settings.secret=秘密
|
||||
settings.secret_desc=Secret will be sent as SHA256 HMAC hex digest of payload via <code>X-Gogs-Signature</code> header.
|
||||
settings.secret_desc=秘密キーは、 <code>X-Gogs-Signature</code> ヘッダーを介してペイロードの HMAC SHA256 六角ダイジェストとして送信されます。
|
||||
settings.slack_username=ユーザ名
|
||||
settings.slack_icon_url=アイコン URL
|
||||
settings.slack_color=カラー
|
||||
@@ -819,10 +827,10 @@ settings.event_push=プッシュ
|
||||
settings.event_push_desc=リポジトリへのプッシュがされた時
|
||||
settings.event_issues=課題
|
||||
settings.event_issues_desc=課題の開始・終了・再開・編集・アサイン・アサイン解除・ラベル更新・ラベル削除・マイルストーン紐付け・マイルストーン紐付け解除がされた時
|
||||
settings.event_issue_comment=課題へのコメント
|
||||
settings.event_issue_comment_desc=課題へのコメントが作成・編集・削除された時
|
||||
settings.event_pull_request=プルリクエスト
|
||||
settings.event_pull_request_desc=プルリクエストの開始・終了・再開・編集・アサイン・アサイン解除・ラベル更新・ラベル削除・マイルストーン紐付け・マイルストーン紐付け解除・同期がされた時
|
||||
settings.event_issue_comment=課題へのコメント
|
||||
settings.event_issue_comment_desc=課題へのコメントが作成・編集・削除された時
|
||||
settings.event_release=リリース
|
||||
settings.event_release_desc=リポジトリでリリースが公開された時
|
||||
settings.active=アクティブ
|
||||
@@ -835,7 +843,7 @@ settings.recent_deliveries=最近のデリバリー
|
||||
settings.hook_type=フックタイプ
|
||||
settings.add_slack_hook_desc=リポジトリに <a href="%s">Slack</a> 連携を追加します。
|
||||
settings.add_discord_hook_desc=リポジトリに <a href="%s">Discord</a> 連携を追加します。
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=リポジトリに <a href="%s">Dingtalk</a> 連携を追加します。
|
||||
settings.slack_token=トークン
|
||||
settings.slack_domain=ドメイン
|
||||
settings.slack_channel=チャンネル
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=新しいデプロイキー '%s'が正常に追加さ
|
||||
settings.deploy_key_deletion=デプロイキーを削除
|
||||
settings.deploy_key_deletion_desc=このデプロイキーを削除すると、このリポジトリに関連するすべてのアクセス権も削除されます。続行しますか。
|
||||
settings.deploy_key_deletion_success=デプロイキーが正常に削除された!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=ソースを参照
|
||||
diff.parent=親
|
||||
@@ -860,7 +870,7 @@ diff.data_not_available=差分データは利用できません。
|
||||
diff.show_diff_stats=差分情報を表示
|
||||
diff.show_split_view=分割表示
|
||||
diff.show_unified_view=一括表示
|
||||
diff.stats_desc=共有<strong>%d 個のファイルを変更した</strong>、<strong>%d 個の追加</strong> と <strong>%d 個の削除</strong>を含む
|
||||
diff.stats_desc=<strong>%d ファイル変更</strong>、<strong>%d 行追加</strong>、<strong>%d 行削除</strong>
|
||||
diff.bin=BIN
|
||||
diff.view_file=ファイルの表示
|
||||
diff.file_suppressed=ファイルの差分が大きいため隠しています
|
||||
@@ -871,10 +881,10 @@ release.new_release=新しいリリース
|
||||
release.draft=ドラフト
|
||||
release.prerelease=プレリリース
|
||||
release.edit=編集
|
||||
release.ahead=このリリース以降 %s へ <strong>%d</strong> コミット
|
||||
release.ahead=このリリース以降 %[2]s へ <strong>%[1]d</strong> コミット
|
||||
release.source_code=ソース コード
|
||||
release.new_subheader=Publish releases to iterate product.
|
||||
release.edit_subheader=詳細な変更ログは、ユーザーに何が改善されたかの理解を助けることができます。
|
||||
release.new_subheader=製品を反復するためにリリースを公開する。
|
||||
release.edit_subheader=詳細な変更ログは、ユーザーが改善点を理解するのに役立つでしょう。
|
||||
release.tag_name=タグ名
|
||||
release.target=ターゲット
|
||||
release.tag_helper=既存のタグを選択するか、新しいタグを作成し発行します。
|
||||
@@ -895,7 +905,7 @@ release.deletion_desc=このリリースを削除すると、対応するGitの
|
||||
release.deletion_success=リリースが正常に削除されました。
|
||||
release.tag_name_already_exist=このタグ名には既にリリースが存在します。
|
||||
release.tag_name_invalid=使用できないタグ名です。
|
||||
release.downloads=Downloads
|
||||
release.downloads=ダウンロード
|
||||
|
||||
[org]
|
||||
org_name_holder=組織名
|
||||
@@ -927,7 +937,7 @@ settings.website=WEBサイト
|
||||
settings.location=ロケーション
|
||||
settings.update_settings=設定の更新
|
||||
settings.update_setting_success=組織の設定が更新されました。
|
||||
settings.change_orgname_prompt=This change will affect how links relate to the organization.
|
||||
settings.change_orgname_prompt=この変更は組織へのリンクに影響します。
|
||||
settings.update_avatar_success=組織のアバター画像が正常に更新されました。
|
||||
settings.delete=組織を削除
|
||||
settings.delete_account=この組織を削除
|
||||
@@ -1009,10 +1019,10 @@ dashboard.git_gc_repos=リポジトリでのガベージコレクションを実
|
||||
dashboard.git_gc_repos_success=すべてのリポジトリは正常にガベージ コレクションを行いました。
|
||||
dashboard.resync_all_sshkeys='.ssh/ authorized_keys' ファイルを再生成します。(警告:Gogsキー以外は失われます)
|
||||
dashboard.resync_all_sshkeys_success=すべての公開鍵が正常に書き換えられました。
|
||||
dashboard.resync_all_hooks=Resync pre-receive, update and post-receive hooks of all repositories
|
||||
dashboard.resync_all_hooks_success=All repositories' pre-receive, update and post-receive hooks have been resynced successfully.
|
||||
dashboard.reinit_missing_repos=Reinitialize all repository records that lost Git files
|
||||
dashboard.reinit_missing_repos_success=All repository records that lost Git files have been reinitialized successfully.
|
||||
dashboard.resync_all_hooks=すべてリポジトリの pre-receive, update, post-receive フックを再同期する。
|
||||
dashboard.resync_all_hooks_success=すべてリポジトリの pre-receive, update, post-receive フックが正常に再同期されました。
|
||||
dashboard.reinit_missing_repos=Gitファイルが失われたリポジトリのすべてのレコードを再初期化する
|
||||
dashboard.reinit_missing_repos_success=すべてのGitファイルを失ったレポジトリレコードが正常に再初期化されました。
|
||||
|
||||
dashboard.server_uptime=サーバーの稼働時間
|
||||
dashboard.current_goroutine=現在のGoroutine
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Stars
|
||||
repos.issues=課題
|
||||
repos.size=容量
|
||||
|
||||
auths.auth_manage_panel=認証管理パネル
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=新しいソースを追加
|
||||
auths.name=名前
|
||||
auths.type=タイプ
|
||||
auths.enabled=有効
|
||||
auths.default=Default
|
||||
auths.updated=更新しました
|
||||
auths.auth_type=認証タイプ
|
||||
auths.auth_name=認証名
|
||||
@@ -1100,22 +1111,22 @@ auths.domain=ドメイン
|
||||
auths.host=ホスト
|
||||
auths.port=ポート
|
||||
auths.bind_dn=バインド DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper='%s'はユーザー名のプレースホルダとして使用できます。 例)DOM \%s
|
||||
auths.bind_password=バインド パスワード
|
||||
auths.bind_password_helper=警告: このパスワードは暗号化されずに格納されます。特権を持つアカウントに使用しないでください。
|
||||
auths.user_base=ユーザ検索ベース
|
||||
auths.user_dn=User DN
|
||||
auths.attribute_username=ユーザー名属性
|
||||
auths.attribute_username_placeholder=Leave empty to use sign-in form field value for user name.
|
||||
auths.attribute_name=First Name Attribute
|
||||
auths.attribute_username_placeholder=ログインフォームの値を使う場合は空にしてください。
|
||||
auths.attribute_name=名前属性
|
||||
auths.attribute_surname=名字属性
|
||||
auths.attribute_mail=Eメール属性
|
||||
auths.verify_group_membership=Verify group membership
|
||||
auths.group_search_base_dn=Group Search Base DN
|
||||
auths.group_filter=Group Filter
|
||||
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
|
||||
auths.user_attribute_listed_in_group=User Attribute Listed in Group
|
||||
auths.attributes_in_bind=Fetch attributes in Bind DN context
|
||||
auths.verify_group_membership=グループ メンバーシップを確認します。
|
||||
auths.group_search_base_dn=グループ サーチベースDN
|
||||
auths.group_filter=グループ フィルター
|
||||
auths.group_attribute_contain_user_list=ユーザーのリストを含むグループ属性
|
||||
auths.user_attribute_listed_in_group=グループのユーザー属性
|
||||
auths.attributes_in_bind=属性をバインドDNのコンテクストから取得する
|
||||
auths.filter=User フィルター
|
||||
auths.admin_filter=Admin フィルター
|
||||
auths.ms_ad_sa=Ms Ad SA
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=TLS 暗号化を有効にする
|
||||
auths.skip_tls_verify=TLSベリファイを省略
|
||||
auths.pam_service_name=PAMサービス名
|
||||
auths.enable_auto_register=自動登録を有効にする
|
||||
auths.tips=ヒント
|
||||
auths.edit=認証設定を編集
|
||||
auths.activated=認証の有効化
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=新しい認証 '%s' が正常に追加されました。
|
||||
auths.update_success=認証の設定が正常に更新されました。
|
||||
auths.update=認証設定を更新
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=この認証を使用しているユーザーがいます。
|
||||
auths.deletion_success=認証が正常に削除されました。
|
||||
auths.login_source_exist=ログイン ソース '%s' は既に存在します。
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(未設定)
|
||||
config.server_config=サーバーの構成
|
||||
config.app_name=アプリケーション名
|
||||
config.app_ver=アプリケーションのバージョン
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=ドメイン
|
||||
config.ssh_port=ポート
|
||||
config.ssh_listen_port=リッスンポート
|
||||
config.ssh_root_path=ルートパス
|
||||
config.ssh_rewrite_authorized_keys_at_start=書き換え authorized_keys 開始
|
||||
config.ssh_key_test_path=キーテストパス
|
||||
config.ssh_keygen_path=鍵生成コマンド ('ssh-keygen') のパス
|
||||
config.ssh_minimum_key_size_check=最小キーサイズチェック
|
||||
@@ -1175,10 +1187,10 @@ config.repo_force_private=非公開リポジトリの強制
|
||||
config.max_creation_limit=最大作成数
|
||||
config.preferred_licenses=優先ライセンス
|
||||
config.disable_http_git=HTTP Git の無効化
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
config.enable_local_path_migration=ローカルパス移行の有効化
|
||||
config.commits_fetch_concurrency=コミットのフェッチの並行数
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_config=HTTP の設定
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
|
||||
config.db_config=データベース設定
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=TLSの確認を省略
|
||||
config.mailer_config=メーラーの設定
|
||||
config.mailer_enabled=有効にした
|
||||
config.mailer_disable_helo=HELOコマンド無効
|
||||
config.mailer_name=名前
|
||||
config.mailer_subject_prefix=件名プレフィックス
|
||||
config.mailer_host=ホスト
|
||||
config.mailer_user=ユーザ
|
||||
config.send_test_mail=テストメールの送信
|
||||
@@ -1283,23 +1295,26 @@ notices.delete_success=システム通知が正常に削除されました。
|
||||
|
||||
[action]
|
||||
create_repo=がリポジトリ <a href="%s"> %s</a> を作成しました
|
||||
fork_repo=リポジトリを <a href="%s">%s</a> にフォークしました
|
||||
rename_repo=<code>%[1]s</code> から <a href="%[2]s">[3]s</a> にリポジトリ名を変更しました
|
||||
commit_repo=<a href="%[1]s">%[4]s</a>を<a href="%[1]s/src/%[2]s">%[3]s</a>にプッシュしました
|
||||
rename_repo=が <code>%[1]s</code> から <a href="%[2]s">%[3]s</a> にリポジトリ名を変更しました
|
||||
commit_repo=が <a href="%[1]s">%[4]s</a> に <a href="%[1]s/src/%[2]s">%[3]s</a> をプッシュしました
|
||||
compare_commits=これらの %d コミットの比較を表示
|
||||
transfer_repo=リポジトリ <code>%s</code> を <a href="%s">%s</a> へ転送しました
|
||||
create_issue=`課題 <a href="%s/issues/%s">%s#%[2]s</a> を開きました`
|
||||
close_issue=`課題 <a href="%s/issues/%s">%s#%[2]s</a> を閉じました`
|
||||
reopen_issue=`課題 <a href="%s/issues/%s">%s#%[2]s</a> が再び開かれました`
|
||||
comment_issue=`課題 <a href="%s/issues/%s">%s#%[2]s</a> へのコメント`
|
||||
comment_issue=`が課題 <a href="%s/issues/%s">%s#%[2]s</a> にコメントしました`
|
||||
create_pull_request=`プルリクエスト <a href="%s/pulls/%s"> %s[2]s</a>を作成`
|
||||
close_pull_request=`プルリクエスト <a href="%s/pulls/%s">%s#%[2]s</a> を閉じました`
|
||||
reopen_pull_request=`プルリクエスト <a href="%s/pulls/%s">%s#%[2]s</a> が再び開かれました`
|
||||
merge_pull_request=`プルリクエスト <a href="%s/pulls/%s"> %s[2]s</a>をマージしました`
|
||||
create_branch=<a href="%[1]s">%[4]s</a> に、新しいブランチ <a href="%[1]s/src/%[2]s">%[3]s</a> を作成しました
|
||||
create_branch=が <a href="%[1]s">%[4]s</a> に新しいブランチ <a href="%[1]s/src/%[2]s">%[3]s</a> を作成しました
|
||||
delete_branch=<a href="%[1]s">%[3]s</a> のブランチ <code>%[2]s</code> を削除しました
|
||||
push_tag=<a href="%[1]s">%[3]s</a> に タグ <a href="%[1]s/src/%[2]s">%[2]s</a> をプッシュしました
|
||||
push_tag=が <a href="%[1]s">%[3]s</a> にタグ <a href="%[1]s/src/%[2]s">%[2]s</a> をプッシュしました
|
||||
delete_tag=<a href="%[1]s">%[3]s</a> のタグ <code>%[2]s</code> を削除しました
|
||||
fork_repo=リポジトリを <a href="%s">%s</a> にフォークしました
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=前
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=이미 계정을 가지고 계신가요? 로그인하세요!
|
||||
social_register_hepler_msg=계정을 가지고 계신가요? 연결하세요!
|
||||
disable_register_prompt=죄송합니다, 가입이 비활성화 되어있습니다. 사이트 관리자에게 문의 해주세요.
|
||||
disable_register_mail=죄송합니다. 메일 등록이 비활성화 되었습니다.
|
||||
auth_source=Authentication Source
|
||||
local=로컬
|
||||
remember_me=자동 로그인
|
||||
forgot_password=비밀번호 찾기
|
||||
forget_password=비밀번호를 잊으셨습니까?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=이미 사용중인 조직 이름입니다.
|
||||
team_name_been_taken=이미 사용중인 팀 이름입니다.
|
||||
email_been_used=이미 사용중인 이메일 주소입니다.
|
||||
username_password_incorrect=사용자 이름이나 비밀번호가 올바르지 않습니다.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=입력한 저장소 이름이 올바른지 확인하십시오.
|
||||
enterred_invalid_owner_name=입력한 사용자 이름이 올바른지 확인하십시오.
|
||||
enterred_invalid_password=입력한 비밀번호가 올바른지 확인하십시오.
|
||||
@@ -348,15 +351,16 @@ two_factor_or_enter_secret=또는 이 비밀키를 입력하세요:
|
||||
two_factor_then_enter_passcode=그리고 코드를 입력하세요:
|
||||
two_factor_verify=확인
|
||||
two_factor_invalid_passcode=입력한 코드가 올바르지 않습니다. 다시 시도해 주세요!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=2단계 인증 활성화 실패: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
two_factor_recovery_codes_desc=Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
|
||||
two_factor_regenerate_recovery_codes=Regenerate Recovery Codes
|
||||
two_factor_regenerate_recovery_codes_error=Regenerate recovery codes failed: %v
|
||||
two_factor_regenerate_recovery_codes_success=New recovery codes has been generated successfully!
|
||||
two_factor_enable_success=2단계 인증이 성공적으로 활성화되었습니다!
|
||||
two_factor_recovery_codes_title=2단계 인증 복구 코드
|
||||
two_factor_recovery_codes_desc=복구 코드는 당신이 2단계 인증 프로그램에 접근할 수 없을때 사용합니다. 각 코드들은 한 번만 사용될 수 있습니다. <b>이 코드들은 안전한 장소에 보관하세요.</b>
|
||||
two_factor_regenerate_recovery_codes=복구 코드 재생성
|
||||
two_factor_regenerate_recovery_codes_error=복구 코드 재생성 실패: %v
|
||||
two_factor_regenerate_recovery_codes_success=성공적으로 새로운 복구 코드가 생성되었습니다!
|
||||
two_factor_disable_title=2단계 인증 비활성화
|
||||
two_factor_disable_desc=Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
|
||||
two_factor_disable_desc=2단계 인증을 끄면 보안 수준이 낮아집니다. 계속하시겠습니까?
|
||||
two_factor_disable_success=2단계 인증이 성공적으로 비활성화되었습니다!
|
||||
|
||||
manage_access_token=개인 액세스 토큰 관리
|
||||
@@ -375,8 +379,8 @@ orgs.none=당신은 어떤 조직의 구성원도 아닙니다.
|
||||
orgs.leave_title=조직 떠나기
|
||||
orgs.leave_desc=조직을 떠난 후에는 모든 리포지토리와 팀에 액세스 할 수 없게 됩니다. 계속 하시겠습니까?
|
||||
|
||||
repos.leave=Leave
|
||||
repos.leave_title=Leave repository
|
||||
repos.leave=나가기
|
||||
repos.leave_title=저장소 나가기
|
||||
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
|
||||
repos.leave_success=You have left repository '%s' successfully!
|
||||
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=마지막으로 동기화됨
|
||||
watchers=주시하고 있는 사람들
|
||||
stargazers=별을 준 사람들
|
||||
forks=포크
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=소유자가 저장소 만들기 최대 제한에 (%d개) 도달했습니다.
|
||||
form.name_reserved=저장소 이름 '%s'은 예약 되어 있습니다.
|
||||
@@ -472,7 +478,7 @@ file_permalink=고유링크
|
||||
file_too_large=이 파일은 표시하기엔 너무 큽니다.
|
||||
video_not_supported_in_browser=이 브라우저는 HTML5 비디오 태그를 지원하지 않습니다.
|
||||
|
||||
branches.overview=Overview
|
||||
branches.overview=개요
|
||||
branches.active_branches=활성 브랜치
|
||||
branches.stale_branches=오래된 브랜치
|
||||
branches.all=모든 브랜치
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=편집을 시작한 이후 파일 내용이
|
||||
editor.file_already_exists=이 저장소에 이름이 '%s'인 파일이 이미 존재합니다.
|
||||
editor.no_changes_to_show=표시할 변경사항이 없습니다.
|
||||
editor.fail_to_update_file=파일 '%s'를 변경/추가 하는데 실패하였습니다. 에러: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=하위 디렉토리 추가...
|
||||
editor.unable_to_upload_files=파일 '%s'를 업로드하는데 실패하였습니다. 에러: %v
|
||||
editor.upload_files_to_dir=파일 업로드 '%s'
|
||||
@@ -634,7 +641,8 @@ pulls.can_auto_merge_desc=이 풀리퀘스트는 자동적으로 머지될 수
|
||||
pulls.cannot_auto_merge_desc=컨플릭이 존재해서 이 풀리퀘스트는 자동을 머지될 수 없습니다.
|
||||
pulls.cannot_auto_merge_helper=컨플릭을 해결하려면 수동으로 머지해 주십시오.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.rebase_before_merging=병합 하기 전에 리베이스
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=풀리퀘스트 머지
|
||||
pulls.open_unmerged_pull_exists=`같은 리파지토리에서 같은 머지 정보로 만들어진 풀리퀘스트 (#%d) 가 이미 오픈 상태이고 머지를 기다리고 있기 때문에 다시 열기 작업을 할 수 없습니다.`
|
||||
pulls.delete_branch=브랜치 삭제
|
||||
@@ -739,7 +747,7 @@ settings.tracker_issue_style=외부 이슈 트래커 명명 스타일:
|
||||
settings.tracker_issue_style.numeric=숫자
|
||||
settings.tracker_issue_style.alphanumeric=문자 숫자
|
||||
settings.tracker_url_format_desc=<code>{user} {repo} {index}</code> 사용자 명, 저장소 명, 이슈 인덱스를 사용하여 표시자를 사용할 수 있습니다.
|
||||
settings.pulls_desc=끌어오기 요청을 공개적으로 기여받을 수 있도록 활성화합니다.
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=위험 설정
|
||||
@@ -762,7 +770,7 @@ settings.wiki_deletion_success=저장소의 Wiki 데이터가 성공적으로
|
||||
settings.delete=이 저장소 삭제
|
||||
settings.delete_desc=저장소를 지우고 나면 되돌릴 수 없습니다. 다시 한번 확인하세요.
|
||||
settings.delete_notices_1=- 이 작업은 취소할 수 <strong>없습니다.</strong>
|
||||
settings.delete_notices_2=- 이 작업은 저장소의 모든 항목을 영구적으로 삭제합니다. Git 데이터, 이슈, 주석 및 공동 작업자의 액세스를 포함합니다.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- 모든 포크들은 삭제 후에도 독립적으로 유지됩니다.
|
||||
settings.deletion_success=저장소가 성공적으로 삭제 되었습니다!
|
||||
settings.update_settings_success=저장소 옵션이 성공적으로 업데이트 되었습니다.
|
||||
@@ -820,10 +828,10 @@ settings.event_push=푸시
|
||||
settings.event_push_desc=깃 저장소로 푸시
|
||||
settings.event_issues=이슈
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=끌어오기 요청
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=활성
|
||||
@@ -853,6 +861,8 @@ settings.add_key_success=새로운 배포 키 '%s'가 성공적으로 추가 되
|
||||
settings.deploy_key_deletion=배포 키 삭제
|
||||
settings.deploy_key_deletion_desc=이 배포키를 삭제하면 이 저장소와 관련된 모든 접근 권한이 삭제됩니다. 계속 하시겠습니까?
|
||||
settings.deploy_key_deletion_success=배포 키가 성공적으로 삭제되었습니다!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=소스 검색
|
||||
diff.parent=부모
|
||||
@@ -1086,13 +1096,14 @@ repos.private=비공개
|
||||
repos.watches=지켜보기
|
||||
repos.stars=Stars
|
||||
repos.issues=이슈
|
||||
repos.size=Size
|
||||
repos.size=크기
|
||||
|
||||
auths.auth_manage_panel=인증 관리 패널
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=새로운 소스를 추가
|
||||
auths.name=이름
|
||||
auths.type=유형
|
||||
auths.enabled=활성화됨
|
||||
auths.default=Default
|
||||
auths.updated=업데이트됨
|
||||
auths.auth_type=인증 유형
|
||||
auths.auth_name=인증 이름
|
||||
@@ -1108,10 +1119,10 @@ auths.user_base=사용자 검색 기준
|
||||
auths.user_dn=사용자 DN
|
||||
auths.attribute_username=유저 명 속성
|
||||
auths.attribute_username_placeholder=사용자 이름에 대한 로그인 폼 필드 값을 사용하려면 비워 둡니다.
|
||||
auths.attribute_name=First Name Attribute
|
||||
auths.attribute_name=첫번째 이름 속성
|
||||
auths.attribute_surname=성씨 속성
|
||||
auths.attribute_mail=이메일 속성
|
||||
auths.verify_group_membership=Verify group membership
|
||||
auths.verify_group_membership=그룹 구성원 자격을 확인
|
||||
auths.group_search_base_dn=Group Search Base DN
|
||||
auths.group_filter=Group Filter
|
||||
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
|
||||
@@ -1129,9 +1140,9 @@ auths.enable_tls=TLS 암호화 활성화
|
||||
auths.skip_tls_verify=TLS 검증 건너뛰기
|
||||
auths.pam_service_name=PAM 서비스 명
|
||||
auths.enable_auto_register=자동 등록을 활성화
|
||||
auths.tips=도움말
|
||||
auths.edit=인증 설정 편집
|
||||
auths.activated=이 인증정보는 활성화되어있습니다.
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=새로운 인증 '%s'가 성공적으로 추가 되었습니다.
|
||||
auths.update_success=인증 설정이 성공적으로 변경되었습니다.
|
||||
auths.update=인증 설정 업데이트
|
||||
@@ -1164,6 +1175,7 @@ config.ssh_domain=도메인
|
||||
config.ssh_port=포트
|
||||
config.ssh_listen_port=수신 대기 포트
|
||||
config.ssh_root_path=최상위 경로
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=주 테스트 경로
|
||||
config.ssh_keygen_path=키 생성 ('ssh-keygen') 경로
|
||||
config.ssh_minimum_key_size_check=최소 키 사이즈 검사
|
||||
@@ -1179,7 +1191,7 @@ config.disable_http_git=Disable HTTP Git
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_config=HTTP 설정
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
|
||||
config.db_config=데이터베이스 설정
|
||||
@@ -1211,7 +1223,7 @@ config.skip_tls_verify=TLS 확인 건너뛰기
|
||||
config.mailer_config=메일러 설정
|
||||
config.mailer_enabled=활성화됨
|
||||
config.mailer_disable_helo=HELO 비활성화
|
||||
config.mailer_name=이름
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=호스트
|
||||
config.mailer_user=사용자
|
||||
config.send_test_mail=테스트 이메일 보내기
|
||||
@@ -1284,7 +1296,6 @@ notices.delete_success=시스템 알림들이 성공적으로 삭제되었습니
|
||||
|
||||
[action]
|
||||
create_repo=저장소를 만들었습니다. <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=<code>%[1]s에서</code>에서 <a href="%[2]s"> %[3]s</a>으로 저장소 이름을 바꾸었습니다.
|
||||
commit_repo=<a href="%[1]s">%[4]s</a>에서 <a href="%[1]s/src/%[2]s">%[3]s</a>으로 푸시함
|
||||
compare_commits=이 %d개의 커밋에 대한 비교 보기
|
||||
@@ -1301,6 +1312,10 @@ create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href=
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=태그 <a href="%s/src/%s">%[2]s</a>를 <a href="%[1]s">%[3]s</a>로 푸시함
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=전
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Jau ir konts? Pieraksties tagad!
|
||||
social_register_hepler_msg=Jau ir konts? Sasaisti tagad!
|
||||
disable_register_prompt=Atvainojiet, reģistrācija ir atspējota. Lūdzu, sazinieties ar vietnes administratoru.
|
||||
disable_register_mail=Atvainojiet, reģistrācijas e-pasta apstiprināšana ir atspējota.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Atcerēties mani
|
||||
forgot_password=Aizmirsu paroli
|
||||
forget_password=Aizmirsi paroli?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Organizācijas nosaukums ir jau aizņemts.
|
||||
team_name_been_taken=Komandas nosaukums ir jau aizņemts.
|
||||
email_been_used=E-pasta adrese jau tiek izmantota.
|
||||
username_password_incorrect=Lietotājvārds vai parole nav pareiza.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Lūdzu, pārliecinieties, vai ievadītā repozitorija nosaukums ir pareizs.
|
||||
enterred_invalid_owner_name=Lūdzu, pārliecinieties, vai ievadītā īpašnieka vārds ir pareizs.
|
||||
enterred_invalid_password=Lūdzu pārliecinieties, vai Jūsu ievadītā parole ir pareiza.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Vai ievadiet noslēpumu:
|
||||
two_factor_then_enter_passcode=Pēc tam ievadiet kodu:
|
||||
two_factor_verify=Pārbaudīt
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Pēdējo reizi sinhronizēts
|
||||
watchers=Novērotāji
|
||||
stargazers=Zvaigžņdevēji
|
||||
forks=Atdalītie repozitoriji
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Īpašnieks sasniedza maksimālu pieļaujamo (%d) izveidoto repozitoriju skaitu.
|
||||
form.name_reserved=Repozitorija nosaukums '%s' ir rezervēts.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Faila saturs ir mainījies kopš brīža, kad
|
||||
editor.file_already_exists=Fails ar nosaukumu '%s' 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
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Pievienot apakšdirektoriju...
|
||||
editor.unable_to_upload_files=Neizdevās augšupielādēt failus uz direktoriju '%s', kļūda: %v
|
||||
editor.upload_files_to_dir=Augšupielādēt failus uz direktoriju '%s'
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc=Šis izmaiņu pieprasījums nevar tikt automātiski
|
||||
pulls.cannot_auto_merge_helper=Lūdzu sapludiniet manuāli, lai atrisinātu konfliktus.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Izmaiņu pieprasījuma sapludināšana
|
||||
pulls.open_unmerged_pull_exists=`Jūs nevarat veikt atkārtotas atvēršanas darbību, jo jau eksistē izmaiņu pieprasījums (#%d) no šī repozitorija ar tādu pašu sapludināšanas informāciju un gaida sapludināšanu.`
|
||||
pulls.delete_branch=Dzēst atzaru
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style=Ārējā problēmu reģistra nosaukumu stils:
|
||||
settings.tracker_issue_style.numeric=Cipari
|
||||
settings.tracker_issue_style.alphanumeric=Burti un cipari
|
||||
settings.tracker_url_format_desc=Jūs varat izmantot <code>{user}{repo}{index}</code> lietotājvārdam, repozitorija nosaukumam un problēmas identifikātoram.
|
||||
settings.pulls_desc=Iespējot izmaiņu pieprasījumus lai saņemtu publiskus ieguldījumus
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Bīstamā zona
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Repozitorija Vikivietnes dati tika veiksmīgi izd
|
||||
settings.delete=Dzēst šo repozitoriju
|
||||
settings.delete_desc=Dzēšot repozitoriju, tā datus vairs nebūs iespējams atgūt. Pirms dzēšanas pārliecinieites vai patiešām vēlaties to darīt.
|
||||
settings.delete_notices_1=- Šī darbība ir <strong>NEATGRIEZENISKA</strong>.
|
||||
settings.delete_notices_2=- Šī darbība neatgriezeniski izdzēsīs visus šī repozitorija datus, tai skaitā Git datus, problēmu ziņojumus, komentārus un definētās piekļuves tiesības.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- Visi atdalītie repozitoriji kļūs neatkarīgi pēc dzēšanas.
|
||||
settings.deletion_success=Repozitorijs tika veiksmīgi dzēsts!
|
||||
settings.update_settings_success=Repozitorija opcijas ir veiksmīgi saglabātas.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Izmaiņu nosūtīšana
|
||||
settings.event_push_desc=Git izmaiņu nosūtīšana uz repozitoriju
|
||||
settings.event_issues=Problēmas
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Problēmas komentārs
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Izmaiņu pieprasījums
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Problēmas komentārs
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Laidiens
|
||||
settings.event_release_desc=Laidiens publicēts repozitorijā.
|
||||
settings.active=Aktīvs
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Izvietošanas atslēga '%s' tik veiksmīgi pievienota!
|
||||
settings.deploy_key_deletion=Dzēst izvietošanas atslēgu
|
||||
settings.deploy_key_deletion_desc=Dzēšot šo izvietošanas atslēgu tiks noņemta arī ar to saistītā piekļuve šim repozitorijam. Vai vēlaties turpināt?
|
||||
settings.deploy_key_deletion_success=Izvietošanas atslēga tika veiksmīgi izdzēsta!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Pārlūkot izejas kodu
|
||||
diff.parent=vecāks
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Atzīmētās zvaigznītes
|
||||
repos.issues=Problēmas
|
||||
repos.size=Izmērs
|
||||
|
||||
auths.auth_manage_panel=Autentifikācijas pārvaldības panelis
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Pievienot jaunu avotu
|
||||
auths.name=Nosaukums
|
||||
auths.type=Veids
|
||||
auths.enabled=Iespējota
|
||||
auths.default=Default
|
||||
auths.updated=Atjaunināta
|
||||
auths.auth_type=Autentifikācijas tips
|
||||
auths.auth_name=Autentifikācijas nosaukums
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Iespējot TLS šifrēšanu
|
||||
auths.skip_tls_verify=Izlaist TLS verifikāciju
|
||||
auths.pam_service_name=PAM servisa nosaukums
|
||||
auths.enable_auto_register=Iespējot automātisko reģistrāciju
|
||||
auths.tips=Padomi
|
||||
auths.edit=Labot autentifikācijas iestatījumus
|
||||
auths.activated=Autentifikācija ir aktivizēta
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Jauna autentifikācija '%s' tika veiksmīgi pievienota.
|
||||
auths.update_success=Autentifikācijas iestatījumi tika veiksmīgi saglabāti.
|
||||
auths.update=Mainīt autentifikācijas iestatījumus
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Domēns
|
||||
config.ssh_port=Ports
|
||||
config.ssh_listen_port=Klausīšanās ports
|
||||
config.ssh_root_path=Saknes ceļš
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Atslēgu pārbaudes ceļš
|
||||
config.ssh_keygen_path=Keygen ('ssh-keygen') ceļš
|
||||
config.ssh_minimum_key_size_check=Minimālā atslēgas lieluma pārbaude
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Izlaist TLS pārbaudi
|
||||
config.mailer_config=Sūtītāja konfigurācija
|
||||
config.mailer_enabled=Iespējots
|
||||
config.mailer_disable_helo=Atspējot HELO
|
||||
config.mailer_name=Nosaukums
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Resursdators
|
||||
config.mailer_user=Lietotājs
|
||||
config.send_test_mail=Nosūtīt pārbaudes e-pastu
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Sistēmas paziņojumi tika veiksmīgi izdzēstas.
|
||||
|
||||
[action]
|
||||
create_repo=izveidoja repozitoriju <a href="%s">%s</a>
|
||||
fork_repo=atdalīja repozitoriju uz <a href="%s">%s</a>
|
||||
rename_repo=pārsauca repozitoriju no <code>%[1]s</code> uz <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=veica izmaiņu nosūtīšanu atzaram <a href="%[1]s/src/%[2]s">%[3]s</a> repozitorijā <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Salīdzināt šīs %d revīzijas
|
||||
@@ -1300,6 +1311,10 @@ create_branch=izveidoja jaunu atzaru <a href="%[1]s/src/%[2]s">%[3]s</a> repozit
|
||||
delete_branch=izdzēsa atzaru <code>%[2]s</code> repozitorijā <a href="%[1]s">%[3]s</a>
|
||||
push_tag=pievienoja tagu <a href="%s/src/%s">%[2]s</a> repozitorijam <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=izdzēsa tagu <code>%[2]s</code> repozitorijā <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=atdalīja repozitoriju uz <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=atpakaļ
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Heeft u al een account? Meld u nu aan!
|
||||
social_register_hepler_msg=Heeft u al een account? Koppel nu!
|
||||
disable_register_prompt=Sorry, registratie is uitgeschakeld. Neem contact op met de beheerder van deze site.
|
||||
disable_register_mail=Sorry, bevestiging van registratie per e-mail is uitgeschakeld.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Onthoud mij
|
||||
forgot_password=Wachtwoord vergeten
|
||||
forget_password=Wachtwoord vergeten?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Organisatie naam is al in gebruik.
|
||||
team_name_been_taken=Team naam is al in gebruik.
|
||||
email_been_used=e-mailadres is al in gebruik.
|
||||
username_password_incorrect=Gebruikersnaam of wachtwoord is niet correct.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=U heeft een onjuiste repositorie naam ingevoerd.
|
||||
enterred_invalid_owner_name=U heeft een onjuiste eigenaar ingevoerd.
|
||||
enterred_invalid_password=U heeft een onjuiste wachtwoord ingevoerd.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=Then enter passcode:
|
||||
two_factor_verify=Verifiëren
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Laatste synchronisatie
|
||||
watchers=Volgers
|
||||
stargazers=Stargazers
|
||||
forks=Forks
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=De eigenaar heeft maximale creatie limiet van %d repositories bereikt.
|
||||
form.name_reserved=Repositorienaam '%s' is gereserveerd.
|
||||
@@ -488,10 +494,10 @@ editor.edit_this_file=Bestand aanpassen
|
||||
editor.must_be_on_a_branch=Je moet in een branch zijn om aanpassingen te maken of voor te stellen
|
||||
editor.fork_before_edit=Je moet deze repository eerst vorken om dit bestand aan te kunnen passen
|
||||
editor.delete_this_file=Verwijder dit bestand
|
||||
editor.must_have_write_access=You must have write access to make or propose changes to this file
|
||||
editor.must_have_write_access=U moet schrijftoegang hebben om aanpassingen te maken of voor te stellen in dit bestand
|
||||
editor.file_delete_success=Bestand '%s' is succesvol verwijderd!
|
||||
editor.name_your_file=Bestandsnaam...
|
||||
editor.filename_help=To add directory, just type it and press /. To remove a directory, go to the beginning of the field and press backspace.
|
||||
editor.filename_help=Om een map toe te voegen, begin met typen en druk op /. Om een map te verwijderen, ga naar het begin van het veld en druk op backspace.
|
||||
editor.or=of
|
||||
editor.cancel_lower=annuleren
|
||||
editor.commit_changes=Wijzigingen toepassen
|
||||
@@ -499,7 +505,7 @@ editor.add_tmpl='%s/<filename>' toevoegen
|
||||
editor.add='%s' toevoegen
|
||||
editor.update='%s' updaten
|
||||
editor.delete='%s' verwijderen
|
||||
editor.commit_message_desc=Add an optional extended description...
|
||||
editor.commit_message_desc=Voeg een optionele beschrijving toe...
|
||||
editor.commit_directly_to_this_branch=Commit directly to the <strong class="branch-name">%s</strong> branch.
|
||||
editor.create_new_branch=Create a <strong>new branch</strong> for this commit and start a pull request.
|
||||
editor.new_branch_name_desc=Naam nieuwe aftakking...
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=File content has been changed since you starte
|
||||
editor.file_already_exists=A file with name '%s' already exists in this repository.
|
||||
editor.no_changes_to_show=Er zijn geen wijzigingen om weer te geven.
|
||||
editor.fail_to_update_file=Failed to update/create file '%s' with error: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Submap toevoegen...
|
||||
editor.unable_to_upload_files=Failed to upload files to '%s' with error: %v
|
||||
editor.upload_files_to_dir=Bestanden uploaden naar '%s'
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc=Dit pull-request kan niet worden gemerged omdat er
|
||||
pulls.cannot_auto_merge_helper=Gelieve beide versies manueel samen te voegen om de conflicten op te lossen.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Samenvoegen van pull verzoek
|
||||
pulls.open_unmerged_pull_exists=U kan de bewerking 'heropenen' niet uitvoeren omdat er al een pull-aanvraag (#%d) is van dezelfde repository met dezelfde informatie. Voeg deze eerst samen.
|
||||
pulls.delete_branch=Aftakking verwijderen
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style=Naamgevingstijl externe kwestietracker:
|
||||
settings.tracker_issue_style.numeric=Nummeriek
|
||||
settings.tracker_issue_style.alphanumeric=Alfanummeriek
|
||||
settings.tracker_url_format_desc=U kan de aanduidingen <code>{user} {repo} {index}</code> gebruiken voor de gebruikersnaam, de naam van de repository en de lijst van open tickets.
|
||||
settings.pulls_desc=Schakel 'pull request' in om publieke bijdragen te mogelijk te maken
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Gevaren zone
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=De repository met wiki data is succesvol gewist.
|
||||
settings.delete=Verwijder deze repositorie
|
||||
settings.delete_desc=Als u eenmaal een repositorie verwijderd is er geen weg terug. Gelieve zeker te zijn van uw acties.
|
||||
settings.delete_notices_1=- Deze bewerking kan <strong>NIET</strong> ongedaan gemaakt worden.
|
||||
settings.delete_notices_2=- Deze bewerking verwijdert permanent alle informatie van deze repository met inbegrip van Git gegevens, tickets, opmerkingen en de toegang van medewerkers.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- All forks will become independent after deletion.
|
||||
settings.deletion_success=Repository is succesvol verwijderd!
|
||||
settings.update_settings_success=Repositorie instellingen zijn succesvol bijgewerkt.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push naar een repository
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Pull request
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Actief
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Nieuwe deploy sleutel '%s' werd succesvol toegevoegd!
|
||||
settings.deploy_key_deletion=Verwijder deploy sleutel
|
||||
settings.deploy_key_deletion_desc=Het verwijderen van deze deploy sleutel zal alle gerelateerde toegang verwijderen voor deze repositorie. Wilt u doorgaan?
|
||||
settings.deploy_key_deletion_success=Deploy sleutel werd met succes verwijderd!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Bladeren bron
|
||||
diff.parent=bovenliggende
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Sterren
|
||||
repos.issues=Kwesties
|
||||
repos.size=Size
|
||||
|
||||
auths.auth_manage_panel=Authenticatie-beheer paneel
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Nieuwe bron toevoegen
|
||||
auths.name=Naam
|
||||
auths.type=Type
|
||||
auths.enabled=Ingeschakeld
|
||||
auths.default=Default
|
||||
auths.updated=Bijgewerkt
|
||||
auths.auth_type=Authenticatietype
|
||||
auths.auth_name=Authenticatienaam
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Activeer TLS-encryptie
|
||||
auths.skip_tls_verify=TLS-verificatie overslaan
|
||||
auths.pam_service_name=PAM servicenaam
|
||||
auths.enable_auto_register=Activeer automatische registratie
|
||||
auths.tips=Tips
|
||||
auths.edit=Verificatie-instelling bewerken
|
||||
auths.activated=Deze autorisatiemethode is geactiveerd
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Nieuwe authenticatie '%s' werd toegevoegd.
|
||||
auths.update_success=Authenticatie instellingen zijn succesvol gewijzigd.
|
||||
auths.update=Authenticatie-instellingen bijwerken
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Domein
|
||||
config.ssh_port=Poort
|
||||
config.ssh_listen_port=Luister op poort
|
||||
config.ssh_root_path=Root-pad
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Pad voor key-tests
|
||||
config.ssh_keygen_path=Pad van keygen ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Controleer minimale key-lengte
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=TLS certificaat controle overslaan
|
||||
config.mailer_config=Mailerconfiguatie
|
||||
config.mailer_enabled=Ingeschakeld
|
||||
config.mailer_disable_helo=Schakel HELO uit
|
||||
config.mailer_name=Naam
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Gebruiker
|
||||
config.send_test_mail=Testbericht verzenden
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=System notices have been deleted successfully.
|
||||
|
||||
[action]
|
||||
create_repo=repositorie aangemaakt in <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=hernoemde repository van <code>%[1]s</code> naar <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=push update naar <a href="%[1]s/src/%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Toon vergelijking voor deze %d commits
|
||||
@@ -1300,6 +1311,10 @@ create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href=
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=geduwd label <a href="%s/src/%s"> %[2]s</a> naar <a href="%[1]s"> %[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=geleden
|
||||
|
||||
@@ -40,7 +40,7 @@ your_settings=Twoje ustawienia
|
||||
|
||||
activities=Aktywności
|
||||
pull_requests=Oczekujące zmiany
|
||||
issues=Zagadnienia
|
||||
issues=Problemy
|
||||
|
||||
cancel=Anuluj
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Masz już konto? Zaloguj się teraz!
|
||||
social_register_hepler_msg=Masz już konto? Powiąż je teraz!
|
||||
disable_register_prompt=Przepraszamy rejestracja została wyłączona. Prosimy o kontakt z administratorem serwisu.
|
||||
disable_register_mail=Przepraszamy, potwierdzenia rejestracji zostały wyłączone przez administratora.
|
||||
auth_source=Źródło uwierzytelniania
|
||||
local=Lokalne
|
||||
remember_me=Zapamiętaj mnie
|
||||
forgot_password=Zapomniałem hasła
|
||||
forget_password=Zapomniałeś hasła?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Nazwa organizacji jest już zajęta.
|
||||
team_name_been_taken=Nazwa zespołu jest już zajęta.
|
||||
email_been_used=Adres e-mail jest już zarejestrowany.
|
||||
username_password_incorrect=Nazwa użytkownika lub hasło nie jest prawidłowe.
|
||||
auth_source_mismatch=Wybrane źródło uwierzytelniania nie jest związane z użytkownikiem.
|
||||
enterred_invalid_repo_name=Upewnij się, że wprowadzona nazwa repozytorium jest poprawna.
|
||||
enterred_invalid_owner_name=Upewnij się, że nazwa właściciela repozytorium jest poprawna.
|
||||
enterred_invalid_password=Proszę upewnij się, że wprowadzono hasło jest poprawne.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Lub wprowadź sekret:
|
||||
two_factor_then_enter_passcode=Następnie wprowadź kod dostępu:
|
||||
two_factor_verify=Weryfikuj
|
||||
two_factor_invalid_passcode=Wprowadzony kod nie jest prawidłowy, spróbuj ponownie!
|
||||
two_factor_reused_passcode=Ten kod jest już używany, spróbuj ponownie!
|
||||
two_factor_enable_error=Włączenie dwuetapowego uwierzytelniania nie powiodło się: %v
|
||||
two_factor_enable_success=Uwierzytelnianie dwuetapowe Twojego konta zostało włączone pomyślnie!
|
||||
two_factor_recovery_codes_title=Kody odzyskiwania uwierzytelniania dwuetapowego
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Ostatnia synchronizacja
|
||||
watchers=Obserwujący
|
||||
stargazers=Polubienia
|
||||
forks=Forki
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Właściciel osiągnął limit maksymalnej ilości repozytoriów %d.
|
||||
form.name_reserved=Nazwa repozytorium „%s” jest zarezerwowana.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Zawartość pliku została zmieniona od rozpoc
|
||||
editor.file_already_exists=Nazwa pliku '%s' już istnieje w tym repozytorium.
|
||||
editor.no_changes_to_show=Brak zmian do pokazania.
|
||||
editor.fail_to_update_file=Tworzenie/aktualizacja pliku '%s' nie powiodła się z błędem: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Dodaj podkatalog...
|
||||
editor.unable_to_upload_files=Wysyłanie plików do '%s' nie powiodło się z błędem: %v
|
||||
editor.upload_files_to_dir=Prześlij pliki do '%s'
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=Sprawdzanie konfliktów jeszcze trwa, proszę odświeżyć str
|
||||
pulls.can_auto_merge_desc=Pull request może być automatycznie scalony.
|
||||
pulls.cannot_auto_merge_desc=Pull request nie może być automatycznie scalony z powodu konfliktów.
|
||||
pulls.cannot_auto_merge_helper=Proszę scalić ręcznie, aby rozwiązać konflikty.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=Utwórz scalający commit
|
||||
pulls.rebase_before_merging=Rebase przed scaleniem
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Scal Pull Request
|
||||
pulls.open_unmerged_pull_exists=`Nie można otworzyć ponownie ponieważ już istnieje gotowy do scalenia pull request (#%d) z tego samego repozytorium z tymi samymi informacjami.`
|
||||
pulls.delete_branch=Usuń gałąź
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=Styl nazw zewnętrznego systemu zgłaszania problem
|
||||
settings.tracker_issue_style.numeric=Numeryczny
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumeryczne
|
||||
settings.tracker_url_format_desc=Symbole zastępcze <code>{user} {repo} {index}</code> mogą być użyte dla nazwy użytkownika, nazwy repozytorium i numeru problemu.
|
||||
settings.pulls_desc=Włącz obsługę pull request, aby akceptować publiczny wkład
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignoruj zmiany w białych znakach
|
||||
settings.pulls.allow_rebase_merge=Zezwalaj na użycie rebase do scalenia commitów
|
||||
settings.danger_zone=Strefa niebezpieczeństwa
|
||||
settings.cannot_fork_to_same_owner=Nie można sforkować repozytorium do pierwotnego właściciela.
|
||||
settings.new_owner_has_same_repo=Nowy właściciel już posiada repozytorium o tej samej nazwie.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Wypchnięcie
|
||||
settings.event_push_desc=Wypchnięcie (push) do repozytorium Git
|
||||
settings.event_issues=Zagadnienia
|
||||
settings.event_issues_desc=Zagadnienie otwarte, zamknięte, ponownie otwarte, wyedytowane, przypisane, nieprzypisane, etykieta uaktualniona, etykieta wyczyszczona, kamień milowy, kamień milowy usunięty.
|
||||
settings.event_issue_comment=Komentarz zagadnienia
|
||||
settings.event_issue_comment_desc=Komentarz zagadnienia utworzony, wyedytowany lub usunięty.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull request otwarty, zamknięty, ponownie otwarty, edytowany, przypisany, nieprzypisany, etykieta zaktualizowana, etykieta wyczyszczona, kamień milowy, kamień milowy wyczyszczony; lub zsynchronizowany.
|
||||
settings.event_issue_comment=Komentarz zagadnienia
|
||||
settings.event_issue_comment_desc=Komentarz zagadnienia utworzony, wyedytowany lub usunięty.
|
||||
settings.event_release=Wydanie
|
||||
settings.event_release_desc=Wydanie opublikowane w repozytorium.
|
||||
settings.active=Aktywny
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Nowy klucz wdrożenia '%s' został pomyślnie dodany!
|
||||
settings.deploy_key_deletion=Utwórz klucz wdrożenia
|
||||
settings.deploy_key_deletion_desc=Usunięcie tego klucza wdrożenia spowoduje usunięcie powiązanego dostępu do tego repozytorium. Czy chcesz kontynuować?
|
||||
settings.deploy_key_deletion_success=Klucz wdrożenia został pomyślnie usunięty!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Przeglądaj źródła
|
||||
diff.parent=rodzic
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Polubienia
|
||||
repos.issues=Problemy
|
||||
repos.size=Rozmiar
|
||||
|
||||
auths.auth_manage_panel=Panel zarządzania uwierzytelnianiem
|
||||
auths.auth_sources=Źródła uwierzytelniania
|
||||
auths.new=Dodaj nowe źródło
|
||||
auths.name=Nazwa
|
||||
auths.type=Typ
|
||||
auths.enabled=Włączono
|
||||
auths.default=Default
|
||||
auths.updated=Zaktualizowano
|
||||
auths.auth_type=Typ uwierzytelniania
|
||||
auths.auth_name=Nazwa uwierzytelniania
|
||||
@@ -1100,7 +1111,7 @@ auths.domain=Domena
|
||||
auths.host=Host
|
||||
auths.port=Port
|
||||
auths.bind_dn=Bind DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=Możesz użyć '%s' jako symbol zastępczy dla nazwy użytkownika, np. DOM\%s
|
||||
auths.bind_password=Hasło Bind
|
||||
auths.bind_password_helper=Ostrzeżenie: To hasło jest przechowywane w postaci zwykłego tekstu. Nie należy używać wysoko uprzywilejowanego konta.
|
||||
auths.user_base=Baza wyszukiwania
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Włącz szyfrowanie TLS
|
||||
auths.skip_tls_verify=Pomiń weryfikację protokołu TLS
|
||||
auths.pam_service_name=Nazwa usługi PAM
|
||||
auths.enable_auto_register=Włącz automatyczną rejestrację
|
||||
auths.tips=Wskazówki
|
||||
auths.edit=Edytuj ustawienia uwierzytelniania
|
||||
auths.activated=To uwierzytelnienie zostało aktywowane
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Pomyślnie dodano nowe uwierzytelnianie '%s'.
|
||||
auths.update_success=Ustawienia uwierzytelnienia zostały zaktualizowane pomyślnie.
|
||||
auths.update=Aktualizuj ustawienia uwierzytelniania
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=Ten rodzaj autentykacji jest wciąż wykorzystywany przez ni
|
||||
auths.deletion_success=Uwierzytelnienie zostało usunięte pomyślnie!
|
||||
auths.login_source_exist=Login '%s' już istnieje.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(nie ustawiono)
|
||||
config.server_config=Konfiguracja serwera
|
||||
config.app_name=Nazwa aplikacji
|
||||
config.app_ver=Wersja aplikacji
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Domena
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Port nasłuchu
|
||||
config.ssh_root_path=Ścieżka katalogu głównego
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Ścieżka klucza testowego
|
||||
config.ssh_keygen_path=Ścieżka generatora ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Sprawdzanie minimalnej długości klucza
|
||||
@@ -1178,8 +1190,8 @@ config.disable_http_git=Wyłącz HTTP Git
|
||||
config.enable_local_path_migration=Włącz lokalną ścieżkę migracji
|
||||
config.commits_fetch_concurrency=Pobieraj zmiany w trybie równoległym
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
config.http_config=Konfiguracja HTTP
|
||||
config.http_access_control_allow_origin=Kontrola Dostępu Uwzględnia Źródło
|
||||
|
||||
config.db_config=Konfiguracja bazy danych
|
||||
config.db_type=Typ
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Pomiń weryfikację protokołu TLS
|
||||
config.mailer_config=Konfiguracja poczty
|
||||
config.mailer_enabled=Aktywne
|
||||
config.mailer_disable_helo=Wyłącz HELO
|
||||
config.mailer_name=Nazwa
|
||||
config.mailer_subject_prefix=Prefiks tematu
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Użytkownik
|
||||
config.send_test_mail=Wyślij email testowy
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Powiadomienia systemowe zostały pomyślnie usunięte.
|
||||
|
||||
[action]
|
||||
create_repo=tworzy repozytorium <a href="%s">%s</a>
|
||||
fork_repo=rozwidlone repozytorium do <a href="%s"> %s</a>
|
||||
rename_repo=zmienia nazwę repozytorium <code>%[1]s</code> na <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=wypycha do <a href="%[1]s/src/%[2]s">%[3]s</a> w <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Zobacz porównanie tych %d commitów
|
||||
@@ -1300,6 +1311,10 @@ create_branch=stworzył nową gałąź <a href="%[1]s/src/%[2]s">%[3]s</a> at <a
|
||||
delete_branch=usunął gałąź <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=taguje <a href="%s/src/%s">%[2]s</a> w <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=usunięty tag <code>%[2]s</code> % <a href="%[1]s">[3]s</a>
|
||||
fork_repo=rozwidlone repozytorium do <a href="%s"> %s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=temu
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Já tem uma conta? Entre agora!
|
||||
social_register_hepler_msg=Já tem uma conta? Junte-se agora!
|
||||
disable_register_prompt=Desculpe, novos registros estão desabilitados. Por favor entre em contato com o administrador do site.
|
||||
disable_register_mail=Desculpe, a confirmação de registro por e-mail foi desabilitada.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Lembrar de mim
|
||||
forgot_password=Esqueci a senha
|
||||
forget_password=Esqueceu a senha?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Nome da organização já foi tomado.
|
||||
team_name_been_taken=Nome da equipe já existe.
|
||||
email_been_used=Endereço de e-mail já foi usado.
|
||||
username_password_incorrect=Usuário ou senha incorretos.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Por favor certifique-se que informou o nome do repositório corretamente.
|
||||
enterred_invalid_owner_name=Por favor, verifique se o nome do proprietário está correto.
|
||||
enterred_invalid_password=Por favor, verifique se a senha que você digitou está correta.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Ou informe o segredo:
|
||||
two_factor_then_enter_passcode=Em seguida digite a senha:
|
||||
two_factor_verify=Verificar
|
||||
two_factor_invalid_passcode=A senha inserida é inválida. Tente novamente!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Falha ao ativar a autenticação de dois fatores: %v
|
||||
two_factor_enable_success=A autenticação de dois fatores foi ativada para a sua conta com sucesso!
|
||||
two_factor_recovery_codes_title=Códigos de recup. p/ autenticação de dois fatores
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Última sincronização
|
||||
watchers=Observadores
|
||||
stargazers=Usuários que estrelaram
|
||||
forks=Forks
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=O proprietário atingiu o limite máximo de criação de repositórios de %d.
|
||||
form.name_reserved=O nome de repositório '%s' não pode ser usado.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=O conteúdo do arquivo mudou desde que você c
|
||||
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
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Adicionar o subdiretório...
|
||||
editor.unable_to_upload_files=Houve erro ao fazer upload de arquivos para '%s': %v
|
||||
editor.upload_files_to_dir=Enviar arquivos para '%s'
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=A verificação do conflito ainda está em progresso, por favo
|
||||
pulls.can_auto_merge_desc=O merge deste Pull Pequest pode ser aplicado automaticamente.
|
||||
pulls.cannot_auto_merge_desc=O merge deste Pull Request não pode ser aplicado automaticamente pois há conflitos.
|
||||
pulls.cannot_auto_merge_helper=Por favor, aplique o merge manualmente para resolver os conflitos.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.create_merge_commit=Criar commit de um merge
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Solicitação de merge de Pull Request
|
||||
pulls.open_unmerged_pull_exists=`Você não pode executar a operação de reabrir porque já existe um Pull request aberto (#%d) do mesmo repositório com as mesmas informações de merge e está esperando pelo merge.`
|
||||
pulls.delete_branch=Excluir Branch
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=Estilo de nome de issue tracker externo:
|
||||
settings.tracker_issue_style.numeric=Numérico
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumérico
|
||||
settings.tracker_url_format_desc=Você pode usar o espaço reservado <code>{user} {repo} {index}</code> para o nome do usuário, índice de nome e a questão do repositório.
|
||||
settings.pulls_desc=Habilitar Pull Requests para aceitar contribuições públicas
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignorar alterações em espaço em branco
|
||||
settings.pulls.allow_rebase_merge=Permitir rebase para commits via merge
|
||||
settings.danger_zone=Zona de perigo
|
||||
settings.cannot_fork_to_same_owner=Não se pode realizar fork de um repositório para seu dono original.
|
||||
settings.new_owner_has_same_repo=O novo dono já tem um repositório com o mesmo nome. Por favor, escolha outro nome.
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Dados de wiki do repositório foram deletados com
|
||||
settings.delete=Deletar este repositório
|
||||
settings.delete_desc=Uma vez que você remova um repositório, não tem volta. Por favor, tenha certeza.
|
||||
settings.delete_notices_1=-Esta operação <strong>NÃO PODERÁ</strong> ser desfeita.
|
||||
settings.delete_notices_2=- Esta operação irá apagar permanentemente o tudo deste repositório, incluindo os dados do Git, Issues, comentários e acessos dos colaboradores.
|
||||
settings.delete_notices_2=- Esta operação irá apagar permanentemente tudo neste repositório, incluindo commits, issues, comentários, o wiki e colaboradores.
|
||||
settings.delete_notices_fork_1=-Todos os forks se tornarão independentes após a exclusão.
|
||||
settings.deletion_success=Repositório excluído com sucesso!
|
||||
settings.update_settings_success=As opções do repositório foram atualizadas com sucesso.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push para o repositório
|
||||
settings.event_issues=Problemas
|
||||
settings.event_issues_desc=Problema aberto, fechado, reaberto, editado, atribuído, desatribuído, etiqueta atualizada, etiqueta limpa, milestone definido ou milestone indefinido.
|
||||
settings.event_issue_comment=Comentário do Problema
|
||||
settings.event_issue_comment_desc=Comentário do problema criado, editado ou excluído.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull request aberto, fechado, reaberto, editado, atribuído, desatribuído, etiqueta atualizada, etiqueta limpa, milestone definido, milestone indefinido ou sincronizado.
|
||||
settings.event_issue_comment=Comentário do Problema
|
||||
settings.event_issue_comment_desc=Comentário do problema criado, editado ou excluído.
|
||||
settings.event_release=Lançamento
|
||||
settings.event_release_desc=Lançamento publicado em um repositório.
|
||||
settings.active=Ativo
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=A nova chave de Deploy '%s' foi adicionada com sucesso!
|
||||
settings.deploy_key_deletion=Exclusão de chave de Deploy
|
||||
settings.deploy_key_deletion_desc=Excluir esta chave de Deploy removerá permissões de acesso a este repositório. Quer mesmo continuar?
|
||||
settings.deploy_key_deletion_success=Chave de Deploy excluída com sucesso!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Ver código fonte
|
||||
diff.parent=pai
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Favoritos
|
||||
repos.issues=Issues
|
||||
repos.size=Tamanho
|
||||
|
||||
auths.auth_manage_panel=Painel de gerenciamento da autenticação
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Adicionar nova fonte
|
||||
auths.name=Nome
|
||||
auths.type=Tipo
|
||||
auths.enabled=Habilitado
|
||||
auths.default=Default
|
||||
auths.updated=Atualizado
|
||||
auths.auth_type=Tipo de autenticação
|
||||
auths.auth_name=Nome da autenticação
|
||||
@@ -1100,7 +1111,7 @@ auths.domain=Domínio
|
||||
auths.host=Host
|
||||
auths.port=Porta
|
||||
auths.bind_dn=Vincular DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=Você pode usar '%s' como placeholderpara o nome de usuário, por exemplo, DOM\%s
|
||||
auths.bind_password=Vincular senha
|
||||
auths.bind_password_helper=Atenção: Esta senha é armazenada em texto plano. Não use uma conta com muitos privilégios.
|
||||
auths.user_base=Base de pesquisa do usuário
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Habilitar Criptografia TLS
|
||||
auths.skip_tls_verify=Ignorar verificação de TLS
|
||||
auths.pam_service_name=Nome de Serviço PAM
|
||||
auths.enable_auto_register=Habilitar Registro Automático
|
||||
auths.tips=Dicas
|
||||
auths.edit=Editar a configuração de autenticação
|
||||
auths.activated=Esta autenticação foi ativada
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Nova autenticação '%s' foi adicionada com sucesso.
|
||||
auths.update_success=A configuração da autenticação foi atualizada com sucesso.
|
||||
auths.update=Atualizar a configuração da autenticação
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=Esta autenticação ainda é usada por alguns usuários. Por
|
||||
auths.deletion_success=Autenticação excluída com sucesso!
|
||||
auths.login_source_exist=A fonte de login '%s" já existe.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(não definido)
|
||||
config.server_config=Configuração do servidor
|
||||
config.app_name=Nome do aplicativo
|
||||
config.app_ver=Versão do aplicativo
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Domínio
|
||||
config.ssh_port=Porta
|
||||
config.ssh_listen_port=Porta de escuta
|
||||
config.ssh_root_path=Caminho da raiz
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Caminho da chave de teste
|
||||
config.ssh_keygen_path=Caminho do keygen ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Verificar tamanho mínimo da chave
|
||||
@@ -1175,10 +1187,10 @@ config.repo_force_private=Forçar Privado
|
||||
config.max_creation_limit=Limite de Criação
|
||||
config.preferred_licenses=Licenças Preferidas
|
||||
config.disable_http_git=Desabilitar Git por HTTP
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.enable_local_path_migration=Permitir a migração de caminho local
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_config=Configuração de HTTP
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
|
||||
config.db_config=Configuração do banco de dados
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Pular verificação de TLS
|
||||
config.mailer_config=Configuração de envio de e-mail
|
||||
config.mailer_enabled=Habilitado
|
||||
config.mailer_disable_helo=Desabilitar HELO
|
||||
config.mailer_name=Nome
|
||||
config.mailer_subject_prefix=Prefixo do Assunto
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Usuário
|
||||
config.send_test_mail=Enviar email de teste
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Avisos do sistema foram excluídos com sucesso.
|
||||
|
||||
[action]
|
||||
create_repo=repositório criado <a href="%s"> %s</a>
|
||||
fork_repo=repositório criado <a href="%s"> %s</a>
|
||||
rename_repo=renomeou o o repositório <code>%[1]s</code> para <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=pushed para <a href="%[1]s/src/%[2]s">%[3]s</a> em <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Ver comparação entre esses %d commits
|
||||
@@ -1299,7 +1310,11 @@ merge_pull_request=`mesclou o pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=criado novo branch <a href="%[1]s/src/%[2]s">%[3]s</a> em <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=excluído branch <code>%[2]s</code> em <a href="%[1]s">%[3]s</a>
|
||||
push_tag=Foi feito push na tag <a href="%s/src/%s">%[2]s</a> para <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=excluída tag <code>%[2]s</code> em <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=repositório criado <a href="%s"> %s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=atrás
|
||||
|
||||
@@ -98,7 +98,7 @@ server_service_title=Сервер и другие настройки служб
|
||||
offline_mode=Включение офлайн режима
|
||||
offline_mode_popup=Отключить CDN даже в производственном режиме, все файлы ресурсов будут раздаваться локально.
|
||||
disable_gravatar=Отключить службу Gravatar
|
||||
disable_gravatar_popup=Отключить Gravatar и пользовательские источники, все аватары по-умолчанию загружаются пользователями.
|
||||
disable_gravatar_popup=Отключить Gravatar и пользовательские источники. Используются аватары, загружаемые пользователями, или аватары по умолчанию.
|
||||
federated_avatar_lookup=Включить поиск внешних Аватаров
|
||||
federated_avatar_lookup_popup=Включите Поиск федеративного аватара для использования федеративной службы с открытым исходным кодом на основе libravatar.
|
||||
disable_registration=Отключить самостоятельную регистрацию
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Уже есть аккаунт? Авторизуйтесь!
|
||||
social_register_hepler_msg=Уже есть учетная запись? Свяжите ее с соцсетью!
|
||||
disable_register_prompt=Извините, возможность регистрации отключена. Пожалуйста, свяжитесь с администратором сайта.
|
||||
disable_register_mail=К сожалению подтверждение регистрации по почте отключено.
|
||||
auth_source=Тип аутентификации
|
||||
local=Локальный
|
||||
remember_me=Запомнить меня
|
||||
forgot_password=Забыли пароль
|
||||
forget_password=Забыли пароль?
|
||||
@@ -159,7 +161,7 @@ confirmation_mail_sent_prompt=Новое письмо для подтвержд
|
||||
active_your_account=Активируйте свой аккаунт
|
||||
prohibit_login=Вход запрещен
|
||||
prohibit_login_desc=Вход для вашей учетной записи был запрещен, пожалуйста, свяжитесь с администратором сайта.
|
||||
resent_limit_prompt=Извините, вы уже запросили активацию по электронной почте недавно. Пожалуйста, подождите 3 минуты, а затем повторите попытку.
|
||||
resent_limit_prompt=Вы уже запрашивали активацию по электронной почте. Пожалуйста, подождите 3 минуты, а затем повторите попытку.
|
||||
has_unconfirmed_mail=Здравствуйте, %s! У вас есть неподтвержденный адрес электронной почты (<b>%s</b>). Если вам не приходило письмо с подтверждением или нужно выслать новое письмо, нажмите на кнопку ниже.
|
||||
resend_mail=Нажмите здесь, чтобы переотправить активационное письмо
|
||||
send_reset_mail=Нажмите сюда, чтобы отправить письмо для сброса пароля
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Название организации занято.
|
||||
team_name_been_taken=Название команды занято.
|
||||
email_been_used=Адрес электронной почты уже используется.
|
||||
username_password_incorrect=Имя пользователя или пароль не правильный.
|
||||
auth_source_mismatch=Выбранный источник проверки подлинности не связан с пользователем.
|
||||
enterred_invalid_repo_name=Пожалуйста, убедитесь, что введено правильное имя репозитория.
|
||||
enterred_invalid_owner_name=Убедитесь, что введенное имя владельца верное.
|
||||
enterred_invalid_password=Убедитесь, что введенный пароль верен.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Или введите кодовое слово:
|
||||
two_factor_then_enter_passcode=Затем введите пароль:
|
||||
two_factor_verify=Проверить
|
||||
two_factor_invalid_passcode=Введенные пароли не совпадают; пожалуйста, повторите попытку!
|
||||
two_factor_reused_passcode=Введенный вами пароль уже используется, пожалуйста, попробуйте другой!
|
||||
two_factor_enable_error=Ошибка активация двухфакторной аутентификации: %v
|
||||
two_factor_enable_success=Двухфакторная аутентификация активирована для вашей учетной записи!
|
||||
two_factor_recovery_codes_title=Коды восстановления для двухфакторная аутентификации
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Последняя синхронизация
|
||||
watchers=Наблюдатели
|
||||
stargazers=Звездочеты
|
||||
forks=Ответвления
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=У владельца достигнут максимальный предел в %d создаваемых репозиториев.
|
||||
form.name_reserved=Имя репозитория '%s' зарезервировано.
|
||||
@@ -476,7 +482,7 @@ branches.overview=Обзор
|
||||
branches.active_branches=Активные ветки
|
||||
branches.stale_branches=Устаревшие ветки
|
||||
branches.all=Все ветки
|
||||
branches.updated_by=Обновлено %[1]s %[2]s
|
||||
branches.updated_by=Обновлено %[1]s пользователем %[2]s
|
||||
branches.change_default_branch=Change Default Branch
|
||||
|
||||
editor.new_file=Новый файл
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Содержимое файла изменил
|
||||
editor.file_already_exists=Файл с именем «%s» уже существует в этом репозитории.
|
||||
editor.no_changes_to_show=Нет изменений.
|
||||
editor.fail_to_update_file=Не удалось обновить/создать файл «%s» из-за ошибки: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Добавьте подкаталог...
|
||||
editor.unable_to_upload_files=Не удалось загрузить файлы в «%s» из-за ошибки: %v
|
||||
editor.upload_files_to_dir=Загрузить файлы '%s'
|
||||
@@ -616,7 +623,7 @@ pulls.compare_compare=сравнить
|
||||
pulls.filter_branch=Фильтр по ветке
|
||||
pulls.no_results=Результатов не найдено.
|
||||
pulls.nothing_to_compare=Нечего сравнивать, родительская и текущая ветка одинаковые.
|
||||
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
|
||||
pulls.nothing_merge_base=Нечего сравнивать, так так история обеих веток полностью отличается.
|
||||
pulls.has_pull_request=`Уже существует запрос на слияние между двумя целями: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Создать запрос на слияние
|
||||
pulls.title_desc=хочет смерджить %[1]d коммит(ов) из <code>%[2]s</code> в <code>%[3]s</code>
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=Продолжается проверка конфликтов
|
||||
pulls.can_auto_merge_desc=Этот запрос на слияние может быть объединён автоматически.
|
||||
pulls.cannot_auto_merge_desc=Этот запрос на слияние не может быть объединён автоматически.
|
||||
pulls.cannot_auto_merge_helper=Пожалуйста, совершите слияние вручную для урегулирования конфликтов.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=Создать коммит на слияние
|
||||
pulls.rebase_before_merging=Выполнить rebase перед слиянием
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Слить пулл-реквест
|
||||
pulls.open_unmerged_pull_exists=`Вы не можете снова открыть, поскольку уже существует запрос на слияние (#%d) из того же репозитория с той же информацией о слиянии и ожидающий слияния. `
|
||||
pulls.delete_branch=Удалить ветку
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=Стиль Именования Внешней Си
|
||||
settings.tracker_issue_style.numeric=Цифровой
|
||||
settings.tracker_issue_style.alphanumeric=Буквенноцифровой
|
||||
settings.tracker_url_format_desc=Вы можете использовать шаблон <code>{user} {repo} {index}</code> для имени пользователя, репозитория и номера задачи.
|
||||
settings.pulls_desc=Включить публичные запросы на слияние
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Игнорировать изменения в пробельных символах
|
||||
settings.pulls.allow_rebase_merge=Разрешить rebase-слияние
|
||||
settings.danger_zone=Опасная зона
|
||||
settings.cannot_fork_to_same_owner=Вы не можете ответвить репозиторий его же владельцу.
|
||||
settings.new_owner_has_same_repo=У нового владельца уже есть хранилище с таким названием.
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Данные Вики успешно стерты
|
||||
settings.delete=Удалить этот репозиторий
|
||||
settings.delete_desc=Будьте внимательны! Как только вы удалите репозиторий — пути назад не будет.
|
||||
settings.delete_notices_1=- Эта операция <strong>НЕ МОЖЕТ</strong> быть отменена.
|
||||
settings.delete_notices_2=- Эта операция навсегда удалит всё из этого репозитория, включая данные Git, связанные с ним задачи, комментарии и права доступа для сотрудников.
|
||||
settings.delete_notices_2=- Эта операция удалит все в этом репозитории, включая данные Git, задачи, комментарии и доступы для соавторов.
|
||||
settings.delete_notices_fork_1=- Все отвлетвления станут независимыми после удаления.
|
||||
settings.deletion_success=Репозиторий был успешно удалён!
|
||||
settings.update_settings_success=Настройки репозитория обновлены успешно.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Push в репозиторий
|
||||
settings.event_issues=Вопросы
|
||||
settings.event_issues_desc=Задача изменена
|
||||
settings.event_issue_comment=Комментарии в задаче
|
||||
settings.event_issue_comment_desc=Комментарий создан, изменен или удален.
|
||||
settings.event_pull_request=Запросы на слияние
|
||||
settings.event_pull_request_desc=Запрос слияния открыт, закрыт, переоткрыт, изменён, назначен, снят, метка обновлена, метка убрана, добавлен промежуточный этап, убран промежуточный этап или синхронизирован.
|
||||
settings.event_issue_comment=Комментарии в задаче
|
||||
settings.event_issue_comment_desc=Комментарий создан, изменен или удален.
|
||||
settings.event_release=Релиз
|
||||
settings.event_release_desc=Релиз опубликован в репозитории.
|
||||
settings.active=Активен
|
||||
@@ -835,12 +843,12 @@ settings.recent_deliveries=Недавние рассылки
|
||||
settings.hook_type=Тип перехватчика
|
||||
settings.add_slack_hook_desc=Добавить интеграцию с <a href="%s">Slack</a> в ваш репозиторий.
|
||||
settings.add_discord_hook_desc=Добавить интеграцию с <a href="%s">Discord</a> в ваш репозиторий.
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=Добавить интеграцию с <a href="%s">Dingtalk</a> в ваш репозиторий.
|
||||
settings.slack_token=Token
|
||||
settings.slack_domain=Домен
|
||||
settings.slack_channel=Канал
|
||||
settings.deploy_keys=Ключи развертывания
|
||||
settings.deploy_keys_helper=<b>Common Gotcha!</b> Если вы ищите куда добавить персональные публичные ключи, добавьте их в <a href="%s%s">настройках вашего аккаунта</a>.
|
||||
settings.deploy_keys_helper=<b>Подсказка:</b> если вы хотите добавить личные публичные ключи, сделайте это в <a href="%s%s">настройках вашего аккаунта</a>.
|
||||
settings.add_deploy_key=Добавить ключ развертывания
|
||||
settings.deploy_key_desc=Ключи развёртывания доступны только для чтения. Это не то же самое что и SSH-ключи аккаунта.
|
||||
settings.no_deploy_keys=Вы не добавляли ключи развертывания.
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Новый ключ развертывания '%s' у
|
||||
settings.deploy_key_deletion=Удалить ключ развертывания
|
||||
settings.deploy_key_deletion_desc=Удаление ключа развертывания приведет к удалению всех связанных прав доступа к репозиторию. Вы хотите продолжить?
|
||||
settings.deploy_key_deletion_success=Ключ развертывания успешно удален!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Просмотр исходного кода
|
||||
diff.parent=Родитель
|
||||
@@ -908,7 +918,7 @@ invite_someone=Пригласить кого-нибудь
|
||||
teams=Команды
|
||||
lower_members=Участники
|
||||
lower_repositories=Репозитории
|
||||
create_new_team=Создать Новую Команду
|
||||
create_new_team=Создать новую команду
|
||||
org_desc=Описание
|
||||
team_name=Название команды
|
||||
team_desc=Описание
|
||||
@@ -1015,7 +1025,7 @@ dashboard.reinit_missing_repos=Реинициализировать все ре
|
||||
dashboard.reinit_missing_repos_success=Все репозитории с утерянными Git файлами успешно реинициализированы.
|
||||
|
||||
dashboard.server_uptime=Время непрерывной работы сервера
|
||||
dashboard.current_goroutine=Текущий Goroutines
|
||||
dashboard.current_goroutine=Текущих Goroutines
|
||||
dashboard.current_memory_usage=Текущее использование памяти
|
||||
dashboard.total_memory_allocated=Всего памяти выделено
|
||||
dashboard.memory_obtained=Памяти использовано
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=В избранном
|
||||
repos.issues=Задачи
|
||||
repos.size=Размер
|
||||
|
||||
auths.auth_manage_panel=Панель управления аутнентификациями
|
||||
auths.auth_sources=Типы аутентификации
|
||||
auths.new=Добавить новый источник
|
||||
auths.name=Имя
|
||||
auths.type=Тип
|
||||
auths.enabled=Включено
|
||||
auths.default=Default
|
||||
auths.updated=Обновлено
|
||||
auths.auth_type=Тип аутентификации
|
||||
auths.auth_name=Имя аутентификации
|
||||
@@ -1100,17 +1111,17 @@ auths.domain=Домен
|
||||
auths.host=Хост
|
||||
auths.port=Порт
|
||||
auths.bind_dn=Привязать DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=Вы можете использовать '%s' для подстановки имени пользователя, например: DOM\%s
|
||||
auths.bind_password=Привязать пароль
|
||||
auths.bind_password_helper=Внимание: Этот пароль сохранен в небезопасном виде. Не используйте высоко-привилегированную учетную запись.
|
||||
auths.user_base=База для поиска пользователя
|
||||
auths.user_dn=DN пользователя
|
||||
auths.attribute_username=Атрибут username
|
||||
auths.attribute_username_placeholder=Оставьте пустым, чтобы использовать имя пользователя для регистрации.
|
||||
auths.attribute_name=First Name Attribute
|
||||
auths.attribute_name=Имя атрибута
|
||||
auths.attribute_surname=Фамилия аттрибута
|
||||
auths.attribute_mail=Электронная почта аттрибута
|
||||
auths.verify_group_membership=Verify group membership
|
||||
auths.verify_group_membership=Верифицировать членство в группе
|
||||
auths.group_search_base_dn=Base DN для поиска группы
|
||||
auths.group_filter=Групповой фильтр
|
||||
auths.group_attribute_contain_user_list=Атрибут группы, содержащий список пользователей
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Включение шифрования TLS
|
||||
auths.skip_tls_verify=Пропустить проверку TLS
|
||||
auths.pam_service_name=Имя службы PAM
|
||||
auths.enable_auto_register=Включить автоматическую регистрацию
|
||||
auths.tips=Советы
|
||||
auths.edit=Изменить параметры канала аутентификации
|
||||
auths.activated=Эта аутентификация активирована
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Новый канал аутентификации '%s' успешно создан.
|
||||
auths.update_success=Настройки канала аутентификации успешно сохранены.
|
||||
auths.update=Обновить параметры аутентификации
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=Эта проверка подлинности до сих
|
||||
auths.deletion_success=Канал аутентификации успешно удален!
|
||||
auths.login_source_exist=Источник входа '%s' уже существует.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(не задано)
|
||||
config.server_config=Конфигурация сервера
|
||||
config.app_name=Имя приложения
|
||||
config.app_ver=Версия приложения
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Домен
|
||||
config.ssh_port=Порт
|
||||
config.ssh_listen_port=Прослушиваемый порт
|
||||
config.ssh_root_path=Корневой путь
|
||||
config.ssh_rewrite_authorized_keys_at_start=Перезаписать authorized_keys при запуске
|
||||
config.ssh_key_test_path=Путь к тестовому ключу
|
||||
config.ssh_keygen_path=Путь к генератору ключей ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Минимальный размер ключа проверки
|
||||
@@ -1178,8 +1190,8 @@ config.disable_http_git=Выключить HTTP Git
|
||||
config.enable_local_path_migration=Включить миграцию с локального пути
|
||||
config.commits_fetch_concurrency=Параллельность получения коммитов
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
config.http_config=Конфигурация HTTP
|
||||
config.http_access_control_allow_origin=Содержимое заголовка Access Control Allow Origin
|
||||
|
||||
config.db_config=Конфигурация базы данных
|
||||
config.db_type=Тип
|
||||
@@ -1202,15 +1214,15 @@ config.enable_captcha=Включить капчу
|
||||
config.active_code_lives=Время жизни кода для активации
|
||||
config.reset_password_code_lives=Время жизни кода сброса пароля
|
||||
|
||||
config.webhook_config=Настройка автоматического обновления репозиции
|
||||
config.webhook_config=Конфигурация Webhook
|
||||
config.queue_length=Длина очереди
|
||||
config.deliver_timeout=Задержка доставки
|
||||
config.skip_tls_verify=Пропустить TLS проверка
|
||||
config.skip_tls_verify=Пропустить проверку TLS
|
||||
|
||||
config.mailer_config=Настройки почты
|
||||
config.mailer_enabled=Включено
|
||||
config.mailer_disable_helo=Отключить HELO
|
||||
config.mailer_name=Имя
|
||||
config.mailer_subject_prefix=Префикс темы письма
|
||||
config.mailer_host=Сервер
|
||||
config.mailer_user=Пользователь
|
||||
config.send_test_mail=Отправить тестовое письмо
|
||||
@@ -1247,9 +1259,9 @@ config.git_max_diff_line_characters=Максимальное количеств
|
||||
config.git_max_diff_files=Максимальное количество Diff-файлов (при показе)
|
||||
config.git_gc_args=Аргументы GC
|
||||
config.git_migrate_timeout=Тайм-аут миграции
|
||||
config.git_mirror_timeout=Время Ожидания Обновления Зеркала
|
||||
config.git_clone_timeout=Время Ожидания Операции Клонирования
|
||||
config.git_pull_timeout=Время Ожидания Операции Извлечения
|
||||
config.git_mirror_timeout=Время ожидания обновления зеркала
|
||||
config.git_clone_timeout=Время ожидания операции клонирования
|
||||
config.git_pull_timeout=Время ожидания операции извлечения
|
||||
config.git_gc_timeout=Время Ожидания Операции Сборки Мусора
|
||||
|
||||
config.log_config=Конфигурация журнала
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Системное уведомление успешно
|
||||
|
||||
[action]
|
||||
create_repo=создал(а) репозиторий <a href="%s"> %s</a>
|
||||
fork_repo=склонировать репозиторий в <a href="%s">%s</a>
|
||||
rename_repo=переименовал(а) репозиторий из <code>%[1]s</code> на <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=запушил(а) <a href="%[1]s/src/%[2]s">%[3]s</a> в <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Просмотр сравнение для этих %d коммитов
|
||||
@@ -1296,29 +1307,33 @@ create_pull_request=`создал запрос на слияние <a href="%s/p
|
||||
close_pull_request=`закрыл запрос на слияние <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
reopen_pull_request=`открыл снова запрос на слияние <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`слил пул реквест <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=создать новую ветку <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=удален бранч <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
create_branch=создал новую ветку <a href="%[1]s/src/%[2]s">%[3]s</a> в <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=удалил ветку <code>%[2]s</code> в <a href="%[1]s">%[3]s</a>
|
||||
push_tag=запушил(а) метку <a href="%s/src/%s">%[2]s</a> в <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=удален тег <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=склонировать репозиторий в <a href="%s">%s</a>
|
||||
mirror_sync_push=синхронизированные коммиты с <a href="%[1]s/src/%[2]s">%[3]s</a> на <a href="%[1]s">%[4]s</a> из зеркала
|
||||
mirror_sync_create=синхронизированные новые ссылки <a href="%s/src/%s">%[2]s</a> к <a href="%[1]s">%[3]s</a> из зеркала
|
||||
mirror_sync_delete=синхронизированные и удаленные ссылки <code>%[2]s</code> на <a href="%[1]s">%[3]s</a> из зеркала
|
||||
|
||||
[tool]
|
||||
ago=назад
|
||||
from_now=с этого момента
|
||||
now=сейчас
|
||||
1s=1 секунду %s
|
||||
1m=1 минута %s
|
||||
1m=1 минуту %s
|
||||
1h=1 час %s
|
||||
1d=1 день %s
|
||||
1w=1 неделя %s
|
||||
1mon=1 месяц %s
|
||||
1y=1 год %s
|
||||
seconds=секунд %[2]s: %[1]d
|
||||
minutes=минут %[2]s: %[1]d
|
||||
minutes=%d минут %s
|
||||
hours=%d часов %s
|
||||
days=дней %[2]s: %[1]d
|
||||
days=%d дней %s
|
||||
weeks=недель %[2]s: %[1]d
|
||||
months=месяцев %[2]s: %[1]d
|
||||
years=лет %[2]s: %[1]d
|
||||
months=%d месяцев %s
|
||||
years=%d лет %s
|
||||
raw_seconds=секунд
|
||||
raw_minutes=минут
|
||||
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Máte už účet? Prihláste sa teraz!
|
||||
social_register_hepler_msg=Máte už účet? Bindovať teraz!
|
||||
disable_register_prompt=Ospravedlňujeme sa, ale registrácia bola vypnutá. Obráťte sa na administrátora stránky.
|
||||
disable_register_mail=Ospravedlňujeme sa, potvrdenie registračného e-mailu bolo vypnuté.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Zapamätať prihlásenie
|
||||
forgot_password=Zabudnuté heslo
|
||||
forget_password=Zabudli ste heslo?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Názov organizácie už bol použitý.
|
||||
team_name_been_taken=Názov tímu už bol použitý.
|
||||
email_been_used=E-mailová adresa už bola použitá.
|
||||
username_password_incorrect=Používateľské meno alebo heslo nie je správne.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Uistite sa prosím, že názov repozitára, ktorý ste zadali je správny.
|
||||
enterred_invalid_owner_name=Uistite sa prosím, že meno vlastníka, ktoré ste zadali je správne.
|
||||
enterred_invalid_password=Uistite sa prosím, že heslo ktoré ste zadali je správne.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Alebo zadajte tajný kód:
|
||||
two_factor_then_enter_passcode=Potom zadajte prístupový kód:
|
||||
two_factor_verify=Overiť
|
||||
two_factor_invalid_passcode=Zadaný prístupový kód nie je platný, prosím, skúste to znova!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Povolenie dvojfaktorového overenia zlyhalo: %v
|
||||
two_factor_enable_success=Dvojfaktorové overenie bolo pre Váš účet povolené!
|
||||
two_factor_recovery_codes_title=Obnovovacie kódy dvojfaktorového overenia
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Naposledy synchronizované
|
||||
watchers=Pozorovatelia
|
||||
stargazers=Sledujúci
|
||||
forks=Forky
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Vlastník dosiahol maximálneho počtu %d vytvorených repozitárov.
|
||||
form.name_reserved=Repozitár s názvom '%s' je vyhradený.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Obsah súboru sa zmenil od začiatku úprav. <
|
||||
editor.file_already_exists=Súbor '%s' už v tomto repozitári existuje.
|
||||
editor.no_changes_to_show=Žiadne zmeny k zobrazení.
|
||||
editor.fail_to_update_file=Vytvorenie alebo zmena súboru '%s' skončila chybou: '%v'
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Pridať podadresár...
|
||||
editor.unable_to_upload_files=Nepodarilo sa nahrať súbor do '%s'. Chyba: %v
|
||||
editor.upload_files_to_dir=Nahrať súbory do '%s'
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=Kontrola rozporov stále pokračuje, prosím obnovte stránku
|
||||
pulls.can_auto_merge_desc=Tento pull request je možné automaticky zlúčiť.
|
||||
pulls.cannot_auto_merge_desc=Tento pull request nemôže byť automaticky zlúčený pretože obsahuje konflikty.
|
||||
pulls.cannot_auto_merge_helper=Prosím zlúčte manuálne pre vyriešenie konfliktov.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=Vytvoriť zlúčenú revíziu
|
||||
pulls.rebase_before_merging=Rebase pred zlúčením
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Zlúčiť pull request
|
||||
pulls.open_unmerged_pull_exists=`Nemôžete znovu otvoriť požiadavku na stiahnutie, pretože požiadavka na stiahnutie z rovnakého repozitára s rovnakými informáciami pre zlúčenie už existuje (#%d) a čaká na zlúčenie.`
|
||||
pulls.delete_branch=Odstrániť vetvu
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=Štýl pomenovania úloh v externom systéme úloh:
|
||||
settings.tracker_issue_style.numeric=Numerická
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumerické
|
||||
settings.tracker_url_format_desc=Môžete použiť zástupné výrazy <code>{user} {repo} {index}</code> pre užívateľské meno, názov repozitára a číslo úlohy.
|
||||
settings.pulls_desc=Povoliť požiadavky na stiahnutie, aby mohli byť príspevky verejnosti akceptované
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignorovať zmeny v prázdnom priestore
|
||||
settings.pulls.allow_rebase_merge=Povoliť použitie rebase pre zlúčenie revízií
|
||||
settings.danger_zone=Riziková zóna
|
||||
settings.cannot_fork_to_same_owner=Nemôžete rozštiepiť repozitár jeho vlastníkovi.
|
||||
settings.new_owner_has_same_repo=Nový vlastník už repozitár s rovnakým názvom má. Vyberte, prosím, iné meno.
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Data Wiki tohoto repozitára boli zmazané.
|
||||
settings.delete=Odstrániť tento repozitár
|
||||
settings.delete_desc=Hneď ako odstránite repozitár, nie je možné vrátiť sa späť, Buďte si prosím istý.
|
||||
settings.delete_notices_1=- Tuto operáciu <strong>nie je možné</strong> vrátiť.
|
||||
settings.delete_notices_2=Táto operácia permanentne odstráni všetko v tomto repozitári, zahrnujúc dáta Git, úloh, komentárov a prístup spolupracovníkov.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- Po odstránení sa všetky forky stanú nezávislé.
|
||||
settings.deletion_success=Repozitár bol odstránený!
|
||||
settings.update_settings_success=Možnosti repozitára boli zmenené.
|
||||
@@ -778,7 +786,7 @@ settings.remove_collaborator_success=Spolupracovník bol odstránený.
|
||||
settings.search_user_placeholder=Hľadať užívateľa...
|
||||
settings.org_not_allowed_to_be_collaborator=Nieje dovolené pridať organizáciu ako spolupracovníka.
|
||||
settings.add_webhook=Pridať webhook
|
||||
settings.hooks_desc=Webhooks are much like basic HTTP POST event triggers. Whenever something occurs in Gogs, we will handle the notification to the target host you specify. Learn more in this <a target="_blank" href="%s">Webhooks Guide</a>.
|
||||
settings.hooks_desc=Webové háčiky sú podobné základným spúšťačom HTTP, POST udalostí. Kedykoľvek sa niečo stane v Gogs, bude postarané o oznámenie špecifickému cieľovému serveru. Viac o danom sa dozviete v <a target="_blank" href="%s"> príručke webových háčikov </a>.
|
||||
settings.webhook_deletion=Odstrániť webhook
|
||||
settings.webhook_deletion_desc=Odstránením tohto webového háčika sa odstránia všetky informácie o ňom a tiež história volaní. Chcete pokračovať?
|
||||
settings.webhook_deletion_success=Webový háčik bol odstránený!
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push do repozitára
|
||||
settings.event_issues=Úlohy
|
||||
settings.event_issues_desc=Úloha, ktorá je otvorená, uzavretá, znovuotvorená, zmenená, priradená, nepriradená, má zmenený štítok, odstránený štítok, má priradený milník, nemajúca priradený milník.
|
||||
settings.event_issue_comment=Komentár k úlohe
|
||||
settings.event_issue_comment_desc=Komentár k úlohe vytvorený, upravený alebo odstránený.
|
||||
settings.event_pull_request=Pull request
|
||||
settings.event_pull_request_desc=Požiadavka na stiahnutie otvorená, uzavrená, znovuotvorená, zmenená, priradená, nepriradená, zmenený štítok, odstránený štítok, má nastavený štítok, zrušenie nastaveného štítku alebo synchronizovaná.
|
||||
settings.event_issue_comment=Komentár k úlohe
|
||||
settings.event_issue_comment_desc=Komentár k úlohe vytvorený, upravený alebo odstránený.
|
||||
settings.event_release=Vydanie
|
||||
settings.event_release_desc=Vydanie vystavené v repozitári.
|
||||
settings.active=Aktívny
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Nový deploy kľúč '%s' bol úspešne pridaný!
|
||||
settings.deploy_key_deletion=Odstrániť deploy kľúč
|
||||
settings.deploy_key_deletion_desc=Odstránením tohto deploy kľúča sa odstránia všetky súvisiace prístupy k tomuto repozitáru. Chcete pokračovať?
|
||||
settings.deploy_key_deletion_success=Deploy kľúč bol úspešne odstránený!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Prechádzať zdrojové kódy
|
||||
diff.parent=rodič
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Hviezdy
|
||||
repos.issues=Issues
|
||||
repos.size=Veľkosť
|
||||
|
||||
auths.auth_manage_panel=Panel správy spôsobu overovania
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Pridať nový zdroj
|
||||
auths.name=Názov
|
||||
auths.type=Typ
|
||||
auths.enabled=Povolené
|
||||
auths.default=Default
|
||||
auths.updated=Aktualizované
|
||||
auths.auth_type=Typ overenia
|
||||
auths.auth_name=Názov overenia
|
||||
@@ -1100,7 +1111,7 @@ auths.domain=Doména
|
||||
auths.host=Host
|
||||
auths.port=Port
|
||||
auths.bind_dn=Bind DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=Môžete použiť '%s' ako miesto pre užívateľské meno, napr. DOM\%s
|
||||
auths.bind_password=Heslo pripojenia
|
||||
auths.bind_password_helper=Upozornenie: Toto heslo je ukladané nešifrovane. Nepoužívajte pre správcovské účty.
|
||||
auths.user_base=Východzie miesto hľadania úživateľov
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Povoliť šifrovanie TLS
|
||||
auths.skip_tls_verify=Preskočiť overenie TLS
|
||||
auths.pam_service_name=Názov služby PAM
|
||||
auths.enable_auto_register=Povoliť auto registráciu
|
||||
auths.tips=Tipy
|
||||
auths.edit=Upraviť nastavenie overovania
|
||||
auths.activated=Tento spôsob overovania je aktívny
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Nový spôsob overovania '%s' bol pridaný.
|
||||
auths.update_success=Nastavenie overovania bolo zmenené.
|
||||
auths.update=Zmeniť nastavenie overovania
|
||||
@@ -1141,44 +1152,45 @@ auths.still_in_used=Tento spôsob overovania je stále používaný niektorými
|
||||
auths.deletion_success=Spôsob overovania bol odstránený!
|
||||
auths.login_source_exist=Zdroj prihlásenia '%s' už existuje.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(nezadané)
|
||||
config.server_config=Konfigurácia servera
|
||||
config.app_name=Názov aplikácie
|
||||
config.app_ver=Verzia aplikácie
|
||||
config.app_url=URL adresa aplikácie
|
||||
config.domain=Doména
|
||||
config.offline_mode=Offline režim
|
||||
config.disable_router_log=Disable Router Log
|
||||
config.disable_router_log=Vypnúť systémové záznamy smerovača
|
||||
config.run_user=Používateľ pre spustenie aplikácie
|
||||
config.run_mode=Run Mode
|
||||
config.git_version=Git Version
|
||||
config.static_file_root_path=Static File Root Path
|
||||
config.log_file_root_path=Log File Root Path
|
||||
config.reverse_auth_user=Reverse Authentication User
|
||||
config.run_mode=Režim spúšťania
|
||||
config.git_version=Verzia Gitu
|
||||
config.static_file_root_path=Koreňový adresár statického súboru
|
||||
config.log_file_root_path=Koreňový adresár súboru systémových záznamov
|
||||
config.reverse_auth_user=Užívateľ obráteného overenia
|
||||
|
||||
config.ssh_config=SSH Configuration
|
||||
config.ssh_config=Nastavenie SSH
|
||||
config.ssh_enabled=Povolené
|
||||
config.ssh_start_builtin_server=Start Builtin Server
|
||||
config.ssh_start_builtin_server=Spustiť vstavaný server
|
||||
config.ssh_domain=Doména
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Listen Port
|
||||
config.ssh_root_path=Root Path
|
||||
config.ssh_key_test_path=Key Test Path
|
||||
config.ssh_keygen_path=Keygen ('ssh-keygen') Path
|
||||
config.ssh_minimum_key_size_check=Minimum Key Size Check
|
||||
config.ssh_minimum_key_sizes=Minimum Key Sizes
|
||||
config.ssh_listen_port=Port pre poslúchanie
|
||||
config.ssh_root_path=Koreňová cesta
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Cesta testu kľúčov
|
||||
config.ssh_keygen_path=Cesta ku generátoru kľúčov ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Kontrola minimálnej veľkosti kľúčov
|
||||
config.ssh_minimum_key_sizes=Minimálna veľkosť kľúčov
|
||||
|
||||
config.repo_config=Repository Configuration
|
||||
config.repo_config=Nastavenie repozitára
|
||||
config.repo_root_path=Koreňový adresár repozitára
|
||||
config.script_type=Typ skriptu
|
||||
config.repo_force_private=Force Private
|
||||
config.max_creation_limit=Max Creation Limit
|
||||
config.preferred_licenses=Preferred Licenses
|
||||
config.disable_http_git=Disable HTTP Git
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
config.repo_force_private=Vynútiť súkromné
|
||||
config.max_creation_limit=Maximálna lehota pre vytvorenie
|
||||
config.preferred_licenses=Uprednostňované licencie
|
||||
config.disable_http_git=Vypnúť HTTP Git
|
||||
config.enable_local_path_migration=Povoliť migráciu z miestnej cesty
|
||||
config.commits_fetch_concurrency=Súbežnosť vyzdvihnutia revízii
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_config=HTTP konfigurácia
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
|
||||
config.db_config=Konfigurácia databázy
|
||||
@@ -1192,30 +1204,30 @@ config.db_path=Cesta
|
||||
config.db_path_helper=(iba pre "sqlite3" a "tidb")
|
||||
|
||||
config.service_config=Konfigurácia služby
|
||||
config.register_email_confirm=Require Email Confirmation
|
||||
config.register_email_confirm=Vyžadovať potvrdenie e-mailu
|
||||
config.disable_register=Zakázať registráciu
|
||||
config.show_registration_button=Show Register Button
|
||||
config.require_sign_in_view=Require Sign In View
|
||||
config.mail_notify=Mail Notification
|
||||
config.disable_key_size_check=Disable Minimum Key Size Check
|
||||
config.show_registration_button=Zobraziť tlačítko registrácie
|
||||
config.require_sign_in_view=Vyžadovať zobrazenie prihlásenia
|
||||
config.mail_notify=Upozornenie e-mailom
|
||||
config.disable_key_size_check=Vypnúť kontrolu minimálnej veľkosti kľúčov
|
||||
config.enable_captcha=Povoliť Captcha
|
||||
config.active_code_lives=Active Code Lives
|
||||
config.reset_password_code_lives=Reset Password Code Lives
|
||||
config.active_code_lives=Doba života aktívneho kódu
|
||||
config.reset_password_code_lives=Lehota kódu pre obnovu hesla
|
||||
|
||||
config.webhook_config=Webhook Configuration
|
||||
config.webhook_config=Nastavenie webových háčikov
|
||||
config.queue_length=Dĺžka fronty
|
||||
config.deliver_timeout=Deliver Timeout
|
||||
config.skip_tls_verify=Skip TLS Verify
|
||||
config.deliver_timeout=Časový limit doručenia
|
||||
config.skip_tls_verify=Preskočiť overenie TLS
|
||||
|
||||
config.mailer_config=Nastavenie mailera
|
||||
config.mailer_enabled=Povolený
|
||||
config.mailer_disable_helo=Zakázať HELO
|
||||
config.mailer_name=Názov
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Používateľ
|
||||
config.send_test_mail=Send Test Email
|
||||
config.test_mail_failed=Fail to send test email to '%s': %v
|
||||
config.test_mail_sent=Test email has been sent to '%s'.
|
||||
config.send_test_mail=Odoslať testovací E-mail
|
||||
config.test_mail_failed=Odoslanie testovacieho e-mailu na '%s' zlyhalo: %v
|
||||
config.test_mail_sent=Testovací e-mail bol odoslaný na '%s'.
|
||||
|
||||
config.oauth_config=OAuth konfigurácia
|
||||
config.oauth_enabled=Povolený
|
||||
@@ -1229,77 +1241,80 @@ config.session_config=Nastavenie session
|
||||
config.session_provider=Session provider
|
||||
config.provider_config=Nastavenie providera
|
||||
config.cookie_name=Názov cookie
|
||||
config.enable_set_cookie=Enable Set Cookie
|
||||
config.enable_set_cookie=Povoliť nastavenie Cookie
|
||||
config.gc_interval_time=GC Časový interval
|
||||
config.session_life_time=Session Life Time
|
||||
config.session_life_time=Doba trvania relácie
|
||||
config.https_only=Iba HTTPS
|
||||
config.cookie_life_time=Cookie Life Time
|
||||
config.cookie_life_time=Doba života súboru cookie
|
||||
|
||||
config.picture_config=Picture Configuration
|
||||
config.picture_service=Picture Service
|
||||
config.picture_config=Nastavenie ikony užívateľa
|
||||
config.picture_service=Služba ikon užívateľov
|
||||
config.disable_gravatar=Zakázať Gravatar
|
||||
config.enable_federated_avatar=Enable Federated Avatars
|
||||
config.enable_federated_avatar=Povoliť jednotné ikony užívateľov
|
||||
|
||||
config.git_config=Git Configuration
|
||||
config.git_disable_diff_highlight=Disable Diff Syntax Highlight
|
||||
config.git_max_diff_lines=Max Diff Lines (for a single file)
|
||||
config.git_max_diff_line_characters=Max Diff Characters (for a single line)
|
||||
config.git_max_diff_files=Max Diff Files (to be shown)
|
||||
config.git_gc_args=GC Arguments
|
||||
config.git_migrate_timeout=Migration Timeout
|
||||
config.git_mirror_timeout=Mirror Update Timeout
|
||||
config.git_clone_timeout=Clone Operation Timeout
|
||||
config.git_pull_timeout=Pull Operation Timeout
|
||||
config.git_gc_timeout=GC Operation Timeout
|
||||
config.git_config=Konfigurácia Gitu
|
||||
config.git_disable_diff_highlight=Vypnúť zvýraznenie syntaxi v rozdielovom zobrazení
|
||||
config.git_max_diff_lines=Maximálny počet rozdielnych riadkov jedného súboru
|
||||
config.git_max_diff_line_characters=Maximálny počet zobrazených rozdielnych znakov jedného riadku
|
||||
config.git_max_diff_files=Maximálny počet zobrazených rozdielnych súborov
|
||||
config.git_gc_args=Parametre GC
|
||||
config.git_migrate_timeout=Časová lehota prenesenia
|
||||
config.git_mirror_timeout=Časový limit aktualizácie zrkadla
|
||||
config.git_clone_timeout=Časový limit operácie naklonovania
|
||||
config.git_pull_timeout=Časový limit operácie stiahnutia
|
||||
config.git_gc_timeout=Časový limit operácie GC
|
||||
|
||||
config.log_config=Log Configuration
|
||||
config.log_mode=Mode
|
||||
config.log_options=Options
|
||||
config.log_config=Nastavenie systémových záznamov
|
||||
config.log_mode=Režim
|
||||
config.log_options=Možnosti
|
||||
|
||||
monitor.cron=Cron úlohy
|
||||
monitor.name=Názov
|
||||
monitor.schedule=Schedule
|
||||
monitor.schedule=Rozvrh
|
||||
monitor.next=Nabudúce
|
||||
monitor.previous=Predchádzajúci čas
|
||||
monitor.execute_times=Execute Times
|
||||
monitor.process=Running Processes
|
||||
monitor.execute_times=Doby vykonávania
|
||||
monitor.process=Spustené procesy
|
||||
monitor.desc=Popis
|
||||
monitor.start=Start Time
|
||||
monitor.execute_time=Execution Time
|
||||
monitor.start=Čas štartu
|
||||
monitor.execute_time=Doba vykonávania
|
||||
|
||||
notices.system_notice_list=System Notices
|
||||
notices.view_detail_header=View Notice Detail
|
||||
notices.actions=Actions
|
||||
notices.select_all=Select All
|
||||
notices.deselect_all=Deselect All
|
||||
notices.inverse_selection=Inverse Selection
|
||||
notices.delete_selected=Delete Selected
|
||||
notices.delete_all=Delete All Notices
|
||||
notices.system_notice_list=Systémové oznámenia
|
||||
notices.view_detail_header=Zobraziť detail oznámenia
|
||||
notices.actions=Akcie
|
||||
notices.select_all=Vybrať všetko
|
||||
notices.deselect_all=Zrušiť výber všetkých
|
||||
notices.inverse_selection=Prevrátiť výber
|
||||
notices.delete_selected=Odstrániť vybrané
|
||||
notices.delete_all=Odstrániť všetky oznámenia
|
||||
notices.type=Typ
|
||||
notices.type_1=Repozitár
|
||||
notices.desc=Popis
|
||||
notices.op=Op.
|
||||
notices.delete_success=System notices have been deleted successfully.
|
||||
notices.delete_success=Systémové upozornenia boli odstránené.
|
||||
|
||||
[action]
|
||||
create_repo=created repository <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=renamed repository from <code>%[1]s</code> to <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=pushed to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
create_repo=vytvoril repozitár <a href="%s">%s</a>
|
||||
rename_repo=premenoval repozitár z <code>%[1]s</code> na <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=odoslal do vetvy <a href="%[1]s/src/%[2]s">%[3]s</a> v repositáři <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Zobraziť porovnanie týchto %d commitov
|
||||
transfer_repo=transfered repository <code>%s</code> to <a href="%s">%s</a>
|
||||
create_issue=`opened issue <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
close_issue=`closed issue <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
reopen_issue=`reopened issue <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
comment_issue=`commented on issue <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
create_pull_request=`created pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
close_pull_request=`closed pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
reopen_pull_request=`reopened pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`merged pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=pushed tag <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
transfer_repo=predal repozitár <code>%s</code> užívateľovi/organizácii <a href="%s">%s</a>
|
||||
create_issue=`vytvoril úlohu <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
close_issue=`uzatvoril úlohu <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
reopen_issue=`znovuotvoril úlohu <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
comment_issue=`okomentoval úlohu <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
create_pull_request=`vytvoril požiadavku na stiahnutie <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
close_pull_request=`zatvoril požiadavku na stiahnutie <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
reopen_pull_request=`znovuotvoril požiadavku na stiahnutie <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`zlúčil požiadavku na stiahnutie <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=vytvoril novú vetvu <a href="%[1]s/src/%[2]s">%[3]s</a> v <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=odstránil vetvu <code>%[2]s</code> v <a href="%[1]s">%[3]s</a>
|
||||
push_tag=odoslal značku <a href="%s/src/%s">%[2]s</a> do repozitára <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=odstránená značka <code>%[2]s</code> v <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=rozštiepil repozitár do <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=pred
|
||||
@@ -1323,8 +1338,8 @@ raw_seconds=sekúnd
|
||||
raw_minutes=minút
|
||||
|
||||
[dropzone]
|
||||
default_message=Drop files here or click to upload.
|
||||
invalid_input_type=You can't upload files of this type.
|
||||
file_too_big=File size ({{filesize}} MB) exceeds maximum size ({{maxFilesize}} MB).
|
||||
default_message=Pretiahnite súbory sem alebo stlačte Nahrať.
|
||||
invalid_input_type=Nie je možné nahrať súbory tohoto typu.
|
||||
file_too_big=Veľkosť súboru ({{filesize}} MB) je vyššia než maximálna veľkosť ({{maxFilesize}} MB).
|
||||
remove_file=Odstrániť súbor
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ docker_helper=Ако покрећете Gogs унутар Docker, молимо
|
||||
requite_db_desc=Gogs захтева MySQL, PostgreSQL, SQLite3, MSSQL или TiDB.
|
||||
db_title=Подешавања базе
|
||||
db_type=Тип базе података
|
||||
host=Власник
|
||||
host=Домаћин
|
||||
user=Корисник
|
||||
password=Лозинка
|
||||
db_name=Назив базе података
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Већ имате налог? Пријавите се!
|
||||
social_register_hepler_msg=Већ имате налог? Повежите се преко социалне мреже!
|
||||
disable_register_prompt=Извините регистрација је онемогућено. Молимо вас, контактирајте администратора.
|
||||
disable_register_mail=Извините, потврда путем поште је онемогућено.
|
||||
auth_source=Извор аутентикације
|
||||
local=Локално
|
||||
remember_me=Запамти ме
|
||||
forgot_password=Заборављена лозинка
|
||||
forget_password=Заборавили сте лозинку?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Име организације је већ заузето.
|
||||
team_name_been_taken=Име екипе је већ заузето.
|
||||
email_been_used=Адреса е-поште се већ користи.
|
||||
username_password_incorrect=Корисничко име или лозинка није исправна.
|
||||
auth_source_mismatch=Изабрани извор потврде идентитета није повезан са корисником.
|
||||
enterred_invalid_repo_name=Молимо вас, проверите да је име спремишта тачно унешено.
|
||||
enterred_invalid_owner_name=Молимо вас проверите да сте добро унели име власника.
|
||||
enterred_invalid_password=Молимо вас проверите да сте добро унели лозинку.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Или унесите тајну шифру:
|
||||
two_factor_then_enter_passcode=Па унесите шифру:
|
||||
two_factor_verify=Проверити
|
||||
two_factor_invalid_passcode=Шифрa коју сте унели није важећа, молим бас пробајте поново!
|
||||
two_factor_reused_passcode=Љифром који сте унијели се већ користи, молим те пробај опет!
|
||||
two_factor_enable_error=Активација двоструке аутентификације није успела: %v
|
||||
two_factor_enable_success=Двострука аутентификација је успешно активирана за ваш налог!
|
||||
two_factor_recovery_codes_title=Шифра за опоравак за двоструку аутентификацију
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Задње синхронизовано
|
||||
watchers=Посматрачи
|
||||
stargazers=Пратиоци
|
||||
forks=Огранци
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Власник има максимум број %d спремишта.
|
||||
form.name_reserved=Име спремишта '%s' је резервирано.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Садржај датотеке је пром
|
||||
editor.file_already_exists=Датотека са именом '%s' већ постоји у овом спремишту.
|
||||
editor.no_changes_to_show=Нема никаквих промена.
|
||||
editor.fail_to_update_file=Промена над '%s' није успело са грешком: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Додај поддиректоријуми...
|
||||
editor.unable_to_upload_files=Учитање датотеке '%s' није успело са грешкном: %v
|
||||
editor.upload_files_to_dir=Пошаљи датотеке на '%s'
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=Провера још увек у току, молимо ва
|
||||
pulls.can_auto_merge_desc=Овај захтев за спајање може бити обављен аутоматски.
|
||||
pulls.cannot_auto_merge_desc=Овај захтев за спајање не може бити обављен аутоматски због сукоба.
|
||||
pulls.cannot_auto_merge_helper=Молимо вас, обавите спајање ручно да би сте разрешили сукобе.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=Направите спајање
|
||||
pulls.rebase_before_merging=Поврат пре обједињавања
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Обави спајање
|
||||
pulls.open_unmerged_pull_exists=`Неможете поново отворити јер већ постоји захтев за спајање (#%d) из истог спремишта са истим информацијама о спајању и чека спајање.`
|
||||
pulls.delete_branch=Избришите грану
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=Стил именовања на спољном с
|
||||
settings.tracker_issue_style.numeric=Нумерично
|
||||
settings.tracker_issue_style.alphanumeric=Алфанумерично
|
||||
settings.tracker_url_format_desc=Можете да користите шаблон <code>{user} {repo} {index}</code> за корисничко име, спремишта и задатака.
|
||||
settings.pulls_desc=Омогући систем захтева за спајање да би сте преузели јавних доприноса
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Занемарите промене у размаку
|
||||
settings.pulls.allow_rebase_merge=Дозволи употребу поврата да обједините обавезе
|
||||
settings.danger_zone=Опасна зона
|
||||
settings.cannot_fork_to_same_owner=Не можете поделити спремиште власнику.
|
||||
settings.new_owner_has_same_repo=Нови власник већ има спремиште по истим називом. Молимо вас изаберите друго име.
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Вики подаци за ово спремиш
|
||||
settings.delete=Уклони ово спремиште
|
||||
settings.delete_desc=Нећете мочи повратити спремиште после брисања. Молимо вас, будите сигурни.
|
||||
settings.delete_notices_1=- Ова операција <strong>НЕЋЕ МОЧИ</strong> бити укинута.
|
||||
settings.delete_notices_2=- Ова операција ће трајно избрисати све из овог спремишта, укључујући и податке Git, задатци, коментаре и приступ сарадницима.
|
||||
settings.delete_notices_2=- Ова операција ће трајно избрисати све из овог спремишта, укључујући податке Git, задатке, коментаре и приступ сарадницима.
|
||||
settings.delete_notices_fork_1=- Сви огранци ће постати независни после уклањање.
|
||||
settings.deletion_success=Спремиште је успешно избрисано!
|
||||
settings.update_settings_success=Подешавања спремишта су успешно ажурирани.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push у спремиште
|
||||
settings.event_issues=Задаци
|
||||
settings.event_issues_desc=Проблем је отворен, затворен, поново отворен, уређен, додељен, не додељен, етикета је ажурирана, етикета је очишћена, помјерена или демилестирана.
|
||||
settings.event_issue_comment=Коментар проблема
|
||||
settings.event_issue_comment_desc=Коментар проблема креиран, уређиван или избришен.
|
||||
settings.event_pull_request=Захтев за спајање
|
||||
settings.event_pull_request_desc=Захтев за спајање отворенo, затворено, додељено, недодељенo, ознака ажурирана, ознака избрисана, створена прекретница, избрисана прекретница, или синхронизовано.
|
||||
settings.event_issue_comment=Коментар проблема
|
||||
settings.event_issue_comment_desc=Коментар проблема креиран, уређиван или избришен.
|
||||
settings.event_release=Издање
|
||||
settings.event_release_desc=Издање објављено на спремишту.
|
||||
settings.active=Активно
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Нови кључ распоређивање '%s' је
|
||||
settings.deploy_key_deletion=Уклони кључ распоређивањa
|
||||
settings.deploy_key_deletion_desc=Брисање овог кључа за распоређивање ће довести до укидање приступ на овом спремишту. Да ли желите да наставите?
|
||||
settings.deploy_key_deletion_success=Кључ за распоређивање је успешно обрисан!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Преглед изворни кода
|
||||
diff.parent=родитељ
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Фаворити
|
||||
repos.issues=Задаци
|
||||
repos.size=Величина
|
||||
|
||||
auths.auth_manage_panel=Контролна панела аутентикације
|
||||
auths.auth_sources=Извори аутентичности
|
||||
auths.new=Додај нови извор
|
||||
auths.name=Име
|
||||
auths.type=Тип
|
||||
auths.enabled=Омогућено
|
||||
auths.default=Default
|
||||
auths.updated=Ажурирано
|
||||
auths.auth_type=Врста провере аутентичности
|
||||
auths.auth_name=Име провере аутентичности
|
||||
@@ -1100,7 +1111,7 @@ auths.domain=Домен
|
||||
auths.host=Хост
|
||||
auths.port=Порт
|
||||
auths.bind_dn=Bind DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=Можете користити „%s” као место за корисничко име, e.g. DOM\%s
|
||||
auths.bind_password=Bind лозинкa
|
||||
auths.bind_password_helper=Упозорење: Ова лозинка је сачувана у облику нешифрованом текцту. Не користите високо-привилеговану налог.
|
||||
auths.user_base=База претраживање корисника
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Омогући TLS шифровање
|
||||
auths.skip_tls_verify=Прескочи TLS проверу
|
||||
auths.pam_service_name=Назив PAM сервиса
|
||||
auths.enable_auto_register=Омогући аутоматску регистрацију
|
||||
auths.tips=Савети
|
||||
auths.edit=Промените подешавања канала аутентикације
|
||||
auths.activated=Овај канал аутентикације је активан
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Нови канал аутентикације '%s' је успешно креиран.
|
||||
auths.update_success=Подешавања канала аутентикације су успешно ажурирана.
|
||||
auths.update=Ажурирај подешавања аутентикације
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=Овај канал аутентикације још уве
|
||||
auths.deletion_success=Канал аутентикације успешно избрисан!
|
||||
auths.login_source_exist=Улазни извор '%s' већ постоји.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(није подешено)
|
||||
config.server_config=Конфигурација сервера
|
||||
config.app_name=Име апликације
|
||||
config.app_ver=Верзија апликације
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Домен
|
||||
config.ssh_port=Порт
|
||||
config.ssh_listen_port=Порт за слушање
|
||||
config.ssh_root_path=Основни пут
|
||||
config.ssh_rewrite_authorized_keys_at_start=Переписати authorized_keys на почeтку
|
||||
config.ssh_key_test_path=Пут до кључу
|
||||
config.ssh_keygen_path=Пут до генератор кључева ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Минимална величина провера кључа
|
||||
@@ -1178,8 +1190,8 @@ config.disable_http_git=Онемогући HTTP Git
|
||||
config.enable_local_path_migration=Омогући миграцију локалнe путањe
|
||||
config.commits_fetch_concurrency=Предузеће Fetch Concurrency
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
config.http_config=HTTP Конфигурација
|
||||
config.http_access_control_allow_origin=Контрола приступа дозвољава порекло
|
||||
|
||||
config.db_config=Конфигурација базе података
|
||||
config.db_type=Тип
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Прескочи TLS проверу
|
||||
config.mailer_config=Подешавања поште
|
||||
config.mailer_enabled=Омогућено
|
||||
config.mailer_disable_helo=Онемогући HELO
|
||||
config.mailer_name=Име
|
||||
config.mailer_subject_prefix=Префикс Предмета
|
||||
config.mailer_host=Хост
|
||||
config.mailer_user=Корисник
|
||||
config.send_test_mail=Пошаљи тест поруку
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Системска обавештавања су успе
|
||||
|
||||
[action]
|
||||
create_repo=креира спремиште <a href="%s">%s</a>
|
||||
fork_repo=отворио спремиште <a href="%s">%s</a>
|
||||
rename_repo=преимензје спремиште од <code>%[1]s</code> на <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=извршује push на <a href="%[1]s/src/%[2]s">%[3]s</a> у <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Поређење ових %d комита
|
||||
@@ -1300,6 +1311,10 @@ create_branch=створи нову филијалy <a href="%[1]s/src/%[2]s">%[
|
||||
delete_branch=избрисана филијалa <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=извршује push са ознаком <a href="%s/src/%s">%[2]s</a> на <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=избрисана ознака <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=отворио спремиште <a href="%s">%s</a>
|
||||
mirror_sync_push=синхронизује се <a href="%[1]s/src/%[2]s">%[3]s</a> у <a href="%[1]s">%[4]s</a> из огледала
|
||||
mirror_sync_create=синхронизована нова референца <a href="%s/src/%s">%[2]s</a> y <a href="%[1]s">%[3]s</a> из огледала
|
||||
mirror_sync_delete=синхронизоване и избрисане референце <code>%[2]s</code> y <a href="%[1]s">%[3]s</a> из огледала
|
||||
|
||||
[tool]
|
||||
ago=пре
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Har du redan ett konto? Logga in nu!
|
||||
social_register_hepler_msg=Har du redan ett konto? Anslut det nu!
|
||||
disable_register_prompt=Tyvärr är användarregistreringen inaktiverad. Vänligen kontakta din administratör.
|
||||
disable_register_mail=Tyvärr så är registreringsbekräftelemailutskick inaktiverat.
|
||||
auth_source=Authentication Source
|
||||
local=Lokal
|
||||
remember_me=Kom ihåg mig
|
||||
forgot_password=Glömt lösenord
|
||||
forget_password=Glömt lösenordet?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Organisationsnamnet har redan används.
|
||||
team_name_been_taken=Team namn är redan använt.
|
||||
email_been_used=E-postadressen har redan använts.
|
||||
username_password_incorrect=Användarnamnet eller lösenordet är inte korrekt.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Se till att utvecklingskatalogen som du angav är rätt.
|
||||
enterred_invalid_owner_name=Kontrollera att ägarnamnet som du angav är rätt.
|
||||
enterred_invalid_password=Se till att den som lösenord du angett är rätt.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=Ange sedan lösenordet:
|
||||
two_factor_verify=Verifiera
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Senast synkad
|
||||
watchers=Observerare
|
||||
stargazers=Stjärnmärkare
|
||||
forks=Forks
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Ägaren har nått maxgränsen av %d skapade repon.
|
||||
form.name_reserved=Namnet '%s' på utvecklingskatalogen är reserverat.
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Filinnhållet har ändrats sedan du började r
|
||||
editor.file_already_exists=En fil med namnet '%s' finns redan i förrådet.
|
||||
editor.no_changes_to_show=Det finns inga ändringar att visa.
|
||||
editor.fail_to_update_file=Uppdateringen/skapandet av filen '%s' misslyckades med felet: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Lägg till underkatalog...
|
||||
editor.unable_to_upload_files=Uppladdning av filen '%s' misslyckades med felet: %v
|
||||
editor.upload_files_to_dir=Ladda upp filer till '%s'
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc=Denna pull-förfrågan kan inte sammanfogas automat
|
||||
pulls.cannot_auto_merge_helper=Vänligen sammanfoga manuellt för att lösa konflikter.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Sammanfoga Pull-förfrågan
|
||||
pulls.open_unmerged_pull_exists=`Du kan inte utföra återöppningsoperationen eftersom det finns redan en öppen pull-förfrågan (#%d) från samma repo med samma sammanfogningsinformation som väntar på sammanfogning.`
|
||||
pulls.delete_branch=Ta bort gren
|
||||
@@ -707,7 +715,7 @@ settings.protect_require_pull_request_desc=Enable this option to disable direct
|
||||
settings.protect_whitelist_committers=Whitelist who can push to this branch
|
||||
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
|
||||
settings.protect_whitelist_users=Users who can push to this branch
|
||||
settings.protect_whitelist_search_users=Search users
|
||||
settings.protect_whitelist_search_users=Sök användare
|
||||
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
|
||||
settings.protect_whitelist_search_teams=Search teams
|
||||
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style=Namngivningsstil hos det externa ärendehanteringsy
|
||||
settings.tracker_issue_style.numeric=Numerisk
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumerisk
|
||||
settings.tracker_url_format_desc=Du kan använda platshållaren <code>{user} {repo} {index}</code> för användarnamn, reponamn, och ärendenummer.
|
||||
settings.pulls_desc=Aktivera pullförfrågningar för att ta emot publika bidrag
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Högrisksområde
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Förrådets wikidata har tagits bort.
|
||||
settings.delete=Ta Bort Detta Repo
|
||||
settings.delete_desc=När du har tagit bort ett repo så finns det ingen återvändo. Var säker på vad du gör.
|
||||
settings.delete_notices_1=- Denna åtgärd kan <strong>INTE</strong> ångras.
|
||||
settings.delete_notices_2=- Denna åtgärd kommer permanent ta bort hela repot, includerat git-datan, ärenden, kommentarer, och åtkomst för deltagare.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- Alla förgreningar kommer bli oberoende efter borttagning.
|
||||
settings.deletion_success=Repot har tagits bort!
|
||||
settings.update_settings_success=Repo-inställningar har uppdaterats.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Pusha
|
||||
settings.event_push_desc=Uppladdning till ett förråd
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Hämtningsbegäran
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Aktiv
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Den nya driftsättningsnyckeln '%s' har lagts till!
|
||||
settings.deploy_key_deletion=Ta bort distribueringsnyckel
|
||||
settings.deploy_key_deletion_desc=Borttagning av detta distributionsnyckel kommer att ta bort all relaterad åtkomst till det här repot. Vill du fortsätta?
|
||||
settings.deploy_key_deletion_success=Distributionsnyckeln har tagits bort!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Bläddra i källkod
|
||||
diff.parent=förälder
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Stjärnor
|
||||
repos.issues=Ärenden
|
||||
repos.size=Size
|
||||
|
||||
auths.auth_manage_panel=Panel för hantering av autentisering
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Lägg till ny källa
|
||||
auths.name=Namn
|
||||
auths.type=Typ
|
||||
auths.enabled=Aktiv
|
||||
auths.default=Default
|
||||
auths.updated=Uppdaterad
|
||||
auths.auth_type=Autentiseringstyp
|
||||
auths.auth_name=Autentiseringsnamn
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=Aktivera TLS-kryptering
|
||||
auths.skip_tls_verify=Skip TLS Verify
|
||||
auths.pam_service_name=PAM Service Name
|
||||
auths.enable_auto_register=Enable Auto Registration
|
||||
auths.tips=Tips
|
||||
auths.edit=Edit Authentication Setting
|
||||
auths.activated=This authentication is activated
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=New authentication '%s' has been added successfully.
|
||||
auths.update_success=Authentication setting has been updated successfully.
|
||||
auths.update=Update Authentication Setting
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Domän
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Lyssningsport
|
||||
config.ssh_root_path=Rotsökväg
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Testsökväg för nyckel
|
||||
config.ssh_keygen_path=Sökväg för nyckelgenerator ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Kontroll av minsta tillåtna nyckelstorlek
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Skippa verifikation av TLS
|
||||
config.mailer_config=Konfiguration för e-postutskick
|
||||
config.mailer_enabled=Aktiverad
|
||||
config.mailer_disable_helo=Avaktivera HELO
|
||||
config.mailer_name=Namn
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Server
|
||||
config.mailer_user=Användare
|
||||
config.send_test_mail=Skicka testmeddelande
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=System notices have been deleted successfully.
|
||||
|
||||
[action]
|
||||
create_repo=skapade utvecklingskatalog <a href="%s"> %s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=renamed repository from <code>%[1]s</code> to <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=pushed to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=View comparison for these %d commits
|
||||
@@ -1300,6 +1311,10 @@ create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href=
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=pushed tag <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=sedan
|
||||
|
||||
@@ -58,7 +58,7 @@ db_name=Veritabanı Adı
|
||||
db_helper=Lütfen MySQL için INNODB motorunu utf8_general_ci karakter setiyle kullanın.
|
||||
ssl_mode=SSL Biçimi
|
||||
path=Yol
|
||||
sqlite_helper=The file path of SQLite3 database. <br>Please use absolute path when you start as service.
|
||||
sqlite_helper=SQLite3 veritabanının dosya yolu.<br> Lütfen cihaz başladığında kesin yolu kullan.
|
||||
err_empty_db_path=SQLite3 veritabanının yolu boş olamaz.
|
||||
no_admin_and_disable_registration=Bir yönetici hesabı oluşturmadan kullanıcı kaydını devre dışı bırakamazsınız.
|
||||
err_empty_admin_password=Yönetici parolası boş olamaz.
|
||||
@@ -75,7 +75,7 @@ domain_helper=Bu, SSH klon bağlantılarını etkiler.
|
||||
ssh_port=SSH Portu
|
||||
ssh_port_helper=SSH sunucunuzun portu kullanılıyor, boş bırakın ya da SSH özelliğini devre dışı bırakın.
|
||||
use_builtin_ssh_server=Yerleşik SSH sunucusu kullanın
|
||||
use_builtin_ssh_server_popup=Start builtin SSH server for Git operations to distinguish from system SSH daemon.
|
||||
use_builtin_ssh_server_popup=Git işlemlerinde SSH sunucusundan sistem SSH arka plan programından ayrılmaya başlayın.
|
||||
http_port=HTTP Portu
|
||||
http_port_helper=Uygulamanın dinleyeceği port.
|
||||
app_url=Uygulama Bağlantısı
|
||||
@@ -83,7 +83,7 @@ app_url_helper=Bu, HTTP/HTTPS klon bağlantılarını ve e-postadaki bazı kıs
|
||||
log_root_path=Günlük Dosyaları Yolu
|
||||
log_root_path_helper=Günlük dosyalarının yazılacağı dizin.
|
||||
enable_console_mode=Konsol Modunu Etkinleştir
|
||||
enable_console_mode_popup=In addition to file mode, also print logs to console.
|
||||
enable_console_mode_popup=Dosya moduna ek olarak , ayrıca konsolun günlüklerini yazdır.
|
||||
|
||||
optional_title=İsteğe Bağlı Ayarlar
|
||||
email_title=E-Posta Servisi Ayarları
|
||||
@@ -99,8 +99,8 @@ offline_mode=Çevrim Dışı Modu Etkinleştir
|
||||
offline_mode_popup=CDN'i, üretim modunda bile devre dışı bırak, tüm kaynak dosyaları yerel olarak sunulacaktır.
|
||||
disable_gravatar=Gravatar Servisini Devre Dışı Bırak
|
||||
disable_gravatar_popup=Gravatar ve özel kaynakları devre dışı bırak. Tüm avatarlar kullanıcılar tarafından yüklenir veya varsayılan kalır.
|
||||
federated_avatar_lookup=Enable Federated Avatars Lookup
|
||||
federated_avatar_lookup_popup=Enable federated avatars lookup to use federated open source service based on libravatar.
|
||||
federated_avatar_lookup=Birleşmiş Kişi Simgesi Aramasını Etkinleştir
|
||||
federated_avatar_lookup_popup=Libravatar'a dayalı birleşmiş açık kaynaklı hizmeti kullanmak için birleşmiş avatarlar aramasını etkinleştirin.
|
||||
disable_registration=Kendi Kendine Kaydolmayı Devre Dışı Bırak
|
||||
disable_registration_popup=Kullanıcının kendi kendine kaydolmasını devre dışı bırak, yalnızca yönetici yeni hesaplar oluşturabilir.
|
||||
enable_captcha=Captcha'yı Etkinleştir
|
||||
@@ -119,8 +119,8 @@ sqlite3_not_available=Yayın sürümünüz SQLite3'ü desteklemiyor, lütfen %s'
|
||||
invalid_db_setting=Veritabanı ayarları geçersiz: %v
|
||||
invalid_repo_path=Depo kök dizini geçersiz: %v
|
||||
run_user_not_match=Çalıştırma kullanıcısı geçerli kullanıcı değil: %s -> %s
|
||||
smtp_host_missing_port=SMTP Host is missing port in address.
|
||||
invalid_smtp_from=SMTP From field is not valid: %v
|
||||
smtp_host_missing_port=SMTP ana makine adresindeki bağlantı noktası eksik.
|
||||
invalid_smtp_from=SMTP form alanı geçerli değil: %v
|
||||
save_config_failed=Yapılandırma kaydedilemedi: %v
|
||||
invalid_admin_setting=Yönetici hesap ayarları geçersiz: %v
|
||||
install_success=Merhaba! Gogs'u tercih ettiğiniz için çok mutluyuz, keyfini çıkarın!
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Bir hesabınız var mı? Şimdi giriş yapın!
|
||||
social_register_hepler_msg=Zaten bir hesabınız var mı? Şimdi bağlanın!
|
||||
disable_register_prompt=Üzgünüz, kaydolma devre dışı bırakıldı. Lütfen site yöneticisiyle irtibata geçin.
|
||||
disable_register_mail=Üzgünüz, kayıt doğrulama e-postası devre dışı bırakıldı.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Beni Hatırla
|
||||
forgot_password=Parolamı Unuttum
|
||||
forget_password=Parolanızı mı unuttunuz?
|
||||
@@ -170,12 +172,12 @@ password_too_short=Parola uzunluğu 6 karakterden az olamaz.
|
||||
non_local_account=Yerel olmayan hesapların şifrelerini Gogs aracılığıyla değiştiremezsiniz.
|
||||
|
||||
login_two_factor=İki aşamalı doğrulama
|
||||
login_two_factor_passcode=Authentication Passcode
|
||||
login_two_factor_enter_recovery_code=Enter a two-factor recovery code
|
||||
login_two_factor_recovery=Two-factor Recovery
|
||||
login_two_factor_passcode=Kimlik doğrulama Şifre kodu
|
||||
login_two_factor_enter_recovery_code=İki faktörlü kurtarma kodu girin
|
||||
login_two_factor_recovery=İki faktörlü Kurtarma
|
||||
login_two_factor_recovery_code=Kurtarma kodu
|
||||
login_two_factor_enter_passcode=Enter a two-factor passcode
|
||||
login_two_factor_invalid_recovery_code=Recovery code has been used or does not valid.
|
||||
login_two_factor_enter_passcode=İki faktörlü şifre kodu girin
|
||||
login_two_factor_invalid_recovery_code=Kurtarma kodu kullanılmış veya geçerli değil.
|
||||
|
||||
[mail]
|
||||
activate_account=Lütfen hesabınızı aktifleştirin
|
||||
@@ -202,7 +204,7 @@ TeamName=Takım ismi
|
||||
AuthName=Yetkilendirme adı
|
||||
AdminEmail=Yönetici e-postası
|
||||
|
||||
NewBranchName=New branch name
|
||||
NewBranchName=Yeni bölüm adı
|
||||
CommitSummary=İşleme özeti
|
||||
CommitMessage=İşleme mesajı
|
||||
CommitChoice=İşleme tercihi
|
||||
@@ -212,7 +214,7 @@ Content=İçerik
|
||||
require_error=` boş olamaz.`
|
||||
alpha_dash_error=` sadece karakter, rakam veya çizgi(-_) içermelidir.`
|
||||
alpha_dash_dot_error=` sadece karakter, rakam, çizgi(-_) veya nokta içermelidir.`
|
||||
alpha_dash_dot_slash_error=` must be valid alpha or numeric or dash(-_) or dot characters or slashes.`
|
||||
alpha_dash_dot_slash_error=` geçerli alfa veya sayısal veya uzunçizgi(-_) veya nokta karakterler veya eğiz çizgi olmalıdır.`
|
||||
size_error=` uzunluk en fazla %s olmalıdır.`
|
||||
min_size_error=` en az %s karakter içermelidir.`
|
||||
max_size_error=` en fazla %s karakter içermelidir.`
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Bu organizasyon adı zaten alınmış.
|
||||
team_name_been_taken=Bu takım adı zaten alınmış.
|
||||
email_been_used=Bu e-posta adresi zaten kullanımda.
|
||||
username_password_incorrect=Kullanıcı adı veya parola hatalı.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Lütfen girdiğiniz depo isminin doğru olduğundan emin olun.
|
||||
enterred_invalid_owner_name=Lütfen girdiğiniz depo sahibi isminin doğru olduğundan emin olun.
|
||||
enterred_invalid_password=Lütfen girdiğiniz parolanın doğru olduğundan emin olun.
|
||||
@@ -283,8 +286,8 @@ change_username_prompt=Bu değişiklik, hesabınızla ilişkili olan bağlantıl
|
||||
continue=Devam Et
|
||||
cancel=İptal
|
||||
|
||||
lookup_avatar_by_mail=Lookup Avatar by mail
|
||||
federated_avatar_lookup=Federated Avatar Lookup
|
||||
lookup_avatar_by_mail=E-postaya göre Avatar Arama
|
||||
federated_avatar_lookup=Birleşmiş Avatar Araması
|
||||
enable_custom_avatar=Özel Avatarı Etkinleştir
|
||||
choose_new_avatar=Yeni Avatar Seç
|
||||
update_avatar=Avatar Ayarlarını Güncelle
|
||||
@@ -334,30 +337,31 @@ no_activity=Yeni aktivite yok
|
||||
key_state_desc=Bu anahtar son 7 gün içinde kullanıldı
|
||||
token_state_desc=Bu erişim anahtarı son 7 gün içinde kullanıldı
|
||||
|
||||
two_factor=Two-factor Authentication
|
||||
two_factor_status=Status:
|
||||
two_factor=İki faktörlü Kimlik doğrulama
|
||||
two_factor_status=Durum:
|
||||
two_factor_on=Açık
|
||||
two_factor_off=Kapalı
|
||||
two_factor_enable=Enable
|
||||
two_factor_disable=Disable
|
||||
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
|
||||
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
|
||||
two_factor_enable_title=Enable Two-factor Authentication
|
||||
two_factor_scan_qr=Please use your authentication application to scan the image:
|
||||
two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=Then enter passcode:
|
||||
two_factor_verify=Verify
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
two_factor_recovery_codes_desc=Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
|
||||
two_factor_regenerate_recovery_codes=Regenerate Recovery Codes
|
||||
two_factor_regenerate_recovery_codes_error=Regenerate recovery codes failed: %v
|
||||
two_factor_regenerate_recovery_codes_success=New recovery codes has been generated successfully!
|
||||
two_factor_disable_title=Disable Two-factor Authentication
|
||||
two_factor_disable_desc=Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
|
||||
two_factor_disable_success=Two-factor authentication has disabled successfully!
|
||||
two_factor_enable=Etkin
|
||||
two_factor_disable=Devre dışı
|
||||
two_factor_view_recovery_codes=Görüntüle ve güvenli bir yere </a> kurtarma kodlarınızı <a href="%s%s"><a href="%s%s"><a href="%s%s"> kaydedin. Eğer kimlik doğrulama uygulamanız için erişimi kaybetmişseniz bunları şifre kodu olarak kullanabilirsiniz.
|
||||
two_factor_http=HTTP/HTTPS işlemleri için , artık düz kullanıcı adı ve şifre kullanamazsınız. Lütfen oluşturun ve <a href="%[1]s%[2]s"> Kişisel Erişim Jetonu </a> kimlik belgesi olarak kullanın , örneğin <code>%[3]s</code>.
|
||||
two_factor_enable_title=İki faktörlü Kimlik doğrulamasını Etkinleştir
|
||||
two_factor_scan_qr=Lütfen resmi taramak için kimlik doğrulama uygulamanızı kullanın:
|
||||
two_factor_or_enter_secret=Veya parola girin:
|
||||
two_factor_then_enter_passcode=Daha sonra şifre kodunu girin:
|
||||
two_factor_verify=Doğrula
|
||||
two_factor_invalid_passcode=Girdiğiniz şifre kodu geçersiz,lütfen tekrar deneyin!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=İki faktörlü kimlik doğrulama etkinleştirmesi başarısız :%v
|
||||
two_factor_enable_success=Hesabınız için iki faktörlü kimlik doğrulama başarıyla devre dışı bırakıldı!
|
||||
two_factor_recovery_codes_title=İki faktörlü Kimlik doğrulama Kurtarma Kodları
|
||||
two_factor_recovery_codes_desc=Kurtarma kodları , geçici olarak kimlik doğrulama uygulamanızın erişimini kaybettiğinizde kullanıldı. Herbir kurtarma kodu sadece birkez kullanılablir,<b>lütfen bu kodları güvenli bir yere sakla</b>.
|
||||
two_factor_regenerate_recovery_codes=Kurtarma Kodlarını Yeniden oluştur
|
||||
two_factor_regenerate_recovery_codes_error=Kurtarma kodları yeniden oluşturma başarısız: %v
|
||||
two_factor_regenerate_recovery_codes_success=Yeni kurtarma kodları başarıyla oluşturuldu!
|
||||
two_factor_disable_title=İki faktörlü Kimlik doğrulama Devre dışı
|
||||
two_factor_disable_desc=Hesap güvenliği seviyeniz, devre dışı bırakılmış iki faktörlü kimlik doğrulamadan sonra azalacaktır. Devam etmek istiyor musunuz?
|
||||
two_factor_disable_success=İki faktörlü kimli doğrulama başarıyla devre dışı bırakıldı!
|
||||
|
||||
manage_access_token=Kişisel Erişim Anahtarlarını Yönet
|
||||
generate_new_token=Yeni Erişim Anahtarı Üret
|
||||
@@ -371,14 +375,14 @@ access_token_deletion=Kişisel Erişim Anahtarını Silme
|
||||
access_token_deletion_desc=Bu kişisel erişim anahtarını silerseniz uygulamanıza ilişkin tüm erişimler de kaldırılacaktır. Devam etmek istiyor musunuz?
|
||||
delete_token_success=Kişisel erişim anahtarı başarıyla kaldırıldı! Uygulamanızı güncellemeyi de unutmayın!
|
||||
|
||||
orgs.none=You are not a member of any organizations.
|
||||
orgs.leave_title=Leave organization
|
||||
orgs.leave_desc=You will lose access to all repositories and teams after you left the organization. Do you want to continue?
|
||||
orgs.none=Hiçbir organizasyonların üyesi değilsiniz.
|
||||
orgs.leave_title=Organizasyondan ayrıl
|
||||
orgs.leave_desc=Organizasyondan ayrıldıktan sonra tüm depolar ve ekiplere erişimi kaybedeceksiniz.Devam etmek istiyor musunuz?
|
||||
|
||||
repos.leave=Leave
|
||||
repos.leave_title=Leave repository
|
||||
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
|
||||
repos.leave_success=You have left repository '%s' successfully!
|
||||
repos.leave=Ayrıl
|
||||
repos.leave_title=Depodan ayrıl
|
||||
repos.leave_desc=Çıktıktan sonra depo erişimini kaybedeceksiniz.Devam etmek istiyor musunuz?
|
||||
repos.leave_success='%s' deposundan başarıyla ayrıldınız!
|
||||
|
||||
delete_account=Hesabınızı Silin
|
||||
delete_prompt=Bu işlem hesabınızı kalıcı olarak silecektir ve <strong>GERİ ALINAMAZ</strong>!
|
||||
@@ -400,7 +404,7 @@ fork_from=Buradan Çatalla
|
||||
fork_visiblity_helper=Çatallanmış bir deponun görünürlüğünü değiştiremezsiniz.
|
||||
repo_desc=Açıklama
|
||||
repo_lang=Dil
|
||||
repo_gitignore_helper=Select .gitignore templates
|
||||
repo_gitignore_helper=.gitignore şablonlarını seç
|
||||
license=Lisans
|
||||
license_helper=Bir lisans dosyası seçin
|
||||
readme=Benioku
|
||||
@@ -413,10 +417,12 @@ mirror_prune_desc=Uzakta olmayan bütün uzaktan-izleme referanslarını sil
|
||||
mirror_interval=Yansı Aralığı (saat)
|
||||
mirror_address=Yansı Adresi
|
||||
mirror_address_desc=Lütfen gerekli kimlik bilgilerini adreste bulundurun.
|
||||
mirror_last_synced=Last Synced
|
||||
mirror_last_synced=Son Eşzamanlama
|
||||
watchers=İzleyenler
|
||||
stargazers=Yıldızlayanlar
|
||||
forks=Çatallamalar
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Sahip, maksimum %d depo oluşturma limitine ulaşmıştır.
|
||||
form.name_reserved=Depo ismi '%s' başkasına ayrılmış.
|
||||
@@ -427,8 +433,8 @@ migrate_type=Göç Türü
|
||||
migrate_type_helper=Bu depo bir <span class="text blue">yansı</span> olacaktır
|
||||
migrate_repo=Depoyu Göç Ettir
|
||||
migrate.clone_address=Klon Adresi
|
||||
migrate.clone_address_desc=This can be a HTTP/HTTPS/GIT URL.
|
||||
migrate.clone_address_desc_import_local=You're also allowed to migrate a repository by local server path.
|
||||
migrate.clone_address_desc=Bu HTTP/HTTPS/GIT URL'si olabilir.
|
||||
migrate.clone_address_desc_import_local=Bir depoyu yerel sunucu yolu ile taşımanıza izin verilir.
|
||||
migrate.permission_denied=Yerel depoları içeri aktarma izniniz yok.
|
||||
migrate.invalid_local_path=Geçersiz yerel dizin! Böyle bir yol yok ya da bir dizin değil.
|
||||
migrate.failed=Göç başarısız: %v
|
||||
@@ -450,9 +456,9 @@ quick_guide=Hızlı Başlangıç Kılavuzu
|
||||
clone_this_repo=Bu depoyu klonla
|
||||
create_new_repo_command=Komut satırında yeni bir depo oluştur
|
||||
push_exist_repo=Var olan bir depoyu komut satırında gönder
|
||||
bare_message=This repository does not have any content yet.
|
||||
bare_message=Bu depo henüz hiçbir içeriğe sahip değil.
|
||||
|
||||
files=Files
|
||||
files=Dosyalar
|
||||
branch=Dal
|
||||
tree=Ağaç
|
||||
filter_branch_and_tag=Dal veya biçim imini filtrele
|
||||
@@ -463,62 +469,63 @@ pulls=Değişiklik İstekleri
|
||||
labels=Etiketler
|
||||
milestones=Kilometre Taşları
|
||||
commits=İşlemeler
|
||||
git_branches=Branches
|
||||
git_branches=Bölümler
|
||||
releases=Sürümler
|
||||
file_raw=Ham
|
||||
file_history=Geçmiş
|
||||
file_view_raw=Ham Görünüm
|
||||
file_permalink=Kalıcı Bağlantı
|
||||
file_too_large=Bu dosya sergilenmek için çok büyük
|
||||
video_not_supported_in_browser=Your browser doesn't support HTML5 video tag.
|
||||
video_not_supported_in_browser=Tarayıcınız HTML5 video etkiketini desteklemiyor.
|
||||
|
||||
branches.overview=Overview
|
||||
branches.active_branches=Active Branches
|
||||
branches.stale_branches=Stale Branches
|
||||
branches.all=All Branches
|
||||
branches.updated_by=Updated %[1]s by %[2]s
|
||||
branches.change_default_branch=Change Default Branch
|
||||
branches.overview=Genel görünüm
|
||||
branches.active_branches=Aktif Bölümler
|
||||
branches.stale_branches=Eskimiş Bölümler
|
||||
branches.all=Bütün Bölümler
|
||||
branches.updated_by=%[2]s tarafından %[1]s güncellendi
|
||||
branches.change_default_branch=Varsayılan Bölümü Değiştir
|
||||
|
||||
editor.new_file=New file
|
||||
editor.upload_file=Upload file
|
||||
editor.new_file=Yeni dosya
|
||||
editor.upload_file=Dosyayı yükle
|
||||
editor.edit_file=Dosya düzenle
|
||||
editor.preview_changes=Preview Changes
|
||||
editor.preview_changes=Değişiklikleri Önizle
|
||||
editor.cannot_edit_non_text_files=Metin dışı dosyalar düzenlenemez
|
||||
editor.edit_this_file=Edit this file
|
||||
editor.must_be_on_a_branch=You must be on a branch to make or propose changes to this file
|
||||
editor.fork_before_edit=You must fork this repository before editing the file
|
||||
editor.delete_this_file=Delete this file
|
||||
editor.must_have_write_access=You must have write access to make or propose changes to this file
|
||||
editor.file_delete_success=File '%s' has been deleted successfully!
|
||||
editor.name_your_file=Name your file...
|
||||
editor.filename_help=To add directory, just type it and press /. To remove a directory, go to the beginning of the field and press backspace.
|
||||
editor.or=or
|
||||
editor.edit_this_file=Bu dosyayı düzenle
|
||||
editor.must_be_on_a_branch=Bu dosyada değişiklik yapmak için bir bölümde olmalısınız.
|
||||
editor.fork_before_edit=Dosyayı düzenlemeden önce bu depoyu iki kola ayırmalısınız
|
||||
editor.delete_this_file=Bu dosyayı sil
|
||||
editor.must_have_write_access=Bu dosyada değişiklik yapmak için yazma erişiminizin olması gerekir.
|
||||
editor.file_delete_success=%s dosyası başarıyla silindi!
|
||||
editor.name_your_file=Dosyanızın adı...
|
||||
editor.filename_help=Dizin eklemek için, dizini yazın ve / tuşuna basın. Bir dizini kaldırmak için alanın başına gidin ve geri tuşuna basın.
|
||||
editor.or=veya
|
||||
editor.cancel_lower=iptal
|
||||
editor.commit_changes=Commit Changes
|
||||
editor.add_tmpl=Add '%s/<filename>'
|
||||
editor.add=Add '%s'
|
||||
editor.update=Update '%s'
|
||||
editor.delete=Delete '%s'
|
||||
editor.commit_message_desc=Add an optional extended description...
|
||||
editor.commit_directly_to_this_branch=Commit directly to the <strong class="branch-name">%s</strong> branch.
|
||||
editor.create_new_branch=Create a <strong>new branch</strong> for this commit and start a pull request.
|
||||
editor.new_branch_name_desc=New branch name...
|
||||
editor.commit_changes=Değişiklikleri İşle
|
||||
editor.add_tmpl='%s/<filename>' ekle
|
||||
editor.add='%s' ekle
|
||||
editor.update='%s' güncelle
|
||||
editor.delete='%s' sil
|
||||
editor.commit_message_desc=İsteğe bağlı genişletilmiş açıklama ekleyin ...
|
||||
editor.commit_directly_to_this_branch=Doğrudan <strong class="Branch-name">%s</strong> şubesine geçin.
|
||||
editor.create_new_branch=Bu taahhüt ve çekme isteği başlatmak için.<strong>yeni şube</strong> oluşturma.
|
||||
editor.new_branch_name_desc=Yen şube adı...
|
||||
editor.cancel=İptal
|
||||
editor.filename_cannot_be_empty=Filename cannot be empty.
|
||||
editor.branch_already_exists=Branch '%s' already exists in this repository.
|
||||
editor.directory_is_a_file=Entry '%s' in the parent path is a file not a directory in this repository.
|
||||
editor.file_is_a_symlink=The file '%s' is a symlink that cannot be modified from the web editor.
|
||||
editor.filename_is_a_directory=The filename '%s' is an existing directory in this repository.
|
||||
editor.file_editing_no_longer_exists=The file '%s' you are editing no longer exists in the repository.
|
||||
editor.file_changed_while_editing=File content has been changed since you started editing. <a target="_blank" href="%s">Click here</a> to see what have been changed or <strong>press commit again</strong> to overwrite those changes.
|
||||
editor.file_already_exists=A file with name '%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
|
||||
editor.add_subdir=Add subdirectory...
|
||||
editor.unable_to_upload_files=Failed to upload files to '%s' with error: %v
|
||||
editor.upload_files_to_dir=Upload files to '%s'
|
||||
editor.filename_cannot_be_empty=Dosya adı boş olmamalı.
|
||||
editor.branch_already_exists='% s ' Şubesi bu depoda zaten var.
|
||||
editor.directory_is_a_file=Üst yoldaki '% s' girişi, bu depoda bir dizini olmayan dosyadır.
|
||||
editor.file_is_a_symlink='%s' dosyası, web editöründen değiştirilemeyen bir sembolik bağ.
|
||||
editor.filename_is_a_directory=Dosya adı '%s' bu depoda mevcut bir dizindir.
|
||||
editor.file_editing_no_longer_exists=Düzenlediğiniz dosya '%s' artık depoda yok.
|
||||
editor.file_changed_while_editing=Düzenlemeye başladıktan sonra dosya içeriği değiştirildi. Ne değiştiğini görmek için<a target="_blank" href="%s">Buraya tıklayın</a>Bu değişikliklerin üzerine yazmak için.<strong>yeniden yürütmeye basın</strong>.
|
||||
editor.file_already_exists='% s ' adlı bir dosya mevcutta zaten var.
|
||||
editor.no_changes_to_show=Gösterilecek bir değişiklik mevcut değil.
|
||||
editor.fail_to_update_file='%s' dosyası güncellenemedi / oluşturulamadı : %v hatasıyla
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Alt dizin Ekle...
|
||||
editor.unable_to_upload_files='%s' dosyası yüklenemedi : %v hatasıyla
|
||||
editor.upload_files_to_dir=Dosyaları '%s' ye yükle
|
||||
|
||||
commits.commit_history=Commit History
|
||||
commits.commit_history=Geçmişin Kaydedilmesi
|
||||
commits.commits=İşlemeler
|
||||
commits.search=İşleme Arama
|
||||
commits.find=Bul
|
||||
@@ -544,11 +551,11 @@ issues.create=Sorun Oluştur
|
||||
issues.new_label=Yeni Etiket
|
||||
issues.new_label_placeholder=Etiket adı...
|
||||
issues.create_label=Etiket Oluştur
|
||||
issues.label_templates.title=Load a predefined set of labels
|
||||
issues.label_templates.info=There aren't any labels yet. You can click on the "New Label" button above to create one or use a predefined set below.
|
||||
issues.label_templates.helper=Select a label set
|
||||
issues.label_templates.title=Önceden tanımlanmış bir etiket kümesi yükleyin
|
||||
issues.label_templates.info=Henüz etiket yok. Yeni etiket oluşturmak için aşağıdaki "Yeni Etiket" düğmesine tıklayabilir veya aşağıda önceden tanımlanmış bir kümeyi kullanabilirsiniz.
|
||||
issues.label_templates.helper=Bir etiket seti seçin
|
||||
issues.label_templates.use=Use this label set
|
||||
issues.label_templates.fail_to_load_file=Failed to load label template file '%s': %v
|
||||
issues.label_templates.fail_to_load_file=Etiket şablon dosyası '%s' yüklenemedi: %v hatasıyla
|
||||
issues.open_tab=%d açık
|
||||
issues.close_tab=%d kapanmış
|
||||
issues.filter_label=Etiket
|
||||
@@ -590,7 +597,7 @@ issues.commit_ref_at=`<a id="%[1]s" href="#%[1]s">%[2]s</a> işlemesinde bu soru
|
||||
issues.poster=Poster
|
||||
issues.collaborator=Katkıcı
|
||||
issues.owner=Sahibi
|
||||
issues.sign_in_require_desc=<a href="%s">Sign in</a> to join this conversation.
|
||||
issues.sign_in_require_desc=<a href="%s">Giriş yap</a> bu konuşmaya katılmak için.
|
||||
issues.edit=Düzenle
|
||||
issues.cancel=İptal
|
||||
issues.save=Kaydet
|
||||
@@ -605,8 +612,8 @@ issues.label_deletion=Etiket Silme
|
||||
issues.label_deletion_desc=Bu etiketi silerseniz, bu etikete iliştirilmiş sorunlardaki tüm bilgiler de silinecektir. Devam etmek istiyor musunuz?
|
||||
issues.label_deletion_success=Etiket başarıyla silindi!
|
||||
issues.num_participants=%d Katılımcı
|
||||
issues.attachment.open_tab=`Click to see "%s" in a new tab`
|
||||
issues.attachment.download=`Click to download "%s"`
|
||||
issues.attachment.open_tab=` "%s '' yi yeni bir sekmede görmek için tıklayın `
|
||||
issues.attachment.download=`"%s" yi İndirmek için tıklayın `
|
||||
|
||||
pulls.new=Yeni Değişiklik İsteği
|
||||
pulls.compare_changes=Değişiklikleri Karşılaştır
|
||||
@@ -616,7 +623,7 @@ pulls.compare_compare=karşılaştır
|
||||
pulls.filter_branch=Dal filtrele
|
||||
pulls.no_results=Sonuç bulunamadı.
|
||||
pulls.nothing_to_compare=Karşılaştırılacak hiçbir şey yok, çünkü temel ve ana dal aynı.
|
||||
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
|
||||
pulls.nothing_merge_base=Karşılaştırılacak bir şey yok çünkü iki şubenin tarihi tamamen farklı.
|
||||
pulls.has_pull_request=`Bu iki hedef için zaten bir değişiklik isteği var: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Değişiklik İsteği Oluştur
|
||||
pulls.title_desc=<code>%[3]s</code> içindeki <code>%[2]s</code> işlemelerini %[1]d ile birleştirmek istiyor
|
||||
@@ -632,12 +639,13 @@ pulls.is_checking=Çakışma kontrolü sürüyor. Lütfen birkaç dakika içinde
|
||||
pulls.can_auto_merge_desc=Bu değişiklik isteği otomatik olarak birleştirilebilir.
|
||||
pulls.cannot_auto_merge_desc=Çakışmalardan dolayı bu değişiklik isteği otomatik olarak birleştirilemez.
|
||||
pulls.cannot_auto_merge_helper=Çakışmaları çözmek için lütfen elle birleştirin.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=Birleştirme işlemi oluşturma
|
||||
pulls.rebase_before_merging=Birleştirmeden önce yenidenreferans al
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Değişiklik İsteğini Birleştir
|
||||
pulls.open_unmerged_pull_exists=`Yeniden açma işlemini gerçekleştiremezsiniz. Çünkü zaten aynı depodan, aynı birleştirme bilgisiyle açık olan bir değişiklik isteği var (#%d) ve birleştirme bekliyor.`
|
||||
pulls.delete_branch=Delete Branch
|
||||
pulls.delete_branch_has_new_commits=Branch cannot be deleted because it has new commits after mergence.
|
||||
pulls.delete_branch=Şubeyi Sil
|
||||
pulls.delete_branch_has_new_commits=Birleşmeden sonra yeni taahhütlere sahip olduğu için şube silinemez.
|
||||
|
||||
milestones.new=Yeni Kilometre Taşı
|
||||
milestones.open_tab=%d Açık
|
||||
@@ -688,57 +696,57 @@ settings.collaboration.admin=Yönetici
|
||||
settings.collaboration.write=Yaz
|
||||
settings.collaboration.read=Oku
|
||||
settings.collaboration.undefined=Belirsiz
|
||||
settings.branches=Branches
|
||||
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
|
||||
settings.default_branch=Default Branch
|
||||
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
|
||||
settings.update=Update
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_success=Default branch of this repository has been updated successfully!
|
||||
settings.protected_branches=Protected Branches
|
||||
settings.protected_branches_desc=Protect branches from force pushing, accidental deletion and whitelist code committers.
|
||||
settings.choose_a_branch=Choose a branch...
|
||||
settings.branch_protection=Branch Protection
|
||||
settings.branch_protection_desc=Please choose protect options for branch <b>%s</b>.
|
||||
settings.protect_this_branch=Protect this branch
|
||||
settings.protect_this_branch_desc=Disable force pushes and prevent from deletion.
|
||||
settings.protect_require_pull_request=Require pull request instead direct pushing
|
||||
settings.protect_require_pull_request_desc=Enable this option to disable direct pushing to this branch. Commits have to be pushed to another non-protected branch and merged to this branch through pull request.
|
||||
settings.protect_whitelist_committers=Whitelist who can push to this branch
|
||||
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
|
||||
settings.protect_whitelist_users=Users who can push to this branch
|
||||
settings.protect_whitelist_search_users=Search users
|
||||
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
|
||||
settings.protect_whitelist_search_teams=Search teams
|
||||
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
|
||||
settings.branches=Şubeler
|
||||
settings.branches_bare=Korunmasız depo için şubeleri yönetemezsiniz. Önce bir miktar içeriği itin.
|
||||
settings.default_branch=Varsayılan Şube
|
||||
settings.default_branch_desc=Varsayılan şube , kod taahütleri, çekme talepleri ve çevrimiçi düzenleme için "temel" şube olarak kabul edilir.
|
||||
settings.update=Güncelle
|
||||
settings.update_default_branch_unsupported=Varsayılan şubeyi değiştir , sunucu üzerindeki Git sürüm tarafından desteklenmiyor.
|
||||
settings.update_default_branch_success=Bu deponun varsayılan şubesi başarıyla güncellendi!
|
||||
settings.protected_branches=Korunan Şubeler
|
||||
settings.protected_branches_desc=Şubeleri zorla bastırma, yanlışlıkla silme ve beyaz liste kod belirleyicilerine karşı koruyun.
|
||||
settings.choose_a_branch=Şube seç...
|
||||
settings.branch_protection=Şube Koruma
|
||||
settings.branch_protection_desc=Şube için koruma seçeneklerini seçiniz <b>%s</b>.
|
||||
settings.protect_this_branch=Bu şubeyi koru
|
||||
settings.protect_this_branch_desc=Kuvveti devre dışı bırak ve silinmesini önler.
|
||||
settings.protect_require_pull_request=Doğrudan itmek yerine istek istemek gereklidir
|
||||
settings.protect_require_pull_request_desc=Bu şubeye doğrudan itmeyi devre dışı bırakmak için bu seçeneği etkinleştirin. Komiteler korunmayan bir başka şubeye ittirilmeli ve çekme talebi vasıtasıyla bu şubeye birleştirilmelidir.
|
||||
settings.protect_whitelist_committers=Beyaz liste , bu şubeye kim itebilir
|
||||
settings.protect_whitelist_committers_desc=Bu şubeye doğrudan itilen beyaz listeye kişi veya ek ekleyin. Beyaz listeden atlanılacak olan kullanıcılar çekme isteği kontrolüne ihtiyaç duyar.
|
||||
settings.protect_whitelist_users=Bu şubeye itebilecek kullanıcılar
|
||||
settings.protect_whitelist_search_users=Kullanıcıları ara
|
||||
settings.protect_whitelist_teams=Onların üyelerinin bu şubeye itebilecek takımları
|
||||
settings.protect_whitelist_search_teams=Takımları ara
|
||||
settings.update_protect_branch_success=Bu şube için koruma seçenekleri başarıyla güncellendi!
|
||||
settings.hooks=Web İstekleri
|
||||
settings.githooks=Git İstekleri
|
||||
settings.basic_settings=Temel Ayarlar
|
||||
settings.mirror_settings=Mirror Settings
|
||||
settings.sync_mirror=Sync Now
|
||||
settings.mirror_sync_in_progress=Mirror syncing is in progress, please refresh page in about a minute.
|
||||
settings.mirror_settings=Ayna Ayarları
|
||||
settings.sync_mirror=Şimdi Senkronize Et
|
||||
settings.mirror_sync_in_progress=Ayna senkronizasyonu devam ediyor, lütfen sayfayı yaklaşık bir dakika içinde yenileyin.
|
||||
settings.site=Resmi Web Sitesi
|
||||
settings.update_settings=Ayarları Güncelle
|
||||
settings.change_reponame_prompt=Bu değişiklik, bağlantıların depoyla olan ilişkisini etkileyecektir.
|
||||
settings.advanced_settings=Gelişmiş Ayarlar
|
||||
settings.wiki_desc=Viki sıstemini etkinleştir
|
||||
settings.use_internal_wiki=Use builtin wiki
|
||||
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
|
||||
settings.use_internal_wiki=Yerleşik wiki'yi kullanın
|
||||
settings.allow_public_wiki_desc=Depo özel olduğunda wiki'ye herkesin erişmesine izin ver
|
||||
settings.use_external_wiki=Harici Wiki kullan
|
||||
settings.external_wiki_url=Harici Wiki bağlantısı
|
||||
settings.external_wiki_url_desc=Ziyaretçiler, sekmeye tıkladıklarında bağlantıya yönlendirilecektir.
|
||||
settings.issues_desc=Enable issue tracker
|
||||
settings.use_internal_issue_tracker=Use builtin lightweight issue tracker
|
||||
settings.allow_public_issues_desc=Allow public access to issues when repository is private
|
||||
settings.issues_desc=Sorun izleyiciyi etkinleştir
|
||||
settings.use_internal_issue_tracker=Yerleşik hafif sorun izleyici kullanma
|
||||
settings.allow_public_issues_desc=Depo özel olduğunda toplulukların herkese açık olarak erişmesine izin ver
|
||||
settings.use_external_issue_tracker=Harici sorun takipçisi kullan
|
||||
settings.external_tracker_url=External Issue Tracker URL
|
||||
settings.external_tracker_url=Harici Konu İzleyici URL'si
|
||||
settings.external_tracker_url_desc=Visitors will be redirected to URL when they click on the tab.
|
||||
settings.tracker_url_format=Harici Sorun Takipçisi Bağlantı Formatı
|
||||
settings.tracker_issue_style=Harici Hata İzleyicisi Adlandırma Stili:
|
||||
settings.tracker_issue_style.numeric=Sayısal
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumerik
|
||||
settings.tracker_url_format_desc=Kullanıcı adı, depo ismi ve hata indeksi için <code>{kullanıcı} {depo} {indeks}</code> tutucusunu kullanabilirsiniz.
|
||||
settings.pulls_desc=Herkese açık katkıları kabul etmek için değişiklik isteklerini etkinleştirin
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Tehlike Alanı
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Deponun Wiki verisi başarıyla silindi.
|
||||
settings.delete=Bu Depoyu Sil
|
||||
settings.delete_desc=Bir depoyu bir kez sildiğiniz taktirde geri getiremezsiniz. Lütfen emin olun.
|
||||
settings.delete_notices_1=- Bu işlem geri <strong>ALINAMAZ</strong>.
|
||||
settings.delete_notices_2=- Bu işlem, bu depodaki her şeyi (Git verisini, sorunları, yorumları ve katkıcı erişimlerini) kalıcı olarak silecektir.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=Silme işleminden sonra bütün çatallar bağımsız hale gelir.
|
||||
settings.deletion_success=Depo başarıyla silindi!
|
||||
settings.update_settings_success=Depo seçenekleri başarıyla güncellendi.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Bir depoya git push
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Aktif
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=Yeni dağıtım anahtarı '%s' başarıyla eklendi!
|
||||
settings.deploy_key_deletion=Dağıtım Anahtarını Sil
|
||||
settings.deploy_key_deletion_desc=Bu dağıtım anahtarını silerseniz bu depoya ilişkin tüm erişimler de kaldırılacaktır. Devam etmek istiyor musunuz?
|
||||
settings.deploy_key_deletion_success=Dağıtım anahtarı başarıyla silindi!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Kaynağa Gözat
|
||||
diff.parent=ebeveyn
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=Yıldızlar
|
||||
repos.issues=Sorunlar
|
||||
repos.size=Size
|
||||
|
||||
auths.auth_manage_panel=Yetkilendirme Yönetim Paneli
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Yeni Kaynak Ekle
|
||||
auths.name=İsim
|
||||
auths.type=Tür
|
||||
auths.enabled=Aktifleştirilmiş
|
||||
auths.default=Default
|
||||
auths.updated=Güncellendi
|
||||
auths.auth_type=Yetki Türü
|
||||
auths.auth_name=Yetki İsmi
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=TLS Şifrelemeyi Aktifleştir
|
||||
auths.skip_tls_verify=TLS Doğrulamasını Atla
|
||||
auths.pam_service_name=PAM Servis Adı
|
||||
auths.enable_auto_register=Otomatik Kaydolmayı Aktifleştir
|
||||
auths.tips=İpuçları
|
||||
auths.edit=Yetkilendirme Ayarlarını Düzenle
|
||||
auths.activated=Bu yetkilendirme aktif
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Yeni yetkilendirme '%s' başarıyla eklendi.
|
||||
auths.update_success=Yetkilendirme ayarları başarıyla güncellendi.
|
||||
auths.update=Yetkilendirme Ayarlarını Güncelle
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Alan Adı
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Port'u Dinle
|
||||
config.ssh_root_path=Kök Yol
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=Anahtar Test Yolu
|
||||
config.ssh_keygen_path=Keygen ('ssh-keygen') Yolu
|
||||
config.ssh_minimum_key_size_check=Minimum Anahtar Uzunluğu Kontrolü
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=TLS Doğrulamasını Atla
|
||||
config.mailer_config=Mailer Yapılandırması
|
||||
config.mailer_enabled=Aktif
|
||||
config.mailer_disable_helo=HELO'yu Devre Dışı Bırak
|
||||
config.mailer_name=İsim
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=Sunucu
|
||||
config.mailer_user=Kullanıcı
|
||||
config.send_test_mail=Test E-Postası Gönder
|
||||
@@ -1241,20 +1253,20 @@ config.disable_gravatar=Gravatar Hizmet Dışı
|
||||
config.enable_federated_avatar=Enable Federated Avatars
|
||||
|
||||
config.git_config=Git Configuration
|
||||
config.git_disable_diff_highlight=Disable Diff Syntax Highlight
|
||||
config.git_max_diff_lines=Max Diff Lines (for a single file)
|
||||
config.git_max_diff_line_characters=Max Diff Characters (for a single line)
|
||||
config.git_max_diff_files=Max Diff Files (to be shown)
|
||||
config.git_gc_args=GC Arguments
|
||||
config.git_migrate_timeout=Migration Timeout
|
||||
config.git_mirror_timeout=Mirror Update Timeout
|
||||
config.git_clone_timeout=Clone Operation Timeout
|
||||
config.git_pull_timeout=Pull Operation Timeout
|
||||
config.git_gc_timeout=GC Operation Timeout
|
||||
config.git_disable_diff_highlight=Diff İşlemi Sözdizimini Devre Dışı Bırak
|
||||
config.git_max_diff_lines=Maksimum Ayırma Hatları (tek bir dosya için)
|
||||
config.git_max_diff_line_characters=Maksimum Ayırma Karakterleri(tek bir hat için)
|
||||
config.git_max_diff_files=Maksimum Ayırma Dosyaları(gösterilmek için)
|
||||
config.git_gc_args=GC Tartışmaları
|
||||
config.git_migrate_timeout=Geçiş Zaman Aşımı
|
||||
config.git_mirror_timeout=Yansımayı Güncelle Zaman Aşımı
|
||||
config.git_clone_timeout=Klon Çalışma Zaman Aşımı
|
||||
config.git_pull_timeout=Çekme İşlemi Zaman Aşımı
|
||||
config.git_gc_timeout=GC İşlem Zaman Aşımı
|
||||
|
||||
config.log_config=Log Yapılandırması
|
||||
config.log_mode=Mode
|
||||
config.log_options=Options
|
||||
config.log_mode=Mod
|
||||
config.log_options=Seçenekler
|
||||
|
||||
monitor.cron=Cron Görevleri
|
||||
monitor.name=İsim
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Sistem bildirimleri başarıyla silindi.
|
||||
|
||||
[action]
|
||||
create_repo=depo <a href="%s">%s</a> oluşturuldu
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=<code>%[1]s</code> olan depo adını <a href="%[2]s">%[3]s</a> buna çevirdi
|
||||
commit_repo=<a href="%[1]s">%[4]s</a> zamanında <a href="%[1]s/src/%[2]s">%[3]s</a> buraya push yaptı
|
||||
compare_commits=Bu %d işlemeler için karşılaştırmaları görüntüle
|
||||
@@ -1296,10 +1307,14 @@ create_pull_request=`<a href="%s/pulls/%s">%s#%[2]s</a> değişiklik isteğini o
|
||||
close_pull_request=`<a href="%s/pulls/%s">%s#%[2]s</a> değişiklik isteğini kapattı`
|
||||
reopen_pull_request=`<a href="%s/pulls/%s">%s#%[2]s</a> değişiklik isteğini tekrar açtı`
|
||||
merge_pull_request=`<a href="%s/pulls/%s">%s#%[2]s</a> değişim isteğini birleştirdi`
|
||||
create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
create_branch=<a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> yeni şubesi oluşturuldu
|
||||
delete_branch=<code>%[2]s</code> 'ın <a href="%[1]s">%[3]s</a> şubesi silindi
|
||||
push_tag=etiket <a href="%s/src/%s">%[2]s</a> <a href="%[1]s">%[3]s</a>'a itelendi
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=<code>%[2]s</code> 'ın <a href="%[1]s">%[3]s</a> etiketi silindi
|
||||
fork_repo=<a href="%s">%s</a> için bir depo çatalladı
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=önce
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
app_desc=Зручний сервіс власного Git хостінгу, написаний на Go
|
||||
app_desc=Зручний сервіс власного Git хостінгу
|
||||
|
||||
home=Головна сторінка
|
||||
dashboard=Щиток
|
||||
@@ -73,7 +73,7 @@ run_user_helper=Користувач мусить мати доступ до к
|
||||
domain=Домен
|
||||
domain_helper=Це впливає на клонування через SSH.
|
||||
ssh_port=SSH порт
|
||||
ssh_port_helper=Номер порту, який використовує SSH сервер. Для заборони опції SSH залиште його пустим.
|
||||
ssh_port_helper=Номер порту, який використовує SSH сервер. Для заборони опції SSH залиште його порожнім.
|
||||
use_builtin_ssh_server=Користуватися вбудованим SSH сервером
|
||||
use_builtin_ssh_server_popup=Запустити вбудований SSH сервер для операцій git інакший за системний SSH демон.
|
||||
http_port=Порт HTTP
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=Вже зареєстровані? Увійдіть зара
|
||||
social_register_hepler_msg=Вже зареєстровані? Прив'яжіть зараз!
|
||||
disable_register_prompt=Вибачте, реєстрація відключена. Будь ласка, зв'яжіться з адміністратором сайту.
|
||||
disable_register_mail=На жаль, підтвердження реєстрації на електрону пошту було відключено.
|
||||
auth_source=Джерело автентифікації
|
||||
local=Локальний
|
||||
remember_me=Запам'ятати мене
|
||||
forgot_password=Забув пароль
|
||||
forget_password=Забули пароль?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=Назва організаціі вже використо
|
||||
team_name_been_taken=Назва команди вже використовується.
|
||||
email_been_used=Адреса електронної пошти вже використовується.
|
||||
username_password_incorrect=Ім'я користувача або пароль помилкові.
|
||||
auth_source_mismatch=Обране джерело автентифікації не асоційовано з користувачем.
|
||||
enterred_invalid_repo_name=Переконайтеся, що ви ввели назву сховища правильно.
|
||||
enterred_invalid_owner_name=Переконайтеся, що ви ввели ім'я власника правильно.
|
||||
enterred_invalid_password=Переконайтеся, що ви ввели пароль правильно.
|
||||
@@ -316,7 +319,7 @@ add_email_success=Вашу нову адресу електронної пошт
|
||||
|
||||
manage_ssh_keys=Керувати ключами SSH
|
||||
add_key=Додати ключ
|
||||
ssh_desc=Це список ключів SSH, пов'язані з вашим обліковим записом. Видаліть будь-які ключі, які не є вашими.
|
||||
ssh_desc=Це список ключів SSH, пов'язані з вашим обліковим записом. Ці ключі дозволять кому завгодно отримувати доступ до вашого репозиторію, тож будьте певні що ви впізнаєте їх.
|
||||
ssh_helper=<strong>Потрібна допомога?</strong> Дивіться гід на GitHub з <a href="%s"> генерації ключів SSH</a> або виправлення <a href="%s">типових неполадок SSH</a>.
|
||||
add_new_key=Додати SSH ключа
|
||||
ssh_key_been_used=Було використано публічний ключ.
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=Або введіть секрет:
|
||||
two_factor_then_enter_passcode=Потім введіть пароль:
|
||||
two_factor_verify=Перевірити
|
||||
two_factor_invalid_passcode=Введений пароль не валідний, будь ласка, спробуйте ще раз!
|
||||
two_factor_reused_passcode=Введений пасскод вже було використано. Будь ласка, спробуйте інший!
|
||||
two_factor_enable_error=Увімкнення двофакторної автентифікації не вдалося: %v
|
||||
two_factor_enable_success=Двофакторну автентифікацію успішно активовано для вашого акаунту!
|
||||
two_factor_recovery_codes_title=Пароль відновлення для двофакторної автентифікації
|
||||
@@ -368,7 +372,7 @@ generate_token=Створити жетон
|
||||
generate_token_succees=Новий жетон було створено успішно! Переконайтеся, що Ви скопіювали Ваш новий жетон доступу. Ви не зможете побачити його знову!
|
||||
delete_token=Видалити
|
||||
access_token_deletion=Видалення токену персонального доступу
|
||||
access_token_deletion_desc=Видалення цього токену призведе до видалення усіх пов’язаних доступів додатку. Продовжити?
|
||||
access_token_deletion_desc=Видалення цього токену призведе до неможливості доступу усіх пов’язаних додатків. Продовжити?
|
||||
delete_token_success=Персональний токен було видалено. Не забудьте перевірити ваш додаток.
|
||||
|
||||
orgs.none=Ви не є членом будь-якої організації.
|
||||
@@ -397,7 +401,7 @@ visiblity_fork_helper=(Зміна даного значення вплине н
|
||||
clone_helper=Потрібна допомога у клонуванні? Відвідайте <a target="_blank" href="%s"> допомогу</a>!
|
||||
fork_repo=Відгалужити репозиторій
|
||||
fork_from=Відгалужити з
|
||||
fork_visiblity_helper=Не можна змінити видимість відгалуженого репозиторія
|
||||
fork_visiblity_helper=Не можна змінити видимість відгалуженого репозиторія.
|
||||
repo_desc=Опис
|
||||
repo_lang=Мова
|
||||
repo_gitignore_helper=Виберіть .gitignore файли
|
||||
@@ -410,13 +414,15 @@ create_repo=Створити репозиторій
|
||||
default_branch=Головна гілка
|
||||
mirror_prune=Підчищати
|
||||
mirror_prune_desc=Видалити всі відслідковувані посилання, які більше не існують на віддаленому
|
||||
mirror_interval=Інтервал джеркалювання (години)
|
||||
mirror_interval=Інтервал дзеркалювання (години)
|
||||
mirror_address=Адреса дзеркала
|
||||
mirror_address_desc=Будь ласка, вкажіть необхідні дані користувача у адресі.
|
||||
mirror_last_synced=Востаннє синхронізовано
|
||||
watchers=Спостерігачі
|
||||
stargazers=Шанувальники
|
||||
forks=Відгалуження
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Власник досягнув максимальної кількості у %d створених репозиторіїв.
|
||||
form.name_reserved=Назва репозиторія '%s' зарезервовано.
|
||||
@@ -491,7 +497,7 @@ editor.delete_this_file=Видалити цей файл
|
||||
editor.must_have_write_access=Ви повинні мати доступ на запис щоб запропонувати зміни до цього файлу
|
||||
editor.file_delete_success=Файл '%s' успішно видалено!
|
||||
editor.name_your_file=Дайте назву файлу...
|
||||
editor.filename_help=Щоб додати каталог, просто наберіть його ім'я, та натисніть /. Щоб видалити каталог, перейдіь на початок поля й натисніть клавішу backspace.
|
||||
editor.filename_help=Щоб додати каталог, просто наберіть його ім'я, та натисніть /. Щоб видалити каталог, перейдіть на початок поля й натисніть клавішу backspace.
|
||||
editor.or=Або
|
||||
editor.cancel_lower=Скасувати
|
||||
editor.commit_changes=Зафіксувати зміни
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=Вміст файлу було змінено
|
||||
editor.file_already_exists=Файл на ім'я '%s' вже присутній у репозиторії.
|
||||
editor.no_changes_to_show=Нема змін для показу.
|
||||
editor.fail_to_update_file=Не вдалося оновити/створити файл '%s' через помилку: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Додати підкаталогу...
|
||||
editor.unable_to_upload_files=Не вдалося завантажити файли до '%s' через помилку: %v
|
||||
editor.upload_files_to_dir=Завантажувати файли до '%s'
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=Перевірка конфліктів продовжуєть
|
||||
pulls.can_auto_merge_desc=Цей запрос може бути влитий автоматично.
|
||||
pulls.cannot_auto_merge_desc=Цей запрос не може бути влитий автоматично, тому що він має конфлікти.
|
||||
pulls.cannot_auto_merge_helper=Будь ласка влийте вручну щоб врегулювати конфлікти.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=Створити коміт на злиття
|
||||
pulls.rebase_before_merging=Перебазувати перед об'єднанням
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Влити запрос на злиття
|
||||
pulls.open_unmerged_pull_exists=`Ви не можете перевідкрити, бо вже існує запрос на злиття (#%d) з того самого репозиторію, з тією самою інформацією про злиття, та він очікує на влиття.`
|
||||
pulls.delete_branch=Видалити гілку
|
||||
@@ -660,7 +668,7 @@ milestones.cancel=Скасувати
|
||||
milestones.modify=Змінити етап
|
||||
milestones.edit_success=Зміни в етапі '%s' успішно збережені!
|
||||
milestones.deletion=Видалення етапу
|
||||
milestones.deletion_desc=Видалення цього єтапу призведе до видалення інформації, його та пов'язаних проблем. Ви справді хочете продовжити?
|
||||
milestones.deletion_desc=Видалення цього етапу призведе до видалення інформації, його та пов'язаних проблем. Ви справді хочете продовжити?
|
||||
milestones.deletion_success=Етап успішно видалено!
|
||||
|
||||
wiki=Wiki
|
||||
@@ -738,12 +746,12 @@ settings.tracker_issue_style=Стиль найменування задач в
|
||||
settings.tracker_issue_style.numeric=Цифровий
|
||||
settings.tracker_issue_style.alphanumeric=Буквено-цифровий
|
||||
settings.tracker_url_format_desc=Ви можете використовувати заповнювач <code>{user} {repo} {index}</code> для ім'я користувача, назви репозиторію на номеру проблеми.
|
||||
settings.pulls_desc=Увімкнути публічні запроси на злиття
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ігнорувати зміни у пробільних символах
|
||||
settings.pulls.allow_rebase_merge=Дозволити перебазування для merge-комітів
|
||||
settings.danger_zone=Небезпечна зона
|
||||
settings.cannot_fork_to_same_owner=Ви не можете клонувати репозиторій його ж власнику.
|
||||
settings.new_owner_has_same_repo=Новий власник вже має репозиторій з такою назвою.
|
||||
settings.new_owner_has_same_repo=Новий власник вже має репозиторій з такою назвою. Будь ласка, виберіть іншу.
|
||||
settings.convert=Перетворити на звичайний репозиторій
|
||||
settings.convert_desc=Ви можете сконвертувати це дзеркало у звичайний репозиторій. Це не може бути повернуто.
|
||||
settings.convert_notices_1=- Ця операція перетворить дзеркало на звичайний репозиторій та не зможе бути відмінена.
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Wiki-інформацію було вдало в
|
||||
settings.delete=Видалити цей репозиторій
|
||||
settings.delete_desc=Як тільки ви видалите репозиторій, то вже не буде шляху назад. Будь ласка, будьте певні.
|
||||
settings.delete_notices_1=- Ця операція <strong>НЕ МОЖЕ</strong> бути відмінена.
|
||||
settings.delete_notices_2=- Ця операція остаточно видалить увесь вміст репозиторію, включаючи git-дані, проблеми, коментарі та дозволи співавторів.
|
||||
settings.delete_notices_2=- Ця операція остаточно видалить весь вміст цього репозиторію, включаючи дані Git, проблеми, коментарі та дозволи співавторів.
|
||||
settings.delete_notices_fork_1=- Усі відгалудження стануть незалежними бісля видалення.
|
||||
settings.deletion_success=Репозиторій успішно видалено!
|
||||
settings.update_settings_success=Налаштування репозиторію було вдало оновлено.
|
||||
@@ -819,10 +827,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push до репозиторію
|
||||
settings.event_issues=Проблеми
|
||||
settings.event_issues_desc=Проблему відкрито, закрито, перевідкрито, відредаговано, призначено, відкріплено, змінено мітку, очищено мітку, створено етап, очищено етап.
|
||||
settings.event_issue_comment=Коментар проблеми
|
||||
settings.event_issue_comment_desc=Коментар проблеми створено, видалено чи відредаговано.
|
||||
settings.event_pull_request=Запити до злиття
|
||||
settings.event_pull_request_desc=Запрос на злиття відкрито, закрито, перевідкрито, прикріплено, відкріплено, оновлено мітку, очищено мітку, створено етап, очищено етап або синхронізовано.
|
||||
settings.event_issue_comment=Коментар проблеми
|
||||
settings.event_issue_comment_desc=Коментар проблеми створено, видалено чи відредаговано.
|
||||
settings.event_release=Реліз
|
||||
settings.event_release_desc=Реліз опубліковано у репозиторії.
|
||||
settings.active=Активний
|
||||
@@ -836,13 +844,13 @@ settings.hook_type=Тип хуку
|
||||
settings.add_slack_hook_desc=Додати <a href="%s">Slack</a>-інтеграцію до вашого репозиторію.
|
||||
settings.add_discord_hook_desc=Додати <a href="%s">Discord</a>-інтеграцію до репозиторію.
|
||||
settings.add_dingtalk_hook_desc=Додати інтеграцію <a href="%s">Dingtalk</a> до вашого репозиторію.
|
||||
settings.slack_token=Жетон
|
||||
settings.slack_token=Токен
|
||||
settings.slack_domain=Домен
|
||||
settings.slack_channel=Канал
|
||||
settings.deploy_keys=Ключи для розгортування
|
||||
settings.deploy_keys_helper=<b>Common Gotcha!</b> Якщо ви шукаєте куди додати персональний публічний ключ, додайте його до <a href="%s%s">налаштуань вашого аккаунту</a>.
|
||||
settings.deploy_keys_helper=<b>Common Gotcha!</b> Якщо ви шукаєте куди додати персональний публічний ключ, додайте його до <a href="%s%s">налаштувань вашого аккаунту</a>.
|
||||
settings.add_deploy_key=Додати ключ для розгортування
|
||||
settings.deploy_key_desc=Ключи розгортування доступні лише для читання. Це не те саме, що персональний SSH ключ аккаунту.
|
||||
settings.deploy_key_desc=Ключі розгортування доступні лише для читання. Це не те саме, що персональний SSH ключ акаунту.
|
||||
settings.no_deploy_keys=Ви не додали жодного ключа для розгортування.
|
||||
settings.title=Заголовок
|
||||
settings.deploy_key_content=Контент
|
||||
@@ -850,8 +858,10 @@ settings.key_been_used=Вміст ключа розгортування вже
|
||||
settings.key_name_used=Ключ розгортування має ім'я яке вже використано.
|
||||
settings.add_key_success=Новий ключ розгортування '%s' успішно додано!
|
||||
settings.deploy_key_deletion=Видалити ключ для розгортування
|
||||
settings.deploy_key_deletion_desc=Видалення цього ключа для розгортування призведе о видалення усіх повїязаних прав до цього репозитрію. Ви справді бажаєти продовжити?
|
||||
settings.deploy_key_deletion_desc=Видалення цього ключа для розгортування призведе о видалення усіх пов'язаних прав до цього репозиторію. Ви справді бажаєте продовжити?
|
||||
settings.deploy_key_deletion_success=Ключі для розгортування було успішно видалено!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Переглянути джерело
|
||||
diff.parent=батько
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=У обраному
|
||||
repos.issues=Питання
|
||||
repos.size=Розмір
|
||||
|
||||
auths.auth_manage_panel=Керування автентифікацій
|
||||
auths.auth_sources=Джерела автентифікації
|
||||
auths.new=Додати нове джерело
|
||||
auths.name=Назва
|
||||
auths.type=Тип
|
||||
auths.enabled=Увімкнено
|
||||
auths.default=Default
|
||||
auths.updated=Оновлено
|
||||
auths.auth_type=Тип автентифікації
|
||||
auths.auth_name=Назва автентифікації
|
||||
@@ -1100,7 +1111,7 @@ auths.domain=Домен
|
||||
auths.host=Хост
|
||||
auths.port=Порт
|
||||
auths.bind_dn=Прив'язати DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=Ви можете використовувати '%s' як шаблон для імені користувача, напр. DOM\%s
|
||||
auths.bind_password=Прив'язати пароль
|
||||
auths.bind_password_helper=Увага: Цей пароль зберігається як звичайний текст. Не використовуйте профіль з високими повноваженнями.
|
||||
auths.user_base=База пошуку користувачів
|
||||
@@ -1123,14 +1134,14 @@ auths.smtp_auth=Тип автентифікації SMTP
|
||||
auths.smtphost=SMTP хост
|
||||
auths.smtpport=SMTP порт
|
||||
auths.allowed_domains=Дозволені домени
|
||||
auths.allowed_domains_helper=Залиште пустим щоб дозволити будь-які домени. Якщо доменів декілька - розділить їх комами ','.
|
||||
auths.allowed_domains_helper=Залиште порожнім щоб дозволити будь-які домени. Якщо доменів декілька - розділить їх комами ','.
|
||||
auths.enable_tls=Увімкнути TLS-шифрування
|
||||
auths.skip_tls_verify=Пропустити перевірку TLS
|
||||
auths.pam_service_name=Ім'я служби PAM
|
||||
auths.enable_auto_register=Увімкнути автоматичну реєстрацію
|
||||
auths.tips=Поради
|
||||
auths.edit=Редагувати налаштування автентифікації
|
||||
auths.activated=Цю автентифікацію активовано
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Нову автентифікацію '%s' було успішно додано.
|
||||
auths.update_success=Налаштування автентифікації було успішно оновлено.
|
||||
auths.update=Оновити налаштування автентифікації
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=Цю автентифікацію ще використов
|
||||
auths.deletion_success=Автентивікацію було успішно видалено!
|
||||
auths.login_source_exist=Джерело входу '%s' вже існує.
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(не встановлено)
|
||||
config.server_config=Конфігурація сервера
|
||||
config.app_name=Назва програми
|
||||
config.app_ver=Версія програми
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Домен
|
||||
config.ssh_port=Порт
|
||||
config.ssh_listen_port=Порт що прослуховується
|
||||
config.ssh_root_path=Шлях до кореню
|
||||
config.ssh_rewrite_authorized_keys_at_start=Переписати authorized_keys на початку
|
||||
config.ssh_key_test_path=Шлях до тестових ключів
|
||||
config.ssh_keygen_path=Шлях до генератора ключів ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Мінімальний розмір ключа перевірки
|
||||
@@ -1178,8 +1190,8 @@ config.disable_http_git=Вимкнути HTTP Git
|
||||
config.enable_local_path_migration=Увімкнути міграцію з локального шляху
|
||||
config.commits_fetch_concurrency=Запросити коміти конкурентно
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
config.http_config=Налаштування HTTP
|
||||
config.http_access_control_allow_origin=Контроль доступу дозволяє Origin
|
||||
|
||||
config.db_config=Налаштування бази даних
|
||||
config.db_type=Тип
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=Пропустити перевірку TLS
|
||||
config.mailer_config=Налаштування пошти
|
||||
config.mailer_enabled=Увімкнено
|
||||
config.mailer_disable_helo=Вимкнути HELO
|
||||
config.mailer_name=Ім’я
|
||||
config.mailer_subject_prefix=Префікс теми
|
||||
config.mailer_host=Хост
|
||||
config.mailer_user=Користувач
|
||||
config.send_test_mail=Відправити тестового листа
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=Системні повідомлення було усп
|
||||
|
||||
[action]
|
||||
create_repo=створено репозиторій <a href="%s">%s</a>
|
||||
fork_repo=відгалуджено репозиторій у <a href="%s">%s</a>
|
||||
rename_repo=репозиторій перейменовано з <code>%[1]s</code> на <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=запушено до <a href="%[1]s/src/%[2]s">%[3]s</a> у <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Перегляд порівняння для цих %d комітів
|
||||
@@ -1300,6 +1311,10 @@ create_branch=створено нову гілку <a href="%[1]s/src/%[2]s">%[3
|
||||
delete_branch=видалено гілку <code>%[2]s</code> у <a href="%[1]s">%[3]s</a>
|
||||
push_tag=заштовхнуто тег <a href="%s/src/%s">%[2]s</a> до <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=видалено мітку <code>%[2]s</code> у <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=відгалуджено репозиторій у <a href="%s">%s</a>
|
||||
mirror_sync_push=синхронізовано коміт <a href="%[1]s/src/%[2]s">%[3]s</a> в <a href="%[1]s">%[4]s</a> із дзеркала
|
||||
mirror_sync_create=синхронізовано нове посилання <a href="%s/src/%s">%[2]s</a> до <a href="%[1]s">%[3]s</a> із дзеркала
|
||||
mirror_sync_delete=синхронізовано й видалено посилання <code>%[2]s</code> в <a href="%[1]s">%[3]s</a> із дзеркала
|
||||
|
||||
[tool]
|
||||
ago=тому
|
||||
|
||||
1345
conf/locale/locale_vi-VN.ini
Normal file
1345
conf/locale/locale_vi-VN.ini
Normal file
File diff suppressed because it is too large
Load Diff
@@ -151,6 +151,8 @@ register_hepler_msg=已经注册?立即登录!
|
||||
social_register_hepler_msg=已经注册?立即绑定!
|
||||
disable_register_prompt=对不起,注册功能已被关闭。请联系网站管理员。
|
||||
disable_register_mail=对不起,注册邮箱确认功能已被关闭。
|
||||
auth_source=认证源
|
||||
local=本地
|
||||
remember_me=记住登录
|
||||
forgot_password=忘记密码
|
||||
forget_password=忘记密码?
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=组织名称已经被占用。
|
||||
team_name_been_taken=团队名称已经被占用。
|
||||
email_been_used=邮箱地址已经被使用。
|
||||
username_password_incorrect=用户名或密码不正确。
|
||||
auth_source_mismatch=该用户未与所选择的认证源进行关联
|
||||
enterred_invalid_repo_name=请检查您输入的仓库名称是正确。
|
||||
enterred_invalid_owner_name=请检查您输入的新所有者用户名是否正确。
|
||||
enterred_invalid_password=请检查您输入的密码是否正确。
|
||||
@@ -348,6 +351,7 @@ two_factor_or_enter_secret=或者直接输入密钥:
|
||||
two_factor_then_enter_passcode=然后输入动态令牌:
|
||||
two_factor_verify=验证令牌
|
||||
two_factor_invalid_passcode=您输入的动态令牌无效,请重试!
|
||||
two_factor_reused_passcode=您输入的令牌已经被使用,请等待数秒后尝试新的令牌!
|
||||
two_factor_enable_error=启用两步验证失败:%v
|
||||
two_factor_enable_success=两步验证登录启用成功!
|
||||
two_factor_recovery_codes_title=两步验证恢复密钥
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=上次同步时间:
|
||||
watchers=关注者
|
||||
stargazers=称赞者
|
||||
forks=派生仓库
|
||||
repo_description_helper=请输入仓库描述,最多为 512 个字符
|
||||
repo_description_length=剩余字符数
|
||||
|
||||
form.reach_limit_of_creation=该用户已经达到允许创建 %d 个仓库的最大上限。
|
||||
form.name_reserved=仓库名称 '%s' 是被保留的。
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=文件内容在您进行编辑时已经发生
|
||||
editor.file_already_exists=此仓库已经存在名为 '%s' 的文件。
|
||||
editor.no_changes_to_show=没有可以显示的变更。
|
||||
editor.fail_to_update_file=更新/创建文件 '%s' 时发生错误:%v
|
||||
editor.fail_to_delete_file=删除文件 '%s' 时发生错误: %v
|
||||
editor.add_subdir=添加子目录...
|
||||
editor.unable_to_upload_files=上传文件至 '%s' 时发生错误:%v
|
||||
editor.upload_files_to_dir=上传文件至 '%s'
|
||||
@@ -590,7 +597,7 @@ issues.commit_ref_at=`在代码提交 <a id="%[1]s" href="#%[1]s">%[2]s</a> 中
|
||||
issues.poster=发布者
|
||||
issues.collaborator=协作者
|
||||
issues.owner=所有者
|
||||
issues.sign_in_require_desc=<a href="%s">登陆</a> 并参与到对话中。
|
||||
issues.sign_in_require_desc=<a href="%s">登录</a> 并参与到对话中。
|
||||
issues.edit=编辑
|
||||
issues.cancel=取消
|
||||
issues.save=保存
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc=该合并请求存在冲突,无法进行自动合
|
||||
pulls.cannot_auto_merge_helper=请手动拉取代码变更以解决冲突。
|
||||
pulls.create_merge_commit=创建一个新的合并提交
|
||||
pulls.rebase_before_merging=合并前先进行衍合
|
||||
pulls.commit_description=提交说明
|
||||
pulls.merge_pull_request=合并请求
|
||||
pulls.open_unmerged_pull_exists=`由于已经存在来自相同仓库和合并信息的未合并请求(#%d),您无法执行重新开启操作。`
|
||||
pulls.delete_branch=删除分支
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style=外部工单管理系统命名风格:
|
||||
settings.tracker_issue_style.numeric=纯数字形式
|
||||
settings.tracker_issue_style.alphanumeric=英文字母数字组合形式
|
||||
settings.tracker_url_format_desc=您可以使用 <code>{user} {repo} {index}</code> 分别作为用户名、仓库名和工单索引的占位符。
|
||||
settings.pulls_desc=启用合并请求以接受社区贡献
|
||||
settings.pulls_desc=启用合并请求以接受来自其它仓库或分支的贡献
|
||||
settings.pulls.ignore_whitespace=忽略空白符号的更改
|
||||
settings.pulls.allow_rebase_merge=允许在合并提交时使用衍合
|
||||
settings.danger_zone=危险操作区
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=仓库 Wiki 数据清除成功!
|
||||
settings.delete=删除本仓库
|
||||
settings.delete_desc=删除仓库操作不可逆转,请三思而后行。
|
||||
settings.delete_notices_1=- 此操作 <strong>不可以</strong> 被回滚。
|
||||
settings.delete_notices_2=- 此操作将永久删除该仓库,包括 Git 数据、 工单、 评论和协作者的操作权限。
|
||||
settings.delete_notices_2=- 此操作将永久删除该仓库,包括 Git 数据、工单、评论和协作者的操作权限。
|
||||
settings.delete_notices_fork_1=- 删除完成后所有的派生仓库都将转换为独立的仓库。
|
||||
settings.deletion_success=仓库删除成功!
|
||||
settings.update_settings_success=仓库设置更新成功!
|
||||
@@ -819,10 +827,10 @@ settings.event_push=推送
|
||||
settings.event_push_desc=Git 仓库推送
|
||||
settings.event_issues=工单
|
||||
settings.event_issues_desc=工单被开启、关闭、重新开启、编辑、指派、取消指派、更新标签、清除标签、设置里程碑或取消设置里程碑
|
||||
settings.event_issue_comment=工单评论
|
||||
settings.event_issue_comment_desc=工单评论被创建、编辑和删除
|
||||
settings.event_pull_request=合并请求
|
||||
settings.event_pull_request_desc=合并请求被开启、关闭、重新开启、编辑、指派、取消指派、更新标签、清除标签、设置里程碑、取消设置里程碑或代码同步
|
||||
settings.event_issue_comment=工单评论
|
||||
settings.event_issue_comment_desc=工单评论被创建、编辑和删除
|
||||
settings.event_release=版本发布
|
||||
settings.event_release_desc=仓库发布新的版本
|
||||
settings.active=是否激活
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=新的部署密钥 '%s' 添加成功!
|
||||
settings.deploy_key_deletion=删除部署密钥
|
||||
settings.deploy_key_deletion_desc=删除该部署密钥会移除本仓库所以相关的操作权限。是否继续?
|
||||
settings.deploy_key_deletion_success=删除部署密钥成功!
|
||||
settings.description_desc=请输入仓库描述,最多为 512 个字符
|
||||
settings.description_length=剩余字符数
|
||||
|
||||
diff.browse_source=浏览代码
|
||||
diff.parent=父节点
|
||||
@@ -982,7 +992,7 @@ dashboard=控制面板
|
||||
users=用户管理
|
||||
organizations=组织管理
|
||||
repositories=仓库管理
|
||||
authentication=授权认证管理
|
||||
authentication=认证源管理
|
||||
config=应用配置管理
|
||||
notices=系统提示管理
|
||||
monitor=应用监控面板
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=点赞数
|
||||
repos.issues=工单数
|
||||
repos.size=用量
|
||||
|
||||
auths.auth_manage_panel=认证管理面板
|
||||
auths.auth_sources=认证源
|
||||
auths.new=添加新的源
|
||||
auths.name=认证名称
|
||||
auths.type=认证类型
|
||||
auths.enabled=已启用
|
||||
auths.default=默认
|
||||
auths.updated=最后更新时间
|
||||
auths.auth_type=认证类型
|
||||
auths.auth_name=认证名称
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=启用 TLS 加密
|
||||
auths.skip_tls_verify=忽略 TLS 验证
|
||||
auths.pam_service_name=PAM 服务名称
|
||||
auths.enable_auto_register=允许授权用户自动注册
|
||||
auths.tips=帮助提示
|
||||
auths.edit=编辑认证设置
|
||||
auths.activated=该授权认证已经启用
|
||||
auths.default_auth=该授权认证将作为默认登录源
|
||||
auths.new_success=新的授权源 "%s" 添加成功!
|
||||
auths.update_success=认证设置更新成功!
|
||||
auths.update=更新认证设置
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=域名
|
||||
config.ssh_port=端口
|
||||
config.ssh_listen_port=监听端口
|
||||
config.ssh_root_path=根目录
|
||||
config.ssh_rewrite_authorized_keys_at_start=在启动时重写 authorized_keys 文件
|
||||
config.ssh_key_test_path=密钥测试路径
|
||||
config.ssh_keygen_path=密钥生成器('ssh-keygen')路径
|
||||
config.ssh_minimum_key_size_check=密钥最小长度检查
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=忽略 TLS 验证
|
||||
config.mailer_config=邮件配置
|
||||
config.mailer_enabled=启用服务
|
||||
config.mailer_disable_helo=禁用 HELO 操作
|
||||
config.mailer_name=发送者名称
|
||||
config.mailer_subject_prefix=主题前缀
|
||||
config.mailer_host=邮件主机地址
|
||||
config.mailer_user=发送者帐号
|
||||
config.send_test_mail=发送测试邮件
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=系统提示删除成功!
|
||||
|
||||
[action]
|
||||
create_repo=创建了仓库 <a href="%s">%s</a>
|
||||
fork_repo=派生了仓库 <a href="%s">%s</a>
|
||||
rename_repo=重命名仓库 <code>%[1]s</code> 为 <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=推送了 <a href="%[1]s/src/%[2]s">%[3]s</a> 分支的代码到 <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=对比 %d 次代码提交
|
||||
@@ -1300,6 +1311,10 @@ create_branch=创建了新的分支 <a href="%[1]s/src/%[2]s">%[3]s</a> 到 <a h
|
||||
delete_branch=删除了 <a href="%[1]s">%[3]s</a> 的分支 <code>%[2]s</code>
|
||||
push_tag=推送了标签 <a href="%s/src/%s">%[2]s</a> 到 <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=删除了 <a href="%[1]s">%[3]s</a> 的标签 <code>%[2]s</code>
|
||||
fork_repo=派生了仓库 <a href="%s">%s</a>
|
||||
mirror_sync_push=从镜像同步了 <a href="%[1]s/src/%[2]s">%[3]s</a> 分支的代码到 <a href="%[1]s">%[4]s</a>
|
||||
mirror_sync_create=从镜像同步了新的引用 <a href="%s/src/%s">%[2]s</a> 到 <a href="%[1]s">%[3]s</a>
|
||||
mirror_sync_delete=从镜像同步并从 <a href="%[1]s">%[3]s</a> 删除了引用 <code>%[2]s</code>
|
||||
|
||||
[tool]
|
||||
ago=之前
|
||||
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=已經註冊?立即登錄!
|
||||
social_register_hepler_msg=已經註冊?立即綁定!
|
||||
disable_register_prompt=對不起,註冊功能已被關閉。請聯系網站管理員。
|
||||
disable_register_mail=對不起,註冊郵箱確認功能已被關閉。
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=記住登錄
|
||||
forgot_password=忘記密碼
|
||||
forget_password=忘記密碼?
|
||||
@@ -207,7 +209,7 @@ CommitSummary=Commit summary
|
||||
CommitMessage=Commit message
|
||||
CommitChoice=Commit choice
|
||||
TreeName=File path
|
||||
Content=Content
|
||||
Content=內容
|
||||
|
||||
require_error=不能為空。
|
||||
alpha_dash_error=必須為英文字母、阿拉伯數字或橫線(-_)。
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=組織名稱已經被佔用。
|
||||
team_name_been_taken=團隊名稱已經被佔用。
|
||||
email_been_used=郵箱地址已經被使用。
|
||||
username_password_incorrect=用戶名或密碼不正確。
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=請檢查您輸入的倉庫名稱是正確。
|
||||
enterred_invalid_owner_name=請檢查您輸入的新所有者用戶名是否正確。
|
||||
enterred_invalid_password=請檢查您輸入的密碼是否正確。
|
||||
@@ -262,10 +265,10 @@ form.name_pattern_not_allowed=用戶名不允許 '%s' 的格式。
|
||||
[settings]
|
||||
profile=個人信息
|
||||
password=修改密碼
|
||||
avatar=Avatar
|
||||
avatar=頭像
|
||||
ssh_keys=管理 SSH 密鑰
|
||||
security=Security
|
||||
repos=Repositories
|
||||
security=安全
|
||||
repos=倉庫
|
||||
orgs=管理組織
|
||||
applications=管理授權應用
|
||||
delete=刪除帳戶
|
||||
@@ -335,19 +338,20 @@ key_state_desc=該密鑰在 7 天內被使用過
|
||||
token_state_desc=此token在過去七天內曾經被使用過
|
||||
|
||||
two_factor=Two-factor Authentication
|
||||
two_factor_status=Status:
|
||||
two_factor_on=On
|
||||
two_factor_off=Off
|
||||
two_factor_enable=Enable
|
||||
two_factor_disable=Disable
|
||||
two_factor_status=狀態:
|
||||
two_factor_on=開啟
|
||||
two_factor_off=關閉
|
||||
two_factor_enable=啟用
|
||||
two_factor_disable=禁用
|
||||
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
|
||||
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
|
||||
two_factor_enable_title=Enable Two-factor Authentication
|
||||
two_factor_scan_qr=Please use your authentication application to scan the image:
|
||||
two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=Then enter passcode:
|
||||
two_factor_verify=Verify
|
||||
two_factor_or_enter_secret=或者輸入密碼:
|
||||
two_factor_then_enter_passcode=然後輸入驗證碼:
|
||||
two_factor_verify=驗證
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=Last Synced
|
||||
watchers=關注者
|
||||
stargazers=稱讚者
|
||||
forks=派生倉庫
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=擁有者已達到儲存庫最大的新增上限 %d。
|
||||
form.name_reserved=倉庫名稱 '%s' 是被保留的。
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=File content has been changed since you starte
|
||||
editor.file_already_exists=A file with name '%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
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Add subdirectory...
|
||||
editor.unable_to_upload_files=Failed to upload files to '%s' with error: %v
|
||||
editor.upload_files_to_dir=Upload files to '%s'
|
||||
@@ -634,6 +641,7 @@ pulls.cannot_auto_merge_desc=由於存在衝突,不能自動合併這推送請
|
||||
pulls.cannot_auto_merge_helper=請手動合併來解決衝突。
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=合併請求
|
||||
pulls.open_unmerged_pull_exists=`由於已經存在來自相同倉庫和合併信息的未合併請求(#%d),您無法執行重新開啟操作。`
|
||||
pulls.delete_branch=Delete Branch
|
||||
@@ -738,7 +746,7 @@ settings.tracker_issue_style=External Issue Tracker Naming Style:
|
||||
settings.tracker_issue_style.numeric=Numeric
|
||||
settings.tracker_issue_style.alphanumeric=Alphanumeric
|
||||
settings.tracker_url_format_desc=您可以使用 <code>{user} {repo} {index}</code> 分別作為用戶名、倉庫名和問題索引的占位符。
|
||||
settings.pulls_desc=啟用合併請求以接受社區貢獻
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=危險操作區
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=Repository wiki data have been erased successfull
|
||||
settings.delete=刪除本倉庫
|
||||
settings.delete_desc=刪除倉庫操作不可逆轉,請三思而後行。
|
||||
settings.delete_notices_1=- 此操作 <strong>不可以</strong> 被回滾。
|
||||
settings.delete_notices_2=- 此操作將永久刪除該倉庫,包括 Git 數據、 問題、 評論和協作者的操作權限。
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- All forks will become independent after deletion.
|
||||
settings.deletion_success=倉庫刪除成功!
|
||||
settings.update_settings_success=倉庫設置更新成功!
|
||||
@@ -819,10 +827,10 @@ settings.event_push=推送
|
||||
settings.event_push_desc=Git 倉庫推送
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=是否激活
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=新的部署密鑰 '%s' 添加成功!
|
||||
settings.deploy_key_deletion=刪除部署密鑰
|
||||
settings.deploy_key_deletion_desc=刪除該部署密鑰會移除本倉庫所有相關的操作權限。是否繼續?
|
||||
settings.deploy_key_deletion_success=刪除部署密鑰成功!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=瀏覽代碼
|
||||
diff.parent=父節點
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=讚好數
|
||||
repos.issues=問題數
|
||||
repos.size=Size
|
||||
|
||||
auths.auth_manage_panel=認證管理面板
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=添加新認證源
|
||||
auths.name=認證名稱
|
||||
auths.type=認證類型
|
||||
auths.enabled=已啟用
|
||||
auths.default=Default
|
||||
auths.updated=最後更新時間
|
||||
auths.auth_type=認證類型
|
||||
auths.auth_name=認證名稱
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=啟用 TLS 加密
|
||||
auths.skip_tls_verify=忽略 TLS 驗證
|
||||
auths.pam_service_name=PAM 服務名稱
|
||||
auths.enable_auto_register=允許授權用戶自動註冊
|
||||
auths.tips=幫助提示
|
||||
auths.edit=編輯認證設置
|
||||
auths.activated=該授權認證已經啟用
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=新的認證源 "%s" 添加成功!
|
||||
auths.update_success=認證設置更新成功!
|
||||
auths.update=更新認證設置
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=Domain
|
||||
config.ssh_port=埠
|
||||
config.ssh_listen_port=監聽埠
|
||||
config.ssh_root_path=根路徑
|
||||
config.ssh_rewrite_authorized_keys_at_start=Rewrite authorized_keys At Start
|
||||
config.ssh_key_test_path=金鑰測試路徑
|
||||
config.ssh_keygen_path=金鑰產生 (' ssh-keygen ') 路徑
|
||||
config.ssh_minimum_key_size_check=金鑰最小大小檢查
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=忽略 TLS 驗證
|
||||
config.mailer_config=郵件配置
|
||||
config.mailer_enabled=啟用服務
|
||||
config.mailer_disable_helo=禁用 HELO 操作
|
||||
config.mailer_name=發送者名稱
|
||||
config.mailer_subject_prefix=Subject Prefix
|
||||
config.mailer_host=郵件主機地址
|
||||
config.mailer_user=發送者帳號
|
||||
config.send_test_mail=發送測試郵件
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=系統提示刪除成功!
|
||||
|
||||
[action]
|
||||
create_repo=創建了儲存庫 <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=重新命名倉庫 <code>%[1]s</code> 為 <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=推送了 <a href="%[1]s/src/%[2]s">%[3]s</a> 分支的代碼到 <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=查看 %d 次提交的內容比對
|
||||
@@ -1300,6 +1311,10 @@ create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href=
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=推送了標籤 <a href="%s/src/%s">%[2]s</a> 到 <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=之前
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
app_desc=基於 Go 語言的自助 Git 服務
|
||||
app_desc=一款極易搭建的自助 Git 服務
|
||||
|
||||
home=首頁
|
||||
dashboard=控制面版
|
||||
dashboard=控制面板
|
||||
explore=探索
|
||||
help=說明
|
||||
sign_in=登入
|
||||
@@ -35,7 +35,7 @@ manage_org=管理組織
|
||||
admin_panel=管理面板
|
||||
account_settings=帳號設定
|
||||
settings=設定
|
||||
your_profile=個人資料
|
||||
your_profile=個人資訊
|
||||
your_settings=用戶設定
|
||||
|
||||
activities=活動
|
||||
@@ -82,8 +82,8 @@ app_url=應用程式網址
|
||||
app_url_helper=該設置影響 HTTP/HTTPS 複製地址和一些郵箱中的連結。
|
||||
log_root_path=日誌路徑
|
||||
log_root_path_helper=寫入日誌檔目錄
|
||||
enable_console_mode=Enable Console Mode
|
||||
enable_console_mode_popup=In addition to file mode, also print logs to console.
|
||||
enable_console_mode=開啟主控台模式
|
||||
enable_console_mode_popup=除了使用檔案模式之外, 還要將日誌列印到控制台。
|
||||
|
||||
optional_title=可選設置
|
||||
email_title=電子郵件服務設定
|
||||
@@ -119,7 +119,7 @@ sqlite3_not_available=您所使用的發行版本不支持 SQLite3,請從 %s
|
||||
invalid_db_setting=資料庫設定不正確: %v
|
||||
invalid_repo_path=倉庫根目錄設置不正確:%v
|
||||
run_user_not_match=執行系統用戶非當前用戶:%s -> %s
|
||||
smtp_host_missing_port=SMTP Host is missing port in address.
|
||||
smtp_host_missing_port=SMTP 主機缺少位址中的埠。
|
||||
invalid_smtp_from=SMTP 寄件者欄位無效﹔%v
|
||||
save_config_failed=設定儲存失敗:%v
|
||||
invalid_admin_setting=管理員帳戶設置不正確:%v
|
||||
@@ -151,6 +151,8 @@ register_hepler_msg=已經註冊?立即登錄!
|
||||
social_register_hepler_msg=已經註冊?立即綁定!
|
||||
disable_register_prompt=對不起,註冊功能已被關閉。請聯系網站管理員。
|
||||
disable_register_mail=對不起,註冊郵箱確認功能已被關閉。
|
||||
auth_source=認證來源
|
||||
local=本地
|
||||
remember_me=記住登錄
|
||||
forgot_password=忘記密碼
|
||||
forget_password=忘記密碼?
|
||||
@@ -169,13 +171,13 @@ reset_password_helper=單擊此處重置密碼
|
||||
password_too_short=密碼長度不能少於 6 位!
|
||||
non_local_account=非本地帳戶無法通過 Gogs 修改密碼。
|
||||
|
||||
login_two_factor=Two-factor Authentication
|
||||
login_two_factor_passcode=Authentication Passcode
|
||||
login_two_factor_enter_recovery_code=Enter a two-factor recovery code
|
||||
login_two_factor_recovery=Two-factor Recovery
|
||||
login_two_factor_recovery_code=Recovery Code
|
||||
login_two_factor_enter_passcode=Enter a two-factor passcode
|
||||
login_two_factor_invalid_recovery_code=Recovery code has been used or does not valid.
|
||||
login_two_factor=兩步驗證
|
||||
login_two_factor_passcode=驗證碼
|
||||
login_two_factor_enter_recovery_code=鍵入兩部驗證碼
|
||||
login_two_factor_recovery=兩步恢復
|
||||
login_two_factor_recovery_code=恢復代碼
|
||||
login_two_factor_enter_passcode=鍵入兩步驗證碼
|
||||
login_two_factor_invalid_recovery_code=恢復代碼已使用或無效。
|
||||
|
||||
[mail]
|
||||
activate_account=請激活您的帳戶
|
||||
@@ -195,7 +197,7 @@ RepoName=儲存庫名稱
|
||||
Email=郵箱地址
|
||||
Password=密碼
|
||||
Retype=確認密碼
|
||||
SSHTitle=SSH 密鑰名稱
|
||||
SSHTitle=SSH 公鑰名稱
|
||||
HttpsUrl=HTTPS URL 地址
|
||||
PayloadUrl=推送地址
|
||||
TeamName=團隊名稱
|
||||
@@ -229,6 +231,7 @@ org_name_been_taken=組織名稱已經被佔用。
|
||||
team_name_been_taken=團隊名稱已經被佔用。
|
||||
email_been_used=郵箱地址已經被使用。
|
||||
username_password_incorrect=用戶名或密碼不正確。
|
||||
auth_source_mismatch=此用戶未與所用的認證來源相關聯
|
||||
enterred_invalid_repo_name=請檢查您輸入的倉庫名稱是正確。
|
||||
enterred_invalid_owner_name=請檢查您輸入的新所有者用戶名是否正確。
|
||||
enterred_invalid_password=請檢查您輸入的密碼是否正確。
|
||||
@@ -260,12 +263,12 @@ form.name_reserved=用戶名 '%s' 是被保留的。
|
||||
form.name_pattern_not_allowed=用戶名不允許 '%s' 的格式。
|
||||
|
||||
[settings]
|
||||
profile=個人信息
|
||||
profile=個人資訊
|
||||
password=修改密碼
|
||||
avatar=頭像
|
||||
ssh_keys=管理 SSH 密鑰
|
||||
security=Security
|
||||
repos=Repositories
|
||||
security=安全
|
||||
repos=倉庫
|
||||
orgs=管理組織
|
||||
applications=管理授權應用
|
||||
delete=刪除帳戶
|
||||
@@ -277,7 +280,7 @@ full_name=自定義名稱
|
||||
website=個人網站
|
||||
location=所在地區
|
||||
update_profile=更新信息
|
||||
update_profile_success=您的個人信息更新成功!
|
||||
update_profile_success=您的個人資訊更新成功!
|
||||
change_username=用戶名將被修改
|
||||
change_username_prompt=該操作將會影響到所有與您帳戶有關的鏈接
|
||||
continue=繼續操作
|
||||
@@ -318,7 +321,7 @@ manage_ssh_keys=管理 SSH 密鑰
|
||||
add_key=增加密鑰
|
||||
ssh_desc=以下是與您帳戶所關聯的 SSH 密鑰,如果您發現有陌生的密鑰,請立即刪除它!
|
||||
ssh_helper=<strong>需要幫助嗎?</strong> 請查看有關 <a href="%s"> 如何生成 SSH 密鑰</a> 的指南或 <a href="%s"> SSH 的常見問題</a> 的疑難排解。
|
||||
add_new_key=增加 SSH 密鑰
|
||||
add_new_key=增加 SSH 公鑰
|
||||
ssh_key_been_used=公共密鑰已經被使用
|
||||
ssh_key_name_used=使用相同名稱的公共密鑰已經存在!
|
||||
key_name=密鑰名稱
|
||||
@@ -334,30 +337,31 @@ no_activity=沒有最近活動
|
||||
key_state_desc=該密鑰在 7 天內被使用過
|
||||
token_state_desc=此token在過去七天內曾經被使用過
|
||||
|
||||
two_factor=Two-factor Authentication
|
||||
two_factor_status=Status:
|
||||
two_factor_on=On
|
||||
two_factor_off=Off
|
||||
two_factor_enable=Enable
|
||||
two_factor_disable=Disable
|
||||
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
|
||||
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
|
||||
two_factor_enable_title=Enable Two-factor Authentication
|
||||
two_factor_scan_qr=Please use your authentication application to scan the image:
|
||||
two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=Then enter passcode:
|
||||
two_factor_verify=Verify
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
two_factor_recovery_codes_desc=Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
|
||||
two_factor_regenerate_recovery_codes=Regenerate Recovery Codes
|
||||
two_factor_regenerate_recovery_codes_error=Regenerate recovery codes failed: %v
|
||||
two_factor_regenerate_recovery_codes_success=New recovery codes has been generated successfully!
|
||||
two_factor_disable_title=Disable Two-factor Authentication
|
||||
two_factor_disable_desc=Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
|
||||
two_factor_disable_success=Two-factor authentication has disabled successfully!
|
||||
two_factor=兩步驗證
|
||||
two_factor_status=狀態:
|
||||
two_factor_on=開啟
|
||||
two_factor_off=關閉
|
||||
two_factor_enable=啟用
|
||||
two_factor_disable=禁用
|
||||
two_factor_view_recovery_codes=在安全的地方查看並保存 <a href="%s%s"> 您的恢復代碼 </a>。如果您失去對身份驗證應用程式的存取權限, 則可以將它們用作密碼。
|
||||
two_factor_http=對於HTTP/HTTPS操作,您不能使用用戶名稱和密碼作為憑據。請創建和使用<a href=“%[1]s%[2]s”>個人操作令牌</a>作為您的憑據,如<code>%[3]s</code>。
|
||||
two_factor_enable_title=啟用兩步驗證
|
||||
two_factor_scan_qr=請使用您的身份驗證應用程式掃描圖像:
|
||||
two_factor_or_enter_secret=或輸入密碼: %s
|
||||
two_factor_then_enter_passcode=然後輸入驗證碼:
|
||||
two_factor_verify=驗證
|
||||
two_factor_invalid_passcode=您輸入的密碼無效,請再試一次。
|
||||
two_factor_reused_passcode=您输入的验证码已经被使用过了,请换一个重试!
|
||||
two_factor_enable_error=啟用兩步驗證失敗: %v
|
||||
two_factor_enable_success=您帳戶的兩步驗證已成功啟用!
|
||||
two_factor_recovery_codes_title=兩步驗證恢復代碼
|
||||
two_factor_recovery_codes_desc=當您無法存取您的認證應用程式時,可以使用救援代碼。每個救援代碼只能使用一次,因此 <b>請在安全的地方妥善保存您的救援代碼</b>。
|
||||
two_factor_regenerate_recovery_codes=重新生成恢復代碼
|
||||
two_factor_regenerate_recovery_codes_error=重新生成恢復代碼失敗: %v
|
||||
two_factor_regenerate_recovery_codes_success=已成功生成新的恢復代碼!
|
||||
two_factor_disable_title=停用兩步驗證
|
||||
two_factor_disable_desc=停用兩步驗證後,您的帳戶安全級別將降低。是否繼續?
|
||||
two_factor_disable_success=您帳戶的兩步驗證已成功停用!
|
||||
|
||||
manage_access_token=管理個人操作令牌
|
||||
generate_new_token=生成新的令牌
|
||||
@@ -378,7 +382,7 @@ orgs.leave_desc=離開組織後,所有與組織相關的倉庫和團隊權限
|
||||
repos.leave=離開
|
||||
repos.leave_title=離開存儲庫
|
||||
repos.leave_desc=在你離開後,您將無法進入到存儲庫。你想要繼續嗎?
|
||||
repos.leave_success=You have left repository '%s' successfully!
|
||||
repos.leave_success=您已經成功退出「%s」版本庫!
|
||||
|
||||
delete_account=刪除當前帳戶
|
||||
delete_prompt=刪除操作會永久清除您的帳戶信息,並且 <strong>不可恢復</strong>!
|
||||
@@ -417,6 +421,8 @@ mirror_last_synced=上次同步
|
||||
watchers=關注者
|
||||
stargazers=稱讚者
|
||||
forks=派生倉庫
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=擁有者已達到儲存庫最大的新增上限 %d。
|
||||
form.name_reserved=倉庫名稱 '%s' 是被保留的。
|
||||
@@ -450,7 +456,7 @@ quick_guide=快速幫助
|
||||
clone_this_repo=複製當前倉庫
|
||||
create_new_repo_command=從命令行創建一個新的倉庫
|
||||
push_exist_repo=從命令行推送已經創建的倉庫
|
||||
bare_message=This repository does not have any content yet.
|
||||
bare_message=此版本庫空空如也。
|
||||
|
||||
files=檔案
|
||||
branch=分支
|
||||
@@ -514,6 +520,7 @@ editor.file_changed_while_editing=從您開始編輯已更改檔的內容。<a t
|
||||
editor.file_already_exists=帶有名稱 '%s' 的檔已經存在在這個資料庫中。
|
||||
editor.no_changes_to_show=沒有可以顯示的變更。
|
||||
editor.fail_to_update_file=上傳/創建檔案 '%s' 失敗, 錯誤訊息: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=新增子目錄...
|
||||
editor.unable_to_upload_files=上傳檔案失敗到 '%s', 錯誤訊息: %v
|
||||
editor.upload_files_to_dir=上傳檔案到 '%s'
|
||||
@@ -616,7 +623,7 @@ pulls.compare_compare=對比文件變化
|
||||
pulls.filter_branch=過濾分支
|
||||
pulls.no_results=未找到結果
|
||||
pulls.nothing_to_compare=基準和對比分支代碼已經同步,無需進行對比。
|
||||
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
|
||||
pulls.nothing_merge_base=因為兩個分支有完全不同的提交紀錄,因此無法比較。
|
||||
pulls.has_pull_request=`已經存在目標分支的合併請求:<a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=創建合併請求
|
||||
pulls.title_desc=請求將 %[1]d 次代碼提交從 <code>%[2]s</code> 合併至 <code>%[3]s</code>
|
||||
@@ -632,8 +639,9 @@ pulls.is_checking=該合併請求正在進行衝突檢查,請稍後再刷新
|
||||
pulls.can_auto_merge_desc=這個拉請求可以自動合併。
|
||||
pulls.cannot_auto_merge_desc=由於存在衝突,不能自動合併這推送請求。
|
||||
pulls.cannot_auto_merge_helper=請手動合併來解決衝突。
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.create_merge_commit=創建一個合併提交
|
||||
pulls.rebase_before_merging=合併前先 Rebase
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=合併請求
|
||||
pulls.open_unmerged_pull_exists=`由於已經存在來自相同倉庫和合併信息的未合併請求(#%d),您無法執行重新開啟操作。`
|
||||
pulls.delete_branch=刪除分支
|
||||
@@ -689,11 +697,11 @@ settings.collaboration.write=可寫權限
|
||||
settings.collaboration.read=可讀權限
|
||||
settings.collaboration.undefined=未定義
|
||||
settings.branches=分支列表
|
||||
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
|
||||
settings.branches_bare=您無法管理空版本庫。請先推送一些內容至版本庫。
|
||||
settings.default_branch=預設分支
|
||||
settings.default_branch_desc=預設分支是程式碼 commit、pull requests 及線上編輯的基準分支。
|
||||
settings.update=更新
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_unsupported=伺服器的 Git 版本不支援變更預設分支。
|
||||
settings.update_default_branch_success=這個 repository 的預設分支更新成功!
|
||||
settings.protected_branches=保護分支
|
||||
settings.protected_branches_desc=保護分支不被強制 Push、意外刪除以及限制 Commit 者白名單
|
||||
@@ -723,13 +731,13 @@ settings.change_reponame_prompt=該操作將會影響到所有與該倉庫有關
|
||||
settings.advanced_settings=高級設置
|
||||
settings.wiki_desc=啓用 Wiki 系統
|
||||
settings.use_internal_wiki=使用內建 wiki
|
||||
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
|
||||
settings.allow_public_wiki_desc=當版本庫為私有狀態時,允許 Wiki 的公開存取。
|
||||
settings.use_external_wiki=使用外部 wiki
|
||||
settings.external_wiki_url=外部 Wiki 連結
|
||||
settings.external_wiki_url_desc=當分頁上按一下,訪客將會重新導到 URL。
|
||||
settings.issues_desc=啟用問題追蹤
|
||||
settings.use_internal_issue_tracker=使用內建輕量級問題追蹤
|
||||
settings.allow_public_issues_desc=Allow public access to issues when repository is private
|
||||
settings.allow_public_issues_desc=當版本庫為私有狀態時,允許議題的公開存取。
|
||||
settings.use_external_issue_tracker=使用外部的問題管理系統
|
||||
settings.external_tracker_url=外部Issue Tracker網址
|
||||
settings.external_tracker_url_desc=當訪客在分頁上按一下,他們將會重新導向到 URL。
|
||||
@@ -738,9 +746,9 @@ settings.tracker_issue_style=外部公單管理系統命名風格:
|
||||
settings.tracker_issue_style.numeric=數字
|
||||
settings.tracker_issue_style.alphanumeric=字母及數字
|
||||
settings.tracker_url_format_desc=您可以使用 <code>{user} {repo} {index}</code> 分別作為用戶名、倉庫名和問題索引的占位符。
|
||||
settings.pulls_desc=啟用合併請求以接受社區貢獻
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=忽略空白符號的更改
|
||||
settings.pulls.allow_rebase_merge=允許使用 rebase 合併提交
|
||||
settings.danger_zone=危險操作區
|
||||
settings.cannot_fork_to_same_owner=你不可以 fork 一個 repository 到它的擁有者。
|
||||
settings.new_owner_has_same_repo=新的倉庫擁有者已經存在同名倉庫!
|
||||
@@ -761,7 +769,7 @@ settings.wiki_deletion_success=儲存庫 wiki 資料已成功清除。
|
||||
settings.delete=刪除本倉庫
|
||||
settings.delete_desc=刪除倉庫操作不可逆轉,請三思而後行。
|
||||
settings.delete_notices_1=- 此操作 <strong>不可以</strong> 被回滾。
|
||||
settings.delete_notices_2=- 此操作將永久刪除該倉庫,包括 Git 數據、 問題、 評論和協作者的操作權限。
|
||||
settings.delete_notices_2=- 此動作將永久移除版本庫,包含了 Git 資料、議題、留言與協作者的存取權限。
|
||||
settings.delete_notices_fork_1=- 刪除後所有的派生倉庫將會成為獨立倉庫
|
||||
settings.deletion_success=倉庫刪除成功!
|
||||
settings.update_settings_success=倉庫設置更新成功!
|
||||
@@ -786,7 +794,7 @@ settings.webhook.test_delivery=測試推送
|
||||
settings.webhook.test_delivery_desc=生成並推送一個模擬的 Push 事件
|
||||
settings.webhook.test_delivery_success=測試推送已經加入到隊列,請耐心等待數秒再刷新推送記錄。
|
||||
settings.webhook.redelivery=重新傳送
|
||||
settings.webhook.redelivery_success=Hook task '%s' has been readded to delivery queue. It may take few seconds to update delivery status in history.
|
||||
settings.webhook.redelivery_success=任務「%s」已經重新加入至隊列。可能需要幾秒鐘來更新歷史的隊列狀態
|
||||
settings.webhook.request=請求內容
|
||||
settings.webhook.response=響應內容
|
||||
settings.webhook.headers=標題
|
||||
@@ -819,10 +827,10 @@ settings.event_push=推送
|
||||
settings.event_push_desc=Git 倉庫推送
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=已經開啟、關閉、重啟、修改、指派、取消指派、更新標籤、清除標籤、新增里程碑或刪除里程碑的 issue。
|
||||
settings.event_issue_comment=Issue 評論
|
||||
settings.event_issue_comment_desc=已經建立、編輯或刪除的 Issue 評論。
|
||||
settings.event_pull_request=合併請求
|
||||
settings.event_pull_request_desc=已經開啟、關閉、重啟、編輯、指派、解除指派、更新標籤、清除標籤、新增里程碑、刪除里程碑或同步的 pull request。
|
||||
settings.event_issue_comment=Issue 評論
|
||||
settings.event_issue_comment_desc=已經建立、編輯或刪除的 Issue 評論。
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release 將發佈在一個 repository 中。
|
||||
settings.active=是否激活
|
||||
@@ -835,12 +843,12 @@ settings.recent_deliveries=最近推送記錄
|
||||
settings.hook_type=鉤子類型
|
||||
settings.add_slack_hook_desc=為您的倉庫增加 <a href="%s">Slack</a> 集成。
|
||||
settings.add_discord_hook_desc=Hook <a href="%s">Discord</a> 到你的 repository。
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=在您的版本庫增加 <a href="%s">Dingtalk</a> 整合
|
||||
settings.slack_token=令牌
|
||||
settings.slack_domain=域名
|
||||
settings.slack_channel=頻道
|
||||
settings.deploy_keys=管理部署密鑰
|
||||
settings.deploy_keys_helper=<b>噢不!</b> 如果要新增個人的公開金要,請到 <a href="%s%s">用戶設定</a> 新增。
|
||||
settings.deploy_keys_helper=<b>噢不!</b> 如果要新增個人的公開金鑰,請到 <a href="%s%s">用戶設定</a> 新增。
|
||||
settings.add_deploy_key=添加部署密鑰
|
||||
settings.deploy_key_desc=部署密鑰僅具有隻讀權限,它在功能上和個人用戶的公開密鑰有本質區別。
|
||||
settings.no_deploy_keys=您還沒有添加任何部署密鑰。
|
||||
@@ -852,6 +860,8 @@ settings.add_key_success=新的部署密鑰 '%s' 添加成功!
|
||||
settings.deploy_key_deletion=刪除部署密鑰
|
||||
settings.deploy_key_deletion_desc=刪除該部署密鑰會移除本倉庫所有相關的操作權限。是否繼續?
|
||||
settings.deploy_key_deletion_success=刪除部署密鑰成功!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=瀏覽代碼
|
||||
diff.parent=父節點
|
||||
@@ -1087,11 +1097,12 @@ repos.stars=讚好數
|
||||
repos.issues=問題數
|
||||
repos.size=大小
|
||||
|
||||
auths.auth_manage_panel=認證管理面板
|
||||
auths.auth_sources=認證來源
|
||||
auths.new=添加新認證源
|
||||
auths.name=認證名稱
|
||||
auths.type=認證類型
|
||||
auths.enabled=已啟用
|
||||
auths.default=Default
|
||||
auths.updated=最後更新時間
|
||||
auths.auth_type=認證類型
|
||||
auths.auth_name=認證名稱
|
||||
@@ -1100,7 +1111,7 @@ auths.domain=域名
|
||||
auths.host=主機地址
|
||||
auths.port=主機端口
|
||||
auths.bind_dn=綁定DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_dn_helper=可以使用'%s'作為用戶名稱的預留位置,例如:DOM\%s
|
||||
auths.bind_password=綁定密碼
|
||||
auths.bind_password_helper=警告:該密碼將會以明文的形式保存在數據庫中。請不要使用擁有高權限的帳戶!
|
||||
auths.user_base=用戶搜索基準
|
||||
@@ -1110,11 +1121,11 @@ auths.attribute_username_placeholder=留空表示使用用戶登錄時所使用
|
||||
auths.attribute_name=歸納名字
|
||||
auths.attribute_surname=姓氏屬性
|
||||
auths.attribute_mail=電子郵箱屬性
|
||||
auths.verify_group_membership=Verify group membership
|
||||
auths.group_search_base_dn=Group Search Base DN
|
||||
auths.group_filter=Group Filter
|
||||
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
|
||||
auths.user_attribute_listed_in_group=User Attribute Listed in Group
|
||||
auths.verify_group_membership=驗證組成員身份
|
||||
auths.group_search_base_dn=組蒐索基準 DN
|
||||
auths.group_filter=組篩選器
|
||||
auths.group_attribute_contain_user_list=包含使用者列表的群組屬性
|
||||
auths.user_attribute_listed_in_group=組中列出的使用者屬性
|
||||
auths.attributes_in_bind=從 Bind DN 中獲取屬性信息
|
||||
auths.filter=使用者篩選器
|
||||
auths.admin_filter=管理者篩選器
|
||||
@@ -1128,9 +1139,9 @@ auths.enable_tls=啟用 TLS 加密
|
||||
auths.skip_tls_verify=忽略 TLS 驗證
|
||||
auths.pam_service_name=PAM 服務名稱
|
||||
auths.enable_auto_register=允許授權用戶自動註冊
|
||||
auths.tips=幫助提示
|
||||
auths.edit=編輯認證設置
|
||||
auths.activated=該授權認證已經啟用
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=新的認證源 "%s" 添加成功!
|
||||
auths.update_success=認證設置更新成功!
|
||||
auths.update=更新認證設置
|
||||
@@ -1141,7 +1152,7 @@ auths.still_in_used=一些使用者仍然使用此驗證方式,請先刪除或
|
||||
auths.deletion_success=認證源刪除成功!
|
||||
auths.login_source_exist=登錄源 '%s' 已存在。
|
||||
|
||||
config.not_set=(not set)
|
||||
config.not_set=(未設定)
|
||||
config.server_config=服務器配置
|
||||
config.app_name=應用名稱
|
||||
config.app_ver=應用版本
|
||||
@@ -1163,6 +1174,7 @@ config.ssh_domain=域名
|
||||
config.ssh_port=埠
|
||||
config.ssh_listen_port=監聽埠
|
||||
config.ssh_root_path=根路徑
|
||||
config.ssh_rewrite_authorized_keys_at_start=在啟動時重寫 authorized_keys 檔案
|
||||
config.ssh_key_test_path=金鑰測試路徑
|
||||
config.ssh_keygen_path=金鑰產生 (' ssh-keygen ') 路徑
|
||||
config.ssh_minimum_key_size_check=金鑰最小大小檢查
|
||||
@@ -1178,7 +1190,7 @@ config.disable_http_git=停用 HTTP Git
|
||||
config.enable_local_path_migration=啟用本地路徑遷移
|
||||
config.commits_fetch_concurrency=同時Fetch Commit數量
|
||||
|
||||
config.http_config=HTTP Configuration
|
||||
config.http_config=HTTP設定
|
||||
config.http_access_control_allow_origin=Access Control Allow Origin
|
||||
|
||||
config.db_config=資料庫設定
|
||||
@@ -1210,7 +1222,7 @@ config.skip_tls_verify=忽略 TLS 驗證
|
||||
config.mailer_config=郵件配置
|
||||
config.mailer_enabled=啟用服務
|
||||
config.mailer_disable_helo=禁用 HELO 操作
|
||||
config.mailer_name=發送者名稱
|
||||
config.mailer_subject_prefix=主旨前置詞
|
||||
config.mailer_host=郵件主機地址
|
||||
config.mailer_user=發送者帳號
|
||||
config.send_test_mail=發送測試郵件
|
||||
@@ -1283,7 +1295,6 @@ notices.delete_success=系統提示刪除成功!
|
||||
|
||||
[action]
|
||||
create_repo=創建了儲存庫 <a href="%s">%s</a>
|
||||
fork_repo=已經 fork 一個 repository 到 <a href="%s">%s</a>
|
||||
rename_repo=重新命名倉庫 <code>%[1]s</code> 為 <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=推送了 <a href="%[1]s/src/%[2]s">%[3]s</a> 分支的代碼到 <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=查看 %d 次提交的內容比對
|
||||
@@ -1300,6 +1311,10 @@ create_branch=在 <a href="%[1]s">%[4]s</a> 建立新的分支 <a href="%[1]s/sr
|
||||
delete_branch=已經刪除在 <a href="%[1]s">%[3]s</a> 上的分支 <code>%[2]s</code>
|
||||
push_tag=推送了標籤 <a href="%s/src/%s">%[2]s</a> 到 <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=已經刪除在 <a href="%[1]s">%[3]s</a> 上的標籤 <code>%[2]s</code>
|
||||
fork_repo=已經 fork 一個 repository 到 <a href="%s">%s</a>
|
||||
mirror_sync_push=已經從鏡像同步了提交 <a href="%[1]s/src/%[2]s">%[3]s</a> 於 <a href="%[1]s">%[4]s</a>
|
||||
mirror_sync_create=已經從鏡像同步了參考 <a href="%s/src/%s">%[2]s</a> 到 <a href="%[1]s">%[3]s</a>
|
||||
mirror_sync_delete=已經從鏡像同步並移除了參考 <code>%[2]s</code> 於 <a href="%[1]s">%[3]s</a>
|
||||
|
||||
[tool]
|
||||
ago=之前
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Docker for Gogs
|
||||
|
||||
Visit [Docker Hub](https://hub.docker.com/r/gogs/) / [Docker Store](https://store.docker.com/community/images/gogs/gogs) see all available images and tags.
|
||||
Visit [Docker Cloud](https://cloud.docker.com/swarm/gogs/repository/docker/gogs/gogs) / [Docker Store](https://store.docker.com/community/images/gogs/gogs) see all available images and tags.
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -36,6 +36,10 @@ Directory `/var/gogs` keeps Git repositories and Gogs data:
|
||||
|-- data
|
||||
|-- log
|
||||
|
||||
#### Custom Directory
|
||||
|
||||
The "custom" directory may not be obvious in Docker environment. The `/var/gogs/gogs` (in the host) and `/data/gogs` (in the container) is already the "custom" directory and you do not need to create another layer but directly edit corresponding files under this directory.
|
||||
|
||||
### Volume With Data Container
|
||||
|
||||
If you're more comfortable with mounting data to a data container, the commands you execute at the first time will look like as follows:
|
||||
|
||||
3
docker/aarch64/build.sh
Normal file
3
docker/aarch64/build.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
go build -ldflags "-w -s" resin-xbuild.go
|
||||
BIN
docker/aarch64/qemu-aarch64-static
Executable file
BIN
docker/aarch64/qemu-aarch64-static
Executable file
Binary file not shown.
BIN
docker/aarch64/resin-xbuild
Executable file
BIN
docker/aarch64/resin-xbuild
Executable file
Binary file not shown.
66
docker/aarch64/resin-xbuild.go
Normal file
66
docker/aarch64/resin-xbuild.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
func crossBuildStart() {
|
||||
err := os.Remove("/bin/sh")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
err = os.Link("/usr/bin/resin-xbuild", "/bin/sh")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func crossBuildEnd() {
|
||||
err := os.Remove("/bin/sh")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
err = os.Link("/bin/sh.real", "/bin/sh")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func runShell() error {
|
||||
cmd := exec.Command("/usr/bin/qemu-aarch64-static", append([]string{"-0", "/bin/sh", "/bin/sh"}, os.Args[1:]...)...)
|
||||
cmd.Stdin = os.Stdin
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
return cmd.Run()
|
||||
}
|
||||
|
||||
func main() {
|
||||
switch os.Args[0] {
|
||||
case "cross-build-start":
|
||||
crossBuildStart()
|
||||
case "cross-build-end":
|
||||
crossBuildEnd()
|
||||
case "/bin/sh":
|
||||
code := 0
|
||||
crossBuildEnd()
|
||||
|
||||
if err := runShell(); err != nil {
|
||||
code = 1
|
||||
if exiterr, ok := err.(*exec.ExitError); ok {
|
||||
if status, ok := exiterr.Sys().(syscall.WaitStatus); ok {
|
||||
code = status.ExitStatus()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
crossBuildStart()
|
||||
|
||||
// Hack to bypass apk issues with triggering
|
||||
code = 0
|
||||
|
||||
os.Exit(code)
|
||||
}
|
||||
}
|
||||
@@ -5,15 +5,14 @@ set -e
|
||||
# Set temp environment vars
|
||||
export GOPATH=/tmp/go
|
||||
export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin
|
||||
export GO15VENDOREXPERIMENT=1
|
||||
|
||||
# Install build deps
|
||||
apk --no-cache --no-progress add --virtual build-deps build-base linux-pam-dev
|
||||
|
||||
# Build Gogs
|
||||
mkdir -p ${GOPATH}/src/github.com/gogits/
|
||||
ln -s /app/gogs/build ${GOPATH}/src/github.com/gogits/gogs
|
||||
cd ${GOPATH}/src/github.com/gogits/gogs
|
||||
mkdir -p ${GOPATH}/src/github.com/gogs/
|
||||
ln -s /app/gogs/build ${GOPATH}/src/github.com/gogs/gogs
|
||||
cd ${GOPATH}/src/github.com/gogs/gogs
|
||||
# Needed since git 2.9.3 or 2.9.4
|
||||
git config --global http.https://gopkg.in.followRedirects true
|
||||
make build TAGS="sqlite cert pam"
|
||||
@@ -24,7 +23,9 @@ rm -r $GOPATH
|
||||
# Remove build deps
|
||||
apk --no-progress del build-deps
|
||||
|
||||
# Create git user for Gogs
|
||||
addgroup -S git
|
||||
adduser -G git -H -D -g 'Gogs Git User' git -h /data/git -s /bin/bash && usermod -p '*' git && passwd -u git
|
||||
echo "export GOGS_CUSTOM=${GOGS_CUSTOM}" >> /etc/profile
|
||||
# Move to final place
|
||||
mv /app/gogs/build/gogs /app/gogs/
|
||||
|
||||
# Cleanup go
|
||||
rm -rf /tmp/go
|
||||
rm -rf /usr/local/go
|
||||
|
||||
@@ -4,8 +4,10 @@
|
||||
set -x
|
||||
set -e
|
||||
|
||||
# Move to final place
|
||||
mv /app/gogs/build/gogs /app/gogs/
|
||||
# Create git user for Gogs
|
||||
addgroup -S git
|
||||
adduser -G git -H -D -g 'Gogs Git User' git -h /data/git -s /bin/bash && usermod -p '*' git && passwd -u git
|
||||
echo "export GOGS_CUSTOM=${GOGS_CUSTOM}" >> /etc/profile
|
||||
|
||||
# Final cleaning
|
||||
rm -rf /app/gogs/build
|
||||
@@ -14,6 +16,3 @@ rm /app/gogs/docker/build-go.sh
|
||||
rm /app/gogs/docker/finalize.sh
|
||||
rm /app/gogs/docker/nsswitch.conf
|
||||
rm /app/gogs/docker/README.md
|
||||
|
||||
rm -rf /tmp/go
|
||||
rm -rf /usr/local/go
|
||||
|
||||
@@ -13,4 +13,4 @@ index 14f4fa9..5599307 100644
|
||||
+
|
||||
if l.Debugvlog != 0 {
|
||||
l.Logf("%5.2f host link:", obj.Cputime())
|
||||
for _, v := range argv {
|
||||
for _, v := range argv {
|
||||
|
||||
@@ -19,5 +19,8 @@ ln -sfn /data/gogs/data ./data
|
||||
# Backward Compatibility with Gogs Container v0.6.15
|
||||
ln -sfn /data/git /home/git
|
||||
|
||||
chown -R git:git /data /app/gogs ~git/
|
||||
# Only chown for the first time, '/data/gogs/conf/app.ini' must exist inside Docker after installation
|
||||
if ! test -d /data/gogs/conf/app.ini; then
|
||||
chown -R git:git /data /app/gogs ~git/
|
||||
fi
|
||||
chmod 0755 /data /data/gogs ~git/
|
||||
|
||||
7
gogs.go
7
gogs.go
@@ -12,11 +12,11 @@ import (
|
||||
|
||||
"github.com/urfave/cli"
|
||||
|
||||
"github.com/gogits/gogs/cmd"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/cmd"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
const APP_VER = "0.11.33.1119"
|
||||
const APP_VER = "0.11.66.0916"
|
||||
|
||||
func init() {
|
||||
setting.AppVer = APP_VER
|
||||
@@ -37,6 +37,5 @@ func main() {
|
||||
cmd.Backup,
|
||||
cmd.Restore,
|
||||
}
|
||||
app.Flags = append(app.Flags, []cli.Flag{}...)
|
||||
app.Run(os.Args)
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
)
|
||||
|
||||
type AccessMode int
|
||||
@@ -237,6 +237,6 @@ func (repo *Repository) recalculateAccesses(e Engine) error {
|
||||
}
|
||||
|
||||
// RecalculateAccesses recalculates all accesses for repository.
|
||||
func (r *Repository) RecalculateAccesses() error {
|
||||
return r.recalculateAccesses(x)
|
||||
func (repo *Repository) RecalculateAccesses() error {
|
||||
return repo.recalculateAccesses(x)
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"path"
|
||||
"regexp"
|
||||
@@ -15,19 +14,20 @@ import (
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/go-xorm/xorm"
|
||||
"github.com/json-iterator/go"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/git-module"
|
||||
api "github.com/gogits/go-gogs-client"
|
||||
"github.com/gogs/git-module"
|
||||
api "github.com/gogs/go-gogs-client"
|
||||
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogits/gogs/pkg/tool"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/tool"
|
||||
)
|
||||
|
||||
type ActionType int
|
||||
|
||||
// To maintain backward compatibility only append to the end of list
|
||||
// Note: To maintain backward compatibility only append to the end of list
|
||||
const (
|
||||
ACTION_CREATE_REPO ActionType = iota + 1 // 1
|
||||
ACTION_RENAME_REPO // 2
|
||||
@@ -48,6 +48,9 @@ const (
|
||||
ACTION_DELETE_BRANCH // 17
|
||||
ACTION_DELETE_TAG // 18
|
||||
ACTION_FORK_REPO // 19
|
||||
ACTION_MIRROR_SYNC_PUSH // 20
|
||||
ACTION_MIRROR_SYNC_CREATE // 21
|
||||
ACTION_MIRROR_SYNC_DELETE // 22
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -77,14 +80,14 @@ type Action struct {
|
||||
OpType ActionType
|
||||
ActUserID int64 // Doer user ID
|
||||
ActUserName string // Doer user name
|
||||
ActAvatar string `xorm:"-"`
|
||||
ActAvatar string `xorm:"-" json:"-"`
|
||||
RepoID int64 `xorm:"INDEX"`
|
||||
RepoUserName string
|
||||
RepoName string
|
||||
RefName string
|
||||
IsPrivate bool `xorm:"NOT NULL DEFAULT false"`
|
||||
Content string `xorm:"TEXT"`
|
||||
Created time.Time `xorm:"-"`
|
||||
Created time.Time `xorm:"-" json:"-"`
|
||||
CreatedUnix int64
|
||||
}
|
||||
|
||||
@@ -251,7 +254,7 @@ func NewPushCommits() *PushCommits {
|
||||
}
|
||||
}
|
||||
|
||||
func (pc *PushCommits) ToApiPayloadCommits(repoPath, repoLink string) ([]*api.PayloadCommit, error) {
|
||||
func (pc *PushCommits) ToApiPayloadCommits(repoPath, repoURL string) ([]*api.PayloadCommit, error) {
|
||||
commits := make([]*api.PayloadCommit, len(pc.Commits))
|
||||
for i, commit := range pc.Commits {
|
||||
authorUsername := ""
|
||||
@@ -278,7 +281,7 @@ func (pc *PushCommits) ToApiPayloadCommits(repoPath, repoLink string) ([]*api.Pa
|
||||
commits[i] = &api.PayloadCommit{
|
||||
ID: commit.Sha1,
|
||||
Message: commit.Message,
|
||||
URL: fmt.Sprintf("%s/commit/%s", repoLink, commit.Sha1),
|
||||
URL: fmt.Sprintf("%s/commit/%s", repoURL, commit.Sha1),
|
||||
Author: &api.PayloadUser{
|
||||
Name: commit.AuthorName,
|
||||
Email: commit.AuthorEmail,
|
||||
@@ -498,7 +501,7 @@ func CommitRepoAction(opts CommitRepoActionOptions) error {
|
||||
opts.Commits.Commits = opts.Commits.Commits[:setting.UI.FeedMaxCommitNum]
|
||||
}
|
||||
|
||||
data, err := json.Marshal(opts.Commits)
|
||||
data, err := jsoniter.Marshal(opts.Commits)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Marshal: %v", err)
|
||||
}
|
||||
@@ -667,6 +670,71 @@ func MergePullRequestAction(actUser *User, repo *Repository, pull *Issue) error
|
||||
return mergePullRequestAction(x, actUser, repo, pull)
|
||||
}
|
||||
|
||||
func mirrorSyncAction(opType ActionType, repo *Repository, refName string, data []byte) error {
|
||||
return NotifyWatchers(&Action{
|
||||
ActUserID: repo.OwnerID,
|
||||
ActUserName: repo.MustOwner().Name,
|
||||
OpType: opType,
|
||||
Content: string(data),
|
||||
RepoID: repo.ID,
|
||||
RepoUserName: repo.MustOwner().Name,
|
||||
RepoName: repo.Name,
|
||||
RefName: refName,
|
||||
IsPrivate: repo.IsPrivate,
|
||||
})
|
||||
}
|
||||
|
||||
type MirrorSyncPushActionOptions struct {
|
||||
RefName string
|
||||
OldCommitID string
|
||||
NewCommitID string
|
||||
Commits *PushCommits
|
||||
}
|
||||
|
||||
// MirrorSyncPushAction adds new action for mirror synchronization of pushed commits.
|
||||
func MirrorSyncPushAction(repo *Repository, opts MirrorSyncPushActionOptions) error {
|
||||
if len(opts.Commits.Commits) > setting.UI.FeedMaxCommitNum {
|
||||
opts.Commits.Commits = opts.Commits.Commits[:setting.UI.FeedMaxCommitNum]
|
||||
}
|
||||
|
||||
apiCommits, err := opts.Commits.ToApiPayloadCommits(repo.RepoPath(), repo.HTMLURL())
|
||||
if err != nil {
|
||||
return fmt.Errorf("ToApiPayloadCommits: %v", err)
|
||||
}
|
||||
|
||||
opts.Commits.CompareURL = repo.ComposeCompareURL(opts.OldCommitID, opts.NewCommitID)
|
||||
apiPusher := repo.MustOwner().APIFormat()
|
||||
if err := PrepareWebhooks(repo, HOOK_EVENT_PUSH, &api.PushPayload{
|
||||
Ref: opts.RefName,
|
||||
Before: opts.OldCommitID,
|
||||
After: opts.NewCommitID,
|
||||
CompareURL: setting.AppURL + opts.Commits.CompareURL,
|
||||
Commits: apiCommits,
|
||||
Repo: repo.APIFormat(nil),
|
||||
Pusher: apiPusher,
|
||||
Sender: apiPusher,
|
||||
}); err != nil {
|
||||
return fmt.Errorf("PrepareWebhooks: %v", err)
|
||||
}
|
||||
|
||||
data, err := jsoniter.Marshal(opts.Commits)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return mirrorSyncAction(ACTION_MIRROR_SYNC_PUSH, repo, opts.RefName, data)
|
||||
}
|
||||
|
||||
// MirrorSyncCreateAction adds new action for mirror synchronization of new reference.
|
||||
func MirrorSyncCreateAction(repo *Repository, refName string) error {
|
||||
return mirrorSyncAction(ACTION_MIRROR_SYNC_CREATE, repo, refName, nil)
|
||||
}
|
||||
|
||||
// MirrorSyncCreateAction adds new action for mirror synchronization of delete reference.
|
||||
func MirrorSyncDeleteAction(repo *Repository, refName string) error {
|
||||
return mirrorSyncAction(ACTION_MIRROR_SYNC_DELETE, repo, refName, nil)
|
||||
}
|
||||
|
||||
// GetFeeds returns action list of given user in given context.
|
||||
// actorID is the user who's requesting, ctxUserID is the user/org that is requested.
|
||||
// actorID can be -1 when isProfile is true or to skip the permission check.
|
||||
|
||||
@@ -15,8 +15,8 @@ import (
|
||||
"github.com/go-xorm/xorm"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogits/gogs/pkg/tool"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/tool"
|
||||
)
|
||||
|
||||
type NoticeType int
|
||||
@@ -30,7 +30,7 @@ type Notice struct {
|
||||
ID int64
|
||||
Type NoticeType
|
||||
Description string `xorm:"TEXT"`
|
||||
Created time.Time `xorm:"-"`
|
||||
Created time.Time `xorm:"-" json:"-"`
|
||||
CreatedUnix int64
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ func CreateRepositoryNotice(desc string) error {
|
||||
// creates a system notice when error occurs.
|
||||
func RemoveAllWithNotice(title, path string) {
|
||||
var err error
|
||||
// LEGACY [Go 1.7]: workaround for Go not being able to remove read-only files/folders: https://github.com/golang/go/issues/9606
|
||||
// LEGACY [Go 1.7, 0.12]: workaround for Go not being able to remove read-only files/folders: https://github.com/golang/go/issues/9606
|
||||
// this bug should be fixed on Go 1.7, so the workaround should be removed when Gogs don't support Go 1.6 anymore:
|
||||
// https://github.com/golang/go/commit/2ffb3e5d905b5622204d199128dec06cefd57790
|
||||
// Note: Windows complains when delete target does not exist, therefore we can skip deletion in such cases.
|
||||
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
"github.com/go-xorm/xorm"
|
||||
gouuid "github.com/satori/go.uuid"
|
||||
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
// Attachment represent a attachment of issue/comment/release.
|
||||
@@ -27,7 +27,7 @@ type Attachment struct {
|
||||
ReleaseID int64 `xorm:"INDEX"`
|
||||
Name string
|
||||
|
||||
Created time.Time `xorm:"-"`
|
||||
Created time.Time `xorm:"-" json:"-"`
|
||||
CreatedUnix int64
|
||||
}
|
||||
|
||||
@@ -165,7 +165,6 @@ func DeleteAttachments(attachments []*Attachment, remove bool) (int, error) {
|
||||
// DeleteAttachmentsByIssue deletes all attachments associated with the given issue.
|
||||
func DeleteAttachmentsByIssue(issueId int64, remove bool) (int, error) {
|
||||
attachments, err := GetAttachmentsByIssueID(issueId)
|
||||
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
@@ -176,7 +175,6 @@ func DeleteAttachmentsByIssue(issueId int64, remove bool) (int, error) {
|
||||
// DeleteAttachmentsByComment deletes all attachments associated with the given comment.
|
||||
func DeleteAttachmentsByComment(commentId int64, remove bool) (int, error) {
|
||||
attachments, err := GetAttachmentsByCommentID(commentId)
|
||||
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
@@ -13,10 +13,10 @@ import (
|
||||
"github.com/go-xorm/xorm"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
api "github.com/gogits/go-gogs-client"
|
||||
api "github.com/gogs/go-gogs-client"
|
||||
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/markup"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/markup"
|
||||
)
|
||||
|
||||
// CommentType defines whether a comment is just a simple comment, an action (like close) or a reference.
|
||||
@@ -52,26 +52,26 @@ type Comment struct {
|
||||
ID int64
|
||||
Type CommentType
|
||||
PosterID int64
|
||||
Poster *User `xorm:"-"`
|
||||
Poster *User `xorm:"-" json:"-"`
|
||||
IssueID int64 `xorm:"INDEX"`
|
||||
Issue *Issue `xorm:"-"`
|
||||
Issue *Issue `xorm:"-" json:"-"`
|
||||
CommitID int64
|
||||
Line int64
|
||||
Content string `xorm:"TEXT"`
|
||||
RenderedContent string `xorm:"-"`
|
||||
RenderedContent string `xorm:"-" json:"-"`
|
||||
|
||||
Created time.Time `xorm:"-"`
|
||||
Created time.Time `xorm:"-" json:"-"`
|
||||
CreatedUnix int64
|
||||
Updated time.Time `xorm:"-"`
|
||||
Updated time.Time `xorm:"-" json:"-"`
|
||||
UpdatedUnix int64
|
||||
|
||||
// Reference issue in commit message
|
||||
CommitSHA string `xorm:"VARCHAR(40)"`
|
||||
|
||||
Attachments []*Attachment `xorm:"-"`
|
||||
Attachments []*Attachment `xorm:"-" json:"-"`
|
||||
|
||||
// For view issue page.
|
||||
ShowTag CommentTag `xorm:"-"`
|
||||
ShowTag CommentTag `xorm:"-" json:"-"`
|
||||
}
|
||||
|
||||
func (c *Comment) BeforeInsert() {
|
||||
@@ -132,14 +132,6 @@ func (c *Comment) LoadAttributes() error {
|
||||
return c.loadAttributes(x)
|
||||
}
|
||||
|
||||
func (c *Comment) AfterDelete() {
|
||||
_, err := DeleteAttachmentsByComment(c.ID, true)
|
||||
|
||||
if err != nil {
|
||||
log.Info("Could not delete files for comment %d on issue #%d: %s", c.ID, c.IssueID, err)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Comment) HTMLURL() string {
|
||||
return fmt.Sprintf("%s#issuecomment-%d", c.Issue.HTMLURL(), c.ID)
|
||||
}
|
||||
@@ -508,7 +500,7 @@ func DeleteCommentByID(doer *User, id int64) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err = sess.Id(comment.ID).Delete(new(Comment)); err != nil {
|
||||
if _, err = sess.ID(comment.ID).Delete(new(Comment)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -519,7 +511,12 @@ func DeleteCommentByID(doer *User, id int64) error {
|
||||
}
|
||||
|
||||
if err = sess.Commit(); err != nil {
|
||||
return fmt.Errorf("Commit: %v", err)
|
||||
return fmt.Errorf("commit: %v", err)
|
||||
}
|
||||
|
||||
_, err = DeleteAttachmentsByComment(comment.ID, true)
|
||||
if err != nil {
|
||||
log.Error(2, "Failed to delete attachments by comment[%d]: %v", comment.ID, err)
|
||||
}
|
||||
|
||||
if err = comment.Issue.LoadAttributes(); err != nil {
|
||||
|
||||
@@ -388,26 +388,6 @@ func (err ErrRepoFileAlreadyExist) Error() string {
|
||||
return fmt.Sprintf("repository file already exists [file_name: %s]", err.FileName)
|
||||
}
|
||||
|
||||
// __________ .__
|
||||
// \______ \____________ ____ ____ | |__
|
||||
// | | _/\_ __ \__ \ / \_/ ___\| | \
|
||||
// | | \ | | \// __ \| | \ \___| Y \
|
||||
// |______ / |__| (____ /___| /\___ >___| /
|
||||
// \/ \/ \/ \/ \/
|
||||
|
||||
type ErrBranchNotExist struct {
|
||||
Name string
|
||||
}
|
||||
|
||||
func IsErrBranchNotExist(err error) bool {
|
||||
_, ok := err.(ErrBranchNotExist)
|
||||
return ok
|
||||
}
|
||||
|
||||
func (err ErrBranchNotExist) Error() string {
|
||||
return fmt.Sprintf("branch does not exist [name: %s]", err.Name)
|
||||
}
|
||||
|
||||
// __________ .__ .__ __________ __
|
||||
// \______ \__ __| | | |\______ \ ____ ________ __ ____ _______/ |_
|
||||
// | ___/ | \ | | | | _// __ \/ ____/ | \_/ __ \ / ___/\ __\
|
||||
@@ -525,19 +505,6 @@ func (err ErrAttachmentNotExist) Error() string {
|
||||
// |_______ \____/\___ /|__|___| / /_______ /\____/|____/ |__| \___ >___ >
|
||||
// \/ /_____/ \/ \/ \/ \/
|
||||
|
||||
type ErrLoginSourceNotExist struct {
|
||||
ID int64
|
||||
}
|
||||
|
||||
func IsErrLoginSourceNotExist(err error) bool {
|
||||
_, ok := err.(ErrLoginSourceNotExist)
|
||||
return ok
|
||||
}
|
||||
|
||||
func (err ErrLoginSourceNotExist) Error() string {
|
||||
return fmt.Sprintf("login source does not exist [id: %d]", err.ID)
|
||||
}
|
||||
|
||||
type ErrLoginSourceAlreadyExist struct {
|
||||
Name string
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ package errors
|
||||
|
||||
import "errors"
|
||||
|
||||
var InternalServerError = errors.New("internal server error")
|
||||
|
||||
// New is a wrapper of real errors.New function.
|
||||
func New(text string) error {
|
||||
return errors.New(text)
|
||||
|
||||
@@ -6,6 +6,19 @@ package errors
|
||||
|
||||
import "fmt"
|
||||
|
||||
type LoginSourceNotExist struct {
|
||||
ID int64
|
||||
}
|
||||
|
||||
func IsLoginSourceNotExist(err error) bool {
|
||||
_, ok := err.(LoginSourceNotExist)
|
||||
return ok
|
||||
}
|
||||
|
||||
func (err LoginSourceNotExist) Error() string {
|
||||
return fmt.Sprintf("login source does not exist [id: %d]", err.ID)
|
||||
}
|
||||
|
||||
type LoginSourceNotActivated struct {
|
||||
SourceID int64
|
||||
}
|
||||
@@ -31,3 +44,17 @@ func IsInvalidLoginSourceType(err error) bool {
|
||||
func (err InvalidLoginSourceType) Error() string {
|
||||
return fmt.Sprintf("invalid login source type [type: %v]", err.Type)
|
||||
}
|
||||
|
||||
type LoginSourceMismatch struct {
|
||||
Expect int64
|
||||
Actual int64
|
||||
}
|
||||
|
||||
func IsLoginSourceMismatch(err error) bool {
|
||||
_, ok := err.(LoginSourceMismatch)
|
||||
return ok
|
||||
}
|
||||
|
||||
func (err LoginSourceMismatch) Error() string {
|
||||
return fmt.Sprintf("login source mismatch [expect: %d, actual: %d]", err.Expect, err.Actual)
|
||||
}
|
||||
|
||||
@@ -72,3 +72,16 @@ func IsBranchAlreadyExists(err error) bool {
|
||||
func (err BranchAlreadyExists) Error() string {
|
||||
return fmt.Sprintf("branch already exists [name: %s]", err.Name)
|
||||
}
|
||||
|
||||
type ErrBranchNotExist struct {
|
||||
Name string
|
||||
}
|
||||
|
||||
func IsErrBranchNotExist(err error) bool {
|
||||
_, ok := err.(ErrBranchNotExist)
|
||||
return ok
|
||||
}
|
||||
|
||||
func (err ErrBranchNotExist) Error() string {
|
||||
return fmt.Sprintf("branch does not exist [name: %s]", err.Name)
|
||||
}
|
||||
|
||||
@@ -15,11 +15,11 @@ import (
|
||||
"golang.org/x/net/html/charset"
|
||||
"golang.org/x/text/transform"
|
||||
|
||||
"github.com/gogits/git-module"
|
||||
"github.com/gogs/git-module"
|
||||
|
||||
"github.com/gogits/gogs/pkg/tool"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogits/gogs/pkg/template/highlight"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/template/highlight"
|
||||
"github.com/gogs/gogs/pkg/tool"
|
||||
)
|
||||
|
||||
type DiffSection struct {
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"html/template"
|
||||
"testing"
|
||||
|
||||
"github.com/gogits/git-module"
|
||||
"github.com/gogs/git-module"
|
||||
dmp "github.com/sergi/go-diff/diffmatchpatch"
|
||||
)
|
||||
|
||||
|
||||
@@ -13,11 +13,11 @@ import (
|
||||
"github.com/go-xorm/xorm"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
api "github.com/gogits/go-gogs-client"
|
||||
api "github.com/gogs/go-gogs-client"
|
||||
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogits/gogs/pkg/tool"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/tool"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -28,34 +28,34 @@ var (
|
||||
type Issue struct {
|
||||
ID int64
|
||||
RepoID int64 `xorm:"INDEX UNIQUE(repo_index)"`
|
||||
Repo *Repository `xorm:"-"`
|
||||
Repo *Repository `xorm:"-" json:"-"`
|
||||
Index int64 `xorm:"UNIQUE(repo_index)"` // Index in one repository.
|
||||
PosterID int64
|
||||
Poster *User `xorm:"-"`
|
||||
Poster *User `xorm:"-" json:"-"`
|
||||
Title string `xorm:"name"`
|
||||
Content string `xorm:"TEXT"`
|
||||
RenderedContent string `xorm:"-"`
|
||||
Labels []*Label `xorm:"-"`
|
||||
RenderedContent string `xorm:"-" json:"-"`
|
||||
Labels []*Label `xorm:"-" json:"-"`
|
||||
MilestoneID int64
|
||||
Milestone *Milestone `xorm:"-"`
|
||||
Milestone *Milestone `xorm:"-" json:"-"`
|
||||
Priority int
|
||||
AssigneeID int64
|
||||
Assignee *User `xorm:"-"`
|
||||
Assignee *User `xorm:"-" json:"-"`
|
||||
IsClosed bool
|
||||
IsRead bool `xorm:"-"`
|
||||
IsRead bool `xorm:"-" json:"-"`
|
||||
IsPull bool // Indicates whether is a pull request or not.
|
||||
PullRequest *PullRequest `xorm:"-"`
|
||||
PullRequest *PullRequest `xorm:"-" json:"-"`
|
||||
NumComments int
|
||||
|
||||
Deadline time.Time `xorm:"-"`
|
||||
Deadline time.Time `xorm:"-" json:"-"`
|
||||
DeadlineUnix int64
|
||||
Created time.Time `xorm:"-"`
|
||||
Created time.Time `xorm:"-" json:"-"`
|
||||
CreatedUnix int64
|
||||
Updated time.Time `xorm:"-"`
|
||||
Updated time.Time `xorm:"-" json:"-"`
|
||||
UpdatedUnix int64
|
||||
|
||||
Attachments []*Attachment `xorm:"-"`
|
||||
Comments []*Comment `xorm:"-"`
|
||||
Attachments []*Attachment `xorm:"-" json:"-"`
|
||||
Comments []*Comment `xorm:"-" json:"-"`
|
||||
}
|
||||
|
||||
func (issue *Issue) BeforeInsert() {
|
||||
@@ -402,7 +402,7 @@ func (i *Issue) ReadBy(uid int64) error {
|
||||
}
|
||||
|
||||
func updateIssueCols(e Engine, issue *Issue, cols ...string) error {
|
||||
_, err := e.Id(issue.ID).Cols(cols...).Update(issue)
|
||||
_, err := e.ID(issue.ID).Cols(cols...).Update(issue)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -843,7 +843,7 @@ func GetIssueByIndex(repoID, index int64) (*Issue, error) {
|
||||
|
||||
func getRawIssueByID(e Engine, id int64) (*Issue, error) {
|
||||
issue := new(Issue)
|
||||
has, err := e.Id(id).Get(issue)
|
||||
has, err := e.ID(id).Get(issue)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
@@ -1354,7 +1354,7 @@ func GetRepoIssueStats(repoID, userID int64, filterMode FilterMode, isPull bool)
|
||||
}
|
||||
|
||||
func updateIssue(e Engine, issue *Issue) error {
|
||||
_, err := e.Id(issue.ID).AllCols().Update(issue)
|
||||
_, err := e.ID(issue.ID).AllCols().Update(issue)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1423,7 +1423,7 @@ func updateIssueUsersByMentions(e Engine, issueID int64, uids []int64) error {
|
||||
|
||||
iu.IsMentioned = true
|
||||
if has {
|
||||
_, err = e.Id(iu.ID).AllCols().Update(iu)
|
||||
_, err = e.ID(iu.ID).AllCols().Update(iu)
|
||||
} else {
|
||||
_, err = e.Insert(iu)
|
||||
}
|
||||
|
||||
@@ -13,9 +13,9 @@ import (
|
||||
|
||||
"github.com/go-xorm/xorm"
|
||||
|
||||
api "github.com/gogits/go-gogs-client"
|
||||
api "github.com/gogs/go-gogs-client"
|
||||
|
||||
"github.com/gogits/gogs/pkg/tool"
|
||||
"github.com/gogs/gogs/pkg/tool"
|
||||
)
|
||||
|
||||
var labelColorPattern = regexp.MustCompile("#([a-fA-F0-9]{6})")
|
||||
@@ -60,8 +60,8 @@ type Label struct {
|
||||
Color string `xorm:"VARCHAR(7)"`
|
||||
NumIssues int
|
||||
NumClosedIssues int
|
||||
NumOpenIssues int `xorm:"-"`
|
||||
IsChecked bool `xorm:"-"`
|
||||
NumOpenIssues int `xorm:"-" json:"-"`
|
||||
IsChecked bool `xorm:"-" json:"-"`
|
||||
}
|
||||
|
||||
func (label *Label) APIFormat() *api.Label {
|
||||
@@ -196,7 +196,7 @@ func GetLabelsByIssueID(issueID int64) ([]*Label, error) {
|
||||
}
|
||||
|
||||
func updateLabel(e Engine, l *Label) error {
|
||||
_, err := e.Id(l.ID).AllCols().Update(l)
|
||||
_, err := e.ID(l.ID).AllCols().Update(l)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ func DeleteLabel(repoID, labelID int64) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err = sess.Id(labelID).Delete(new(Label)); err != nil {
|
||||
if _, err = sess.ID(labelID).Delete(new(Label)); err != nil {
|
||||
return err
|
||||
} else if _, err = sess.Where("label_id = ?", labelID).Delete(new(IssueLabel)); err != nil {
|
||||
return err
|
||||
|
||||
@@ -10,9 +10,9 @@ import (
|
||||
"github.com/Unknwon/com"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/gogs/pkg/mailer"
|
||||
"github.com/gogits/gogs/pkg/markup"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/mailer"
|
||||
"github.com/gogs/gogs/pkg/markup"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
func (issue *Issue) MailSubject() string {
|
||||
|
||||
@@ -6,22 +6,27 @@ package models
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/smtp"
|
||||
"net/textproto"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/go-macaron/binding"
|
||||
"github.com/go-xorm/core"
|
||||
"github.com/go-xorm/xorm"
|
||||
"github.com/json-iterator/go"
|
||||
log "gopkg.in/clog.v1"
|
||||
"gopkg.in/ini.v1"
|
||||
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/auth/ldap"
|
||||
"github.com/gogits/gogs/pkg/auth/pam"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/auth/ldap"
|
||||
"github.com/gogs/gogs/pkg/auth/pam"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
type LoginType int
|
||||
@@ -57,15 +62,15 @@ var (
|
||||
)
|
||||
|
||||
type LDAPConfig struct {
|
||||
*ldap.Source
|
||||
*ldap.Source `ini:"config"`
|
||||
}
|
||||
|
||||
func (cfg *LDAPConfig) FromDB(bs []byte) error {
|
||||
return json.Unmarshal(bs, &cfg)
|
||||
return jsoniter.Unmarshal(bs, &cfg)
|
||||
}
|
||||
|
||||
func (cfg *LDAPConfig) ToDB() ([]byte, error) {
|
||||
return json.Marshal(cfg)
|
||||
return jsoniter.Marshal(cfg)
|
||||
}
|
||||
|
||||
func (cfg *LDAPConfig) SecurityProtocolName() string {
|
||||
@@ -77,28 +82,49 @@ type SMTPConfig struct {
|
||||
Host string
|
||||
Port int
|
||||
AllowedDomains string `xorm:"TEXT"`
|
||||
TLS bool
|
||||
TLS bool `ini:"tls"`
|
||||
SkipVerify bool
|
||||
}
|
||||
|
||||
func (cfg *SMTPConfig) FromDB(bs []byte) error {
|
||||
return json.Unmarshal(bs, cfg)
|
||||
return jsoniter.Unmarshal(bs, cfg)
|
||||
}
|
||||
|
||||
func (cfg *SMTPConfig) ToDB() ([]byte, error) {
|
||||
return json.Marshal(cfg)
|
||||
return jsoniter.Marshal(cfg)
|
||||
}
|
||||
|
||||
type PAMConfig struct {
|
||||
ServiceName string // pam service (e.g. system-auth)
|
||||
ServiceName string // PAM service (e.g. system-auth)
|
||||
}
|
||||
|
||||
func (cfg *PAMConfig) FromDB(bs []byte) error {
|
||||
return json.Unmarshal(bs, &cfg)
|
||||
return jsoniter.Unmarshal(bs, &cfg)
|
||||
}
|
||||
|
||||
func (cfg *PAMConfig) ToDB() ([]byte, error) {
|
||||
return json.Marshal(cfg)
|
||||
return jsoniter.Marshal(cfg)
|
||||
}
|
||||
|
||||
// AuthSourceFile contains information of an authentication source file.
|
||||
type AuthSourceFile struct {
|
||||
abspath string
|
||||
file *ini.File
|
||||
}
|
||||
|
||||
// SetGeneral sets new value to the given key in the general (default) section.
|
||||
func (f *AuthSourceFile) SetGeneral(name, value string) {
|
||||
f.file.Section("").Key(name).SetValue(value)
|
||||
}
|
||||
|
||||
// SetConfig sets new values to the "config" section.
|
||||
func (f *AuthSourceFile) SetConfig(cfg core.Conversion) error {
|
||||
return f.file.Section("config").ReflectFrom(cfg)
|
||||
}
|
||||
|
||||
// Save writes updates into file system.
|
||||
func (f *AuthSourceFile) Save() error {
|
||||
return f.file.SaveTo(f.abspath)
|
||||
}
|
||||
|
||||
// LoginSource represents an external way for authorizing users.
|
||||
@@ -107,12 +133,15 @@ type LoginSource struct {
|
||||
Type LoginType
|
||||
Name string `xorm:"UNIQUE"`
|
||||
IsActived bool `xorm:"NOT NULL DEFAULT false"`
|
||||
IsDefault bool `xorm:"DEFAULT false"`
|
||||
Cfg core.Conversion `xorm:"TEXT"`
|
||||
|
||||
Created time.Time `xorm:"-"`
|
||||
Created time.Time `xorm:"-" json:"-"`
|
||||
CreatedUnix int64
|
||||
Updated time.Time `xorm:"-"`
|
||||
Updated time.Time `xorm:"-" json:"-"`
|
||||
UpdatedUnix int64
|
||||
|
||||
LocalFile *AuthSourceFile `xorm:"-" json:"-"`
|
||||
}
|
||||
|
||||
func (s *LoginSource) BeforeInsert() {
|
||||
@@ -135,16 +164,16 @@ func Cell2Int64(val xorm.Cell) int64 {
|
||||
return (*val).(int64)
|
||||
}
|
||||
|
||||
func (source *LoginSource) BeforeSet(colName string, val xorm.Cell) {
|
||||
func (s *LoginSource) BeforeSet(colName string, val xorm.Cell) {
|
||||
switch colName {
|
||||
case "type":
|
||||
switch LoginType(Cell2Int64(val)) {
|
||||
case LOGIN_LDAP, LOGIN_DLDAP:
|
||||
source.Cfg = new(LDAPConfig)
|
||||
s.Cfg = new(LDAPConfig)
|
||||
case LOGIN_SMTP:
|
||||
source.Cfg = new(SMTPConfig)
|
||||
s.Cfg = new(SMTPConfig)
|
||||
case LOGIN_PAM:
|
||||
source.Cfg = new(PAMConfig)
|
||||
s.Cfg = new(PAMConfig)
|
||||
default:
|
||||
panic("unrecognized login source type: " + com.ToStr(*val))
|
||||
}
|
||||
@@ -160,65 +189,66 @@ func (s *LoginSource) AfterSet(colName string, _ xorm.Cell) {
|
||||
}
|
||||
}
|
||||
|
||||
func (source *LoginSource) TypeName() string {
|
||||
return LoginNames[source.Type]
|
||||
func (s *LoginSource) TypeName() string {
|
||||
return LoginNames[s.Type]
|
||||
}
|
||||
|
||||
func (source *LoginSource) IsLDAP() bool {
|
||||
return source.Type == LOGIN_LDAP
|
||||
func (s *LoginSource) IsLDAP() bool {
|
||||
return s.Type == LOGIN_LDAP
|
||||
}
|
||||
|
||||
func (source *LoginSource) IsDLDAP() bool {
|
||||
return source.Type == LOGIN_DLDAP
|
||||
func (s *LoginSource) IsDLDAP() bool {
|
||||
return s.Type == LOGIN_DLDAP
|
||||
}
|
||||
|
||||
func (source *LoginSource) IsSMTP() bool {
|
||||
return source.Type == LOGIN_SMTP
|
||||
func (s *LoginSource) IsSMTP() bool {
|
||||
return s.Type == LOGIN_SMTP
|
||||
}
|
||||
|
||||
func (source *LoginSource) IsPAM() bool {
|
||||
return source.Type == LOGIN_PAM
|
||||
func (s *LoginSource) IsPAM() bool {
|
||||
return s.Type == LOGIN_PAM
|
||||
}
|
||||
|
||||
func (source *LoginSource) HasTLS() bool {
|
||||
return ((source.IsLDAP() || source.IsDLDAP()) &&
|
||||
source.LDAP().SecurityProtocol > ldap.SECURITY_PROTOCOL_UNENCRYPTED) ||
|
||||
source.IsSMTP()
|
||||
func (s *LoginSource) HasTLS() bool {
|
||||
return ((s.IsLDAP() || s.IsDLDAP()) &&
|
||||
s.LDAP().SecurityProtocol > ldap.SECURITY_PROTOCOL_UNENCRYPTED) ||
|
||||
s.IsSMTP()
|
||||
}
|
||||
|
||||
func (source *LoginSource) UseTLS() bool {
|
||||
switch source.Type {
|
||||
func (s *LoginSource) UseTLS() bool {
|
||||
switch s.Type {
|
||||
case LOGIN_LDAP, LOGIN_DLDAP:
|
||||
return source.LDAP().SecurityProtocol != ldap.SECURITY_PROTOCOL_UNENCRYPTED
|
||||
return s.LDAP().SecurityProtocol != ldap.SECURITY_PROTOCOL_UNENCRYPTED
|
||||
case LOGIN_SMTP:
|
||||
return source.SMTP().TLS
|
||||
return s.SMTP().TLS
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (source *LoginSource) SkipVerify() bool {
|
||||
switch source.Type {
|
||||
func (s *LoginSource) SkipVerify() bool {
|
||||
switch s.Type {
|
||||
case LOGIN_LDAP, LOGIN_DLDAP:
|
||||
return source.LDAP().SkipVerify
|
||||
return s.LDAP().SkipVerify
|
||||
case LOGIN_SMTP:
|
||||
return source.SMTP().SkipVerify
|
||||
return s.SMTP().SkipVerify
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (source *LoginSource) LDAP() *LDAPConfig {
|
||||
return source.Cfg.(*LDAPConfig)
|
||||
func (s *LoginSource) LDAP() *LDAPConfig {
|
||||
return s.Cfg.(*LDAPConfig)
|
||||
}
|
||||
|
||||
func (source *LoginSource) SMTP() *SMTPConfig {
|
||||
return source.Cfg.(*SMTPConfig)
|
||||
func (s *LoginSource) SMTP() *SMTPConfig {
|
||||
return s.Cfg.(*SMTPConfig)
|
||||
}
|
||||
|
||||
func (source *LoginSource) PAM() *PAMConfig {
|
||||
return source.Cfg.(*PAMConfig)
|
||||
func (s *LoginSource) PAM() *PAMConfig {
|
||||
return s.Cfg.(*PAMConfig)
|
||||
}
|
||||
|
||||
func CreateLoginSource(source *LoginSource) error {
|
||||
has, err := x.Get(&LoginSource{Name: source.Name})
|
||||
if err != nil {
|
||||
@@ -228,12 +258,31 @@ func CreateLoginSource(source *LoginSource) error {
|
||||
}
|
||||
|
||||
_, err = x.Insert(source)
|
||||
return err
|
||||
if err != nil {
|
||||
return err
|
||||
} else if source.IsDefault {
|
||||
return ResetNonDefaultLoginSources(source)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// LoginSources returns all login sources defined.
|
||||
func LoginSources() ([]*LoginSource, error) {
|
||||
auths := make([]*LoginSource, 0, 5)
|
||||
return auths, x.Find(&auths)
|
||||
sources := make([]*LoginSource, 0, 2)
|
||||
if err := x.Find(&sources); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return append(sources, localLoginSources.List()...), nil
|
||||
}
|
||||
|
||||
// ActivatedLoginSources returns login sources that are currently activated.
|
||||
func ActivatedLoginSources() ([]*LoginSource, error) {
|
||||
sources := make([]*LoginSource, 0, 2)
|
||||
if err := x.Where("is_actived = ?", true).Find(&sources); err != nil {
|
||||
return nil, fmt.Errorf("find activated login sources: %v", err)
|
||||
}
|
||||
return append(sources, localLoginSources.ActivatedList()...), nil
|
||||
}
|
||||
|
||||
// GetLoginSourceByID returns login source by given ID.
|
||||
@@ -243,14 +292,53 @@ func GetLoginSourceByID(id int64) (*LoginSource, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, ErrLoginSourceNotExist{id}
|
||||
return localLoginSources.GetLoginSourceByID(id)
|
||||
}
|
||||
return source, nil
|
||||
}
|
||||
|
||||
func UpdateSource(source *LoginSource) error {
|
||||
_, err := x.Id(source.ID).AllCols().Update(source)
|
||||
return err
|
||||
// ResetNonDefaultLoginSources clean other default source flag
|
||||
func ResetNonDefaultLoginSources(source *LoginSource) error {
|
||||
// update changes to DB
|
||||
if _, err := x.NotIn("id", []int64{source.ID}).Cols("is_default").Update(&LoginSource{IsDefault: false}); err != nil {
|
||||
return err
|
||||
}
|
||||
// write changes to local authentications
|
||||
for i := range localLoginSources.sources {
|
||||
if localLoginSources.sources[i].LocalFile != nil && localLoginSources.sources[i].ID != source.ID {
|
||||
localLoginSources.sources[i].LocalFile.SetGeneral("is_default", "false")
|
||||
if err := localLoginSources.sources[i].LocalFile.SetConfig(source.Cfg); err != nil {
|
||||
return fmt.Errorf("LocalFile.SetConfig: %v", err)
|
||||
} else if err = localLoginSources.sources[i].LocalFile.Save(); err != nil {
|
||||
return fmt.Errorf("LocalFile.Save: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
// flush memory so that web page can show the same behaviors
|
||||
localLoginSources.UpdateLoginSource(source)
|
||||
return nil
|
||||
}
|
||||
|
||||
// UpdateLoginSource updates information of login source to database or local file.
|
||||
func UpdateLoginSource(source *LoginSource) error {
|
||||
if source.LocalFile == nil {
|
||||
if _, err := x.Id(source.ID).AllCols().Update(source); err != nil {
|
||||
return err
|
||||
} else {
|
||||
return ResetNonDefaultLoginSources(source)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
source.LocalFile.SetGeneral("name", source.Name)
|
||||
source.LocalFile.SetGeneral("is_activated", com.ToStr(source.IsActived))
|
||||
source.LocalFile.SetGeneral("is_default", com.ToStr(source.IsDefault))
|
||||
if err := source.LocalFile.SetConfig(source.Cfg); err != nil {
|
||||
return fmt.Errorf("LocalFile.SetConfig: %v", err)
|
||||
} else if err = source.LocalFile.Save(); err != nil {
|
||||
return fmt.Errorf("LocalFile.Save: %v", err)
|
||||
}
|
||||
return ResetNonDefaultLoginSources(source)
|
||||
}
|
||||
|
||||
func DeleteSource(source *LoginSource) error {
|
||||
@@ -264,10 +352,152 @@ func DeleteSource(source *LoginSource) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// CountLoginSources returns number of login sources.
|
||||
// CountLoginSources returns total number of login sources.
|
||||
func CountLoginSources() int64 {
|
||||
count, _ := x.Count(new(LoginSource))
|
||||
return count
|
||||
return count + int64(localLoginSources.Len())
|
||||
}
|
||||
|
||||
// LocalLoginSources contains authentication sources configured and loaded from local files.
|
||||
// Calling its methods is thread-safe; otherwise, please maintain the mutex accordingly.
|
||||
type LocalLoginSources struct {
|
||||
sync.RWMutex
|
||||
sources []*LoginSource
|
||||
}
|
||||
|
||||
func (s *LocalLoginSources) Len() int {
|
||||
return len(s.sources)
|
||||
}
|
||||
|
||||
// List returns full clone of login sources.
|
||||
func (s *LocalLoginSources) List() []*LoginSource {
|
||||
s.RLock()
|
||||
defer s.RUnlock()
|
||||
|
||||
list := make([]*LoginSource, s.Len())
|
||||
for i := range s.sources {
|
||||
list[i] = &LoginSource{}
|
||||
*list[i] = *s.sources[i]
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
// ActivatedList returns clone of activated login sources.
|
||||
func (s *LocalLoginSources) ActivatedList() []*LoginSource {
|
||||
s.RLock()
|
||||
defer s.RUnlock()
|
||||
|
||||
list := make([]*LoginSource, 0, 2)
|
||||
for i := range s.sources {
|
||||
if !s.sources[i].IsActived {
|
||||
continue
|
||||
}
|
||||
source := &LoginSource{}
|
||||
*source = *s.sources[i]
|
||||
list = append(list, source)
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
// GetLoginSourceByID returns a clone of login source by given ID.
|
||||
func (s *LocalLoginSources) GetLoginSourceByID(id int64) (*LoginSource, error) {
|
||||
s.RLock()
|
||||
defer s.RUnlock()
|
||||
|
||||
for i := range s.sources {
|
||||
if s.sources[i].ID == id {
|
||||
source := &LoginSource{}
|
||||
*source = *s.sources[i]
|
||||
return source, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, errors.LoginSourceNotExist{id}
|
||||
}
|
||||
|
||||
// UpdateLoginSource updates in-memory copy of the authentication source.
|
||||
func (s *LocalLoginSources) UpdateLoginSource(source *LoginSource) {
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
|
||||
source.Updated = time.Now()
|
||||
for i := range s.sources {
|
||||
if s.sources[i].ID == source.ID {
|
||||
*s.sources[i] = *source
|
||||
} else if source.IsDefault {
|
||||
s.sources[i].IsDefault = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var localLoginSources = &LocalLoginSources{}
|
||||
|
||||
// LoadAuthSources loads authentication sources from local files
|
||||
// and converts them into login sources.
|
||||
func LoadAuthSources() {
|
||||
authdPath := path.Join(setting.CustomPath, "conf/auth.d")
|
||||
if !com.IsDir(authdPath) {
|
||||
return
|
||||
}
|
||||
|
||||
paths, err := com.GetFileListBySuffix(authdPath, ".conf")
|
||||
if err != nil {
|
||||
log.Fatal(2, "Failed to list authentication sources: %v", err)
|
||||
}
|
||||
|
||||
localLoginSources.sources = make([]*LoginSource, 0, len(paths))
|
||||
|
||||
for _, fpath := range paths {
|
||||
authSource, err := ini.Load(fpath)
|
||||
if err != nil {
|
||||
log.Fatal(2, "Failed to load authentication source: %v", err)
|
||||
}
|
||||
authSource.NameMapper = ini.TitleUnderscore
|
||||
|
||||
// Set general attributes
|
||||
s := authSource.Section("")
|
||||
loginSource := &LoginSource{
|
||||
ID: s.Key("id").MustInt64(),
|
||||
Name: s.Key("name").String(),
|
||||
IsActived: s.Key("is_activated").MustBool(),
|
||||
IsDefault: s.Key("is_default").MustBool(),
|
||||
LocalFile: &AuthSourceFile{
|
||||
abspath: fpath,
|
||||
file: authSource,
|
||||
},
|
||||
}
|
||||
|
||||
fi, err := os.Stat(fpath)
|
||||
if err != nil {
|
||||
log.Fatal(2, "Failed to load authentication source: %v", err)
|
||||
}
|
||||
loginSource.Updated = fi.ModTime()
|
||||
|
||||
// Parse authentication source file
|
||||
authType := s.Key("type").String()
|
||||
switch authType {
|
||||
case "ldap_bind_dn":
|
||||
loginSource.Type = LOGIN_LDAP
|
||||
loginSource.Cfg = &LDAPConfig{}
|
||||
case "ldap_simple_auth":
|
||||
loginSource.Type = LOGIN_DLDAP
|
||||
loginSource.Cfg = &LDAPConfig{}
|
||||
case "smtp":
|
||||
loginSource.Type = LOGIN_SMTP
|
||||
loginSource.Cfg = &SMTPConfig{}
|
||||
case "pam":
|
||||
loginSource.Type = LOGIN_PAM
|
||||
loginSource.Cfg = &PAMConfig{}
|
||||
default:
|
||||
log.Fatal(2, "Failed to load authentication source: unknown type '%s'", authType)
|
||||
}
|
||||
|
||||
if err = authSource.Section("config").MapTo(loginSource.Cfg); err != nil {
|
||||
log.Fatal(2, "Failed to parse authentication source 'config': %v", err)
|
||||
}
|
||||
|
||||
localLoginSources.sources = append(localLoginSources.sources, loginSource)
|
||||
}
|
||||
}
|
||||
|
||||
// .____ ________ _____ __________
|
||||
@@ -497,7 +727,7 @@ func LoginViaPAM(user *User, login, password string, sourceID int64, cfg *PAMCon
|
||||
return user, CreateUser(user)
|
||||
}
|
||||
|
||||
func ExternalUserLogin(user *User, login, password string, source *LoginSource, autoRegister bool) (*User, error) {
|
||||
func remoteUserLogin(user *User, login, password string, source *LoginSource, autoRegister bool) (*User, error) {
|
||||
if !source.IsActived {
|
||||
return nil, errors.LoginSourceNotActivated{source.ID}
|
||||
}
|
||||
@@ -514,8 +744,9 @@ func ExternalUserLogin(user *User, login, password string, source *LoginSource,
|
||||
return nil, errors.InvalidLoginSourceType{source.Type}
|
||||
}
|
||||
|
||||
// UserSignIn validates user name and password.
|
||||
func UserSignIn(username, password string) (*User, error) {
|
||||
// UserLogin validates user name and password via given login source ID.
|
||||
// If the loginSourceID is negative, it will abort login process if user is not found.
|
||||
func UserLogin(username, password string, loginSourceID int64) (*User, error) {
|
||||
var user *User
|
||||
if strings.Contains(username, "@") {
|
||||
user = &User{Email: strings.ToLower(username)}
|
||||
@@ -525,44 +756,44 @@ func UserSignIn(username, password string) (*User, error) {
|
||||
|
||||
hasUser, err := x.Get(user)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("get user record: %v", err)
|
||||
}
|
||||
|
||||
if hasUser {
|
||||
switch user.LoginType {
|
||||
case LOGIN_NOTYPE, LOGIN_PLAIN:
|
||||
// Note: This check is unnecessary but to reduce user confusion at login page
|
||||
// and make it more consistent at user's perspective.
|
||||
if loginSourceID >= 0 && user.LoginSource != loginSourceID {
|
||||
return nil, errors.LoginSourceMismatch{loginSourceID, user.LoginSource}
|
||||
}
|
||||
|
||||
// Validate password hash fetched from database for local accounts
|
||||
if user.LoginType == LOGIN_NOTYPE ||
|
||||
user.LoginType == LOGIN_PLAIN {
|
||||
if user.ValidatePassword(password) {
|
||||
return user, nil
|
||||
}
|
||||
|
||||
return nil, errors.UserNotExist{user.ID, user.Name}
|
||||
|
||||
default:
|
||||
var source LoginSource
|
||||
hasSource, err := x.Id(user.LoginSource).Get(&source)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !hasSource {
|
||||
return nil, ErrLoginSourceNotExist{user.LoginSource}
|
||||
}
|
||||
|
||||
return ExternalUserLogin(user, user.LoginName, password, &source, false)
|
||||
}
|
||||
|
||||
// Remote login to the login source the user is associated with
|
||||
source, err := GetLoginSourceByID(user.LoginSource)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return remoteUserLogin(user, user.LoginName, password, source, false)
|
||||
}
|
||||
|
||||
sources := make([]*LoginSource, 0, 3)
|
||||
if err = x.UseBool().Find(&sources, &LoginSource{IsActived: true}); err != nil {
|
||||
// Non-local login source is always greater than 0
|
||||
if loginSourceID <= 0 {
|
||||
return nil, errors.UserNotExist{-1, username}
|
||||
}
|
||||
|
||||
source, err := GetLoginSourceByID(loginSourceID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, source := range sources {
|
||||
authUser, err := ExternalUserLogin(nil, username, password, source, true)
|
||||
if err == nil {
|
||||
return authUser, nil
|
||||
}
|
||||
|
||||
log.Warn("Failed to login '%s' via '%s': %v", username, source.Name, err)
|
||||
}
|
||||
|
||||
return nil, errors.UserNotExist{user.ID, user.Name}
|
||||
return remoteUserLogin(nil, username, password, source, true)
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
"github.com/go-xorm/xorm"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/gogs/pkg/tool"
|
||||
"github.com/gogs/gogs/pkg/tool"
|
||||
)
|
||||
|
||||
const _MIN_DB_VER = 10
|
||||
@@ -64,6 +64,10 @@ var migrations = []Migration{
|
||||
NewMigration("update repository sizes", updateRepositorySizes),
|
||||
// v16 -> v17:v0.10.31
|
||||
NewMigration("remove invalid protect branch whitelist", removeInvalidProtectBranchWhitelist),
|
||||
// v17 -> v18:v0.11.48
|
||||
NewMigration("store long text in repository description field", updateRepositoryDescriptionField),
|
||||
// v18 -> v19:v0.11.55
|
||||
NewMigration("clean unlinked webhook and hook_tasks", cleanUnlinkedWebhookAndHookTasks),
|
||||
}
|
||||
|
||||
// Migrate database to current version
|
||||
@@ -98,9 +102,9 @@ You can migrate your older database using a previous release, then you can upgra
|
||||
Please save following instructions to somewhere and start working:
|
||||
|
||||
- If you were using below 0.6.0 (e.g. 0.5.x), download last supported archive from following link:
|
||||
https://github.com/gogits/gogs/releases/tag/v0.7.33
|
||||
https://github.com/gogs/gogs/releases/tag/v0.7.33
|
||||
- If you were using below 0.7.0 (e.g. 0.6.x), download last supported archive from following link:
|
||||
https://github.com/gogits/gogs/releases/tag/v0.9.141
|
||||
https://github.com/gogs/gogs/releases/tag/v0.9.141
|
||||
|
||||
Once finished downloading,
|
||||
|
||||
@@ -133,13 +137,6 @@ In case you're stilling getting this notice, go through instructions again until
|
||||
return nil
|
||||
}
|
||||
|
||||
func sessionRelease(sess *xorm.Session) {
|
||||
if !sess.IsCommitedOrRollbacked {
|
||||
sess.Rollback()
|
||||
}
|
||||
sess.Close()
|
||||
}
|
||||
|
||||
func generateOrgRandsAndSalt(x *xorm.Engine) (err error) {
|
||||
type User struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
@@ -165,7 +162,7 @@ func generateOrgRandsAndSalt(x *xorm.Engine) (err error) {
|
||||
if org.Salt, err = tool.RandomString(10); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err = sess.Id(org.ID).Update(org); err != nil {
|
||||
if _, err = sess.ID(org.ID).Update(org); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
package migrations
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/go-xorm/xorm"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
func ldapUseSSLToSecurityProtocol(x *xorm.Engine) error {
|
||||
@@ -30,17 +30,17 @@ func ldapUseSSLToSecurityProtocol(x *xorm.Engine) error {
|
||||
|
||||
for _, result := range results {
|
||||
cfg := map[string]interface{}{}
|
||||
if err = json.Unmarshal(result["cfg"], &cfg); err != nil {
|
||||
return fmt.Errorf("decode JSON config: %v", err)
|
||||
if err = jsoniter.Unmarshal(result["cfg"], &cfg); err != nil {
|
||||
return fmt.Errorf("unmarshal JSON config: %v", err)
|
||||
}
|
||||
if com.ToStr(cfg["UseSSL"]) == "true" {
|
||||
cfg["SecurityProtocol"] = 1 // LDAPS
|
||||
}
|
||||
delete(cfg, "UseSSL")
|
||||
|
||||
data, err := json.Marshal(&cfg)
|
||||
data, err := jsoniter.Marshal(&cfg)
|
||||
if err != nil {
|
||||
return fmt.Errorf("encode JSON config: %v", err)
|
||||
return fmt.Errorf("marshal JSON config: %v", err)
|
||||
}
|
||||
|
||||
if _, err = sess.Exec("UPDATE `login_source` SET `cfg`=? WHERE `id`=?",
|
||||
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
"github.com/go-xorm/xorm"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
func generateAndMigrateGitHooks(x *xorm.Engine) (err error) {
|
||||
|
||||
@@ -12,9 +12,9 @@ import (
|
||||
"github.com/go-xorm/xorm"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/git-module"
|
||||
"github.com/gogs/git-module"
|
||||
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
func updateRepositorySizes(x *xorm.Engine) (err error) {
|
||||
|
||||
34
models/migrations/v18.go
Normal file
34
models/migrations/v18.go
Normal file
@@ -0,0 +1,34 @@
|
||||
// Copyright 2018 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 migrations
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/go-xorm/xorm"
|
||||
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
func updateRepositoryDescriptionField(x *xorm.Engine) error {
|
||||
exist, err := x.IsTableExist("repository")
|
||||
if err != nil {
|
||||
return fmt.Errorf("IsTableExist: %v", err)
|
||||
} else if !exist {
|
||||
return nil
|
||||
}
|
||||
switch {
|
||||
case setting.UseMySQL:
|
||||
_, err = x.Exec("ALTER TABLE `repository` MODIFY `description` VARCHAR(512);")
|
||||
case setting.UseMSSQL:
|
||||
_, err = x.Exec("ALTER TABLE `repository` ALTER COLUMN `description` VARCHAR(512);")
|
||||
case setting.UsePostgreSQL:
|
||||
_, err = x.Exec("ALTER TABLE `repository` ALTER COLUMN `description` TYPE VARCHAR(512);")
|
||||
case setting.UseSQLite3:
|
||||
// Sqlite3 uses TEXT type by default for any string type field.
|
||||
// Keep this comment to mention that we don't missed any option.
|
||||
}
|
||||
return err
|
||||
}
|
||||
18
models/migrations/v19.go
Normal file
18
models/migrations/v19.go
Normal file
@@ -0,0 +1,18 @@
|
||||
// Copyright 2018 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 migrations
|
||||
|
||||
import (
|
||||
"github.com/go-xorm/xorm"
|
||||
)
|
||||
|
||||
func cleanUnlinkedWebhookAndHookTasks(x *xorm.Engine) error {
|
||||
_, err := x.Exec(`DELETE FROM webhook WHERE repo_id NOT IN (SELECT id FROM repository);`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = x.Exec(`DELETE FROM hook_task WHERE repo_id NOT IN (SELECT id FROM repository);`)
|
||||
return err
|
||||
}
|
||||
@@ -11,9 +11,9 @@ import (
|
||||
"github.com/go-xorm/xorm"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
api "github.com/gogits/go-gogs-client"
|
||||
api "github.com/gogs/go-gogs-client"
|
||||
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
// Milestone represents a milestone of repository.
|
||||
@@ -22,18 +22,18 @@ type Milestone struct {
|
||||
RepoID int64 `xorm:"INDEX"`
|
||||
Name string
|
||||
Content string `xorm:"TEXT"`
|
||||
RenderedContent string `xorm:"-"`
|
||||
RenderedContent string `xorm:"-" json:"-"`
|
||||
IsClosed bool
|
||||
NumIssues int
|
||||
NumClosedIssues int
|
||||
NumOpenIssues int `xorm:"-"`
|
||||
NumOpenIssues int `xorm:"-" json:"-"`
|
||||
Completeness int // Percentage(1-100).
|
||||
IsOverDue bool `xorm:"-"`
|
||||
IsOverDue bool `xorm:"-" json:"-"`
|
||||
|
||||
DeadlineString string `xorm:"-"`
|
||||
Deadline time.Time `xorm:"-"`
|
||||
DeadlineString string `xorm:"-" json:"-"`
|
||||
Deadline time.Time `xorm:"-" json:"-"`
|
||||
DeadlineUnix int64
|
||||
ClosedDate time.Time `xorm:"-"`
|
||||
ClosedDate time.Time `xorm:"-" json:"-"`
|
||||
ClosedDateUnix int64
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ func GetMilestones(repoID int64, page int, isClosed bool) ([]*Milestone, error)
|
||||
}
|
||||
|
||||
func updateMilestone(e Engine, m *Milestone) error {
|
||||
_, err := e.Id(m.ID).AllCols().Update(m)
|
||||
_, err := e.ID(m.ID).AllCols().Update(m)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ func ChangeMilestoneStatus(m *Milestone, isClosed bool) (err error) {
|
||||
|
||||
repo.NumMilestones = int(countRepoMilestones(sess, repo.ID))
|
||||
repo.NumClosedMilestones = int(countRepoClosedMilestones(sess, repo.ID))
|
||||
if _, err = sess.Id(repo.ID).AllCols().Update(repo); err != nil {
|
||||
if _, err = sess.ID(repo.ID).AllCols().Update(repo); err != nil {
|
||||
return err
|
||||
}
|
||||
return sess.Commit()
|
||||
@@ -383,13 +383,13 @@ func DeleteMilestoneOfRepoByID(repoID, id int64) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err = sess.Id(m.ID).Delete(new(Milestone)); err != nil {
|
||||
if _, err = sess.ID(m.ID).Delete(new(Milestone)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repo.NumMilestones = int(countRepoMilestones(sess, repo.ID))
|
||||
repo.NumClosedMilestones = int(countRepoClosedMilestones(sess, repo.ID))
|
||||
if _, err = sess.Id(repo.ID).AllCols().Update(repo); err != nil {
|
||||
if _, err = sess.ID(repo.ID).AllCols().Update(repo); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
201
models/mirror.go
201
models/mirror.go
@@ -15,12 +15,12 @@ import (
|
||||
log "gopkg.in/clog.v1"
|
||||
"gopkg.in/ini.v1"
|
||||
|
||||
"github.com/gogits/git-module"
|
||||
"github.com/gogs/git-module"
|
||||
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/process"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogits/gogs/pkg/sync"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/process"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/sync"
|
||||
)
|
||||
|
||||
var MirrorQueue = sync.NewUniqueQueue(setting.Repository.MirrorQueueLength)
|
||||
@@ -29,26 +29,26 @@ var MirrorQueue = sync.NewUniqueQueue(setting.Repository.MirrorQueueLength)
|
||||
type Mirror struct {
|
||||
ID int64
|
||||
RepoID int64
|
||||
Repo *Repository `xorm:"-"`
|
||||
Repo *Repository `xorm:"-" json:"-"`
|
||||
Interval int // Hour.
|
||||
EnablePrune bool `xorm:"NOT NULL DEFAULT true"`
|
||||
|
||||
Updated time.Time `xorm:"-"`
|
||||
UpdatedUnix int64
|
||||
NextUpdate time.Time `xorm:"-"`
|
||||
NextUpdateUnix int64
|
||||
// Last and next sync time of Git data from upstream
|
||||
LastSync time.Time `xorm:"-" json:"-"`
|
||||
LastSyncUnix int64 `xorm:"updated_unix"`
|
||||
NextSync time.Time `xorm:"-" json:"-"`
|
||||
NextSyncUnix int64 `xorm:"next_update_unix"`
|
||||
|
||||
address string `xorm:"-"`
|
||||
address string `xorm:"-" json:"-"`
|
||||
}
|
||||
|
||||
func (m *Mirror) BeforeInsert() {
|
||||
m.UpdatedUnix = time.Now().Unix()
|
||||
m.NextUpdateUnix = m.NextUpdate.Unix()
|
||||
m.NextSyncUnix = m.NextSync.Unix()
|
||||
}
|
||||
|
||||
func (m *Mirror) BeforeUpdate() {
|
||||
m.UpdatedUnix = time.Now().Unix()
|
||||
m.NextUpdateUnix = m.NextUpdate.Unix()
|
||||
m.LastSyncUnix = m.LastSync.Unix()
|
||||
m.NextSyncUnix = m.NextSync.Unix()
|
||||
}
|
||||
|
||||
func (m *Mirror) AfterSet(colName string, _ xorm.Cell) {
|
||||
@@ -60,15 +60,15 @@ func (m *Mirror) AfterSet(colName string, _ xorm.Cell) {
|
||||
log.Error(3, "GetRepositoryByID [%d]: %v", m.ID, err)
|
||||
}
|
||||
case "updated_unix":
|
||||
m.Updated = time.Unix(m.UpdatedUnix, 0).Local()
|
||||
m.LastSync = time.Unix(m.LastSyncUnix, 0).Local()
|
||||
case "next_update_unix":
|
||||
m.NextUpdate = time.Unix(m.NextUpdateUnix, 0).Local()
|
||||
m.NextSync = time.Unix(m.NextSyncUnix, 0).Local()
|
||||
}
|
||||
}
|
||||
|
||||
// ScheduleNextUpdate calculates and sets next update time.
|
||||
func (m *Mirror) ScheduleNextUpdate() {
|
||||
m.NextUpdate = time.Now().Add(time.Duration(m.Interval) * time.Hour)
|
||||
// ScheduleNextSync calculates and sets next sync time based on repostiroy mirror setting.
|
||||
func (m *Mirror) ScheduleNextSync() {
|
||||
m.NextSync = time.Now().Add(time.Duration(m.Interval) * time.Hour)
|
||||
}
|
||||
|
||||
// findPasswordInMirrorAddress returns start (inclusive) and end index (exclusive)
|
||||
@@ -188,8 +188,67 @@ func (m *Mirror) SaveAddress(addr string) error {
|
||||
return cfg.SaveToIndent(configPath, "\t")
|
||||
}
|
||||
|
||||
const GIT_SHORT_EMPTY_SHA = "0000000"
|
||||
|
||||
// mirrorSyncResult contains information of a updated reference.
|
||||
// If the oldCommitID is "0000000", it means a new reference, the value of newCommitID is empty.
|
||||
// If the newCommitID is "0000000", it means the reference is deleted, the value of oldCommitID is empty.
|
||||
type mirrorSyncResult struct {
|
||||
refName string
|
||||
oldCommitID string
|
||||
newCommitID string
|
||||
}
|
||||
|
||||
// parseRemoteUpdateOutput detects create, update and delete operations of references from upstream.
|
||||
func parseRemoteUpdateOutput(output string) []*mirrorSyncResult {
|
||||
results := make([]*mirrorSyncResult, 0, 3)
|
||||
lines := strings.Split(output, "\n")
|
||||
for i := range lines {
|
||||
// Make sure reference name is presented before continue
|
||||
idx := strings.Index(lines[i], "-> ")
|
||||
if idx == -1 {
|
||||
continue
|
||||
}
|
||||
|
||||
refName := lines[i][idx+3:]
|
||||
|
||||
switch {
|
||||
case strings.HasPrefix(lines[i], " * "): // New reference
|
||||
results = append(results, &mirrorSyncResult{
|
||||
refName: refName,
|
||||
oldCommitID: GIT_SHORT_EMPTY_SHA,
|
||||
})
|
||||
case strings.HasPrefix(lines[i], " - "): // Delete reference
|
||||
results = append(results, &mirrorSyncResult{
|
||||
refName: refName,
|
||||
newCommitID: GIT_SHORT_EMPTY_SHA,
|
||||
})
|
||||
case strings.HasPrefix(lines[i], " "): // New commits of a reference
|
||||
delimIdx := strings.Index(lines[i][3:], " ")
|
||||
if delimIdx == -1 {
|
||||
log.Error(2, "SHA delimiter not found: %q", lines[i])
|
||||
continue
|
||||
}
|
||||
shas := strings.Split(lines[i][3:delimIdx+3], "..")
|
||||
if len(shas) != 2 {
|
||||
log.Error(2, "Expect two SHAs but not what found: %q", lines[i])
|
||||
continue
|
||||
}
|
||||
results = append(results, &mirrorSyncResult{
|
||||
refName: refName,
|
||||
oldCommitID: shas[0],
|
||||
newCommitID: shas[1],
|
||||
})
|
||||
|
||||
default:
|
||||
log.Warn("parseRemoteUpdateOutput: unexpected update line %q", lines[i])
|
||||
}
|
||||
}
|
||||
return results
|
||||
}
|
||||
|
||||
// runSync returns true if sync finished without error.
|
||||
func (m *Mirror) runSync() bool {
|
||||
func (m *Mirror) runSync() ([]*mirrorSyncResult, bool) {
|
||||
repoPath := m.Repo.RepoPath()
|
||||
wikiPath := m.Repo.WikiPath()
|
||||
timeout := time.Duration(setting.Git.Timeout.Mirror) * time.Second
|
||||
@@ -204,29 +263,32 @@ func (m *Mirror) runSync() bool {
|
||||
if err := CreateRepositoryNotice(desc); err != nil {
|
||||
log.Error(2, "CreateRepositoryNotice: %v", err)
|
||||
}
|
||||
return false
|
||||
return nil, false
|
||||
}
|
||||
|
||||
gitArgs := []string{"remote", "update"}
|
||||
if m.EnablePrune {
|
||||
gitArgs = append(gitArgs, "--prune")
|
||||
}
|
||||
if _, stderr, err := process.ExecDir(
|
||||
_, stderr, err := process.ExecDir(
|
||||
timeout, repoPath, fmt.Sprintf("Mirror.runSync: %s", repoPath),
|
||||
"git", gitArgs...); err != nil {
|
||||
"git", gitArgs...)
|
||||
if err != nil {
|
||||
desc := fmt.Sprintf("Fail to update mirror repository '%s': %s", repoPath, stderr)
|
||||
log.Error(2, desc)
|
||||
if err = CreateRepositoryNotice(desc); err != nil {
|
||||
log.Error(2, "CreateRepositoryNotice: %v", err)
|
||||
}
|
||||
return false
|
||||
return nil, false
|
||||
}
|
||||
output := stderr
|
||||
|
||||
if err := m.Repo.UpdateSize(); err != nil {
|
||||
log.Error(2, "UpdateSize [repo_id: %d]: %v", m.Repo.ID, err)
|
||||
}
|
||||
|
||||
if m.Repo.HasWiki() {
|
||||
// Even if wiki sync failed, we still want results from the main repository
|
||||
if _, stderr, err := process.ExecDir(
|
||||
timeout, wikiPath, fmt.Sprintf("Mirror.runSync: %s", wikiPath),
|
||||
"git", "remote", "update", "--prune"); err != nil {
|
||||
@@ -235,11 +297,10 @@ func (m *Mirror) runSync() bool {
|
||||
if err = CreateRepositoryNotice(desc); err != nil {
|
||||
log.Error(2, "CreateRepositoryNotice: %v", err)
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
return parseRemoteUpdateOutput(output), true
|
||||
}
|
||||
|
||||
func getMirrorByRepoID(e Engine, repoID int64) (*Mirror, error) {
|
||||
@@ -259,7 +320,7 @@ func GetMirrorByRepoID(repoID int64) (*Mirror, error) {
|
||||
}
|
||||
|
||||
func updateMirror(e Engine, m *Mirror) error {
|
||||
_, err := e.Id(m.ID).AllCols().Update(m)
|
||||
_, err := e.ID(m.ID).AllCols().Update(m)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -301,22 +362,92 @@ func MirrorUpdate() {
|
||||
func SyncMirrors() {
|
||||
// Start listening on new sync requests.
|
||||
for repoID := range MirrorQueue.Queue() {
|
||||
log.Trace("SyncMirrors [repo_id: %v]", repoID)
|
||||
log.Trace("SyncMirrors [repo_id: %s]", repoID)
|
||||
MirrorQueue.Remove(repoID)
|
||||
|
||||
m, err := GetMirrorByRepoID(com.StrTo(repoID).MustInt64())
|
||||
if err != nil {
|
||||
log.Error(2, "GetMirrorByRepoID [%s]: %v", m.RepoID, err)
|
||||
log.Error(2, "GetMirrorByRepoID [%d]: %v", m.RepoID, err)
|
||||
continue
|
||||
}
|
||||
|
||||
if !m.runSync() {
|
||||
results, ok := m.runSync()
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
m.ScheduleNextUpdate()
|
||||
m.ScheduleNextSync()
|
||||
if err = UpdateMirror(m); err != nil {
|
||||
log.Error(2, "UpdateMirror [%s]: %v", m.RepoID, err)
|
||||
log.Error(2, "UpdateMirror [%d]: %v", m.RepoID, err)
|
||||
continue
|
||||
}
|
||||
|
||||
// TODO:
|
||||
// - Create "Mirror Sync" webhook event
|
||||
// - Create mirror sync (create, push and delete) events and trigger the "mirror sync" webhooks
|
||||
|
||||
var gitRepo *git.Repository
|
||||
if len(results) == 0 {
|
||||
log.Trace("SyncMirrors [repo_id: %d]: no commits fetched", m.RepoID)
|
||||
} else {
|
||||
gitRepo, err = git.OpenRepository(m.Repo.RepoPath())
|
||||
if err != nil {
|
||||
log.Error(2, "OpenRepository [%d]: %v", m.RepoID, err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
for _, result := range results {
|
||||
// Discard GitHub pull requests, i.e. refs/pull/*
|
||||
if strings.HasPrefix(result.refName, "refs/pull/") {
|
||||
continue
|
||||
}
|
||||
|
||||
// Create reference
|
||||
if result.oldCommitID == GIT_SHORT_EMPTY_SHA {
|
||||
if err = MirrorSyncCreateAction(m.Repo, result.refName); err != nil {
|
||||
log.Error(2, "MirrorSyncCreateAction [repo_id: %d]: %v", m.RepoID, err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
// Delete reference
|
||||
if result.newCommitID == GIT_SHORT_EMPTY_SHA {
|
||||
if err = MirrorSyncDeleteAction(m.Repo, result.refName); err != nil {
|
||||
log.Error(2, "MirrorSyncDeleteAction [repo_id: %d]: %v", m.RepoID, err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
// Push commits
|
||||
oldCommitID, err := git.GetFullCommitID(gitRepo.Path, result.oldCommitID)
|
||||
if err != nil {
|
||||
log.Error(2, "GetFullCommitID [%d]: %v", m.RepoID, err)
|
||||
continue
|
||||
}
|
||||
newCommitID, err := git.GetFullCommitID(gitRepo.Path, result.newCommitID)
|
||||
if err != nil {
|
||||
log.Error(2, "GetFullCommitID [%d]: %v", m.RepoID, err)
|
||||
continue
|
||||
}
|
||||
commits, err := gitRepo.CommitsBetweenIDs(newCommitID, oldCommitID)
|
||||
if err != nil {
|
||||
log.Error(2, "CommitsBetweenIDs [repo_id: %d, new_commit_id: %s, old_commit_id: %s]: %v", m.RepoID, newCommitID, oldCommitID, err)
|
||||
continue
|
||||
}
|
||||
if err = MirrorSyncPushAction(m.Repo, MirrorSyncPushActionOptions{
|
||||
RefName: result.refName,
|
||||
OldCommitID: oldCommitID,
|
||||
NewCommitID: newCommitID,
|
||||
Commits: ListToPushCommits(commits),
|
||||
}); err != nil {
|
||||
log.Error(2, "MirrorSyncPushAction [repo_id: %d]: %v", m.RepoID, err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if _, err = x.Exec("UPDATE mirror SET updated_unix = ? WHERE repo_id = ?", time.Now().Unix(), m.RepoID); err != nil {
|
||||
log.Error(2, "Update 'mirror.updated_unix' [%d]: %v", m.RepoID, err)
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -324,14 +455,14 @@ func SyncMirrors() {
|
||||
// update if latest commit date is newer.
|
||||
commitDate, err := git.GetLatestCommitDate(m.Repo.RepoPath(), "")
|
||||
if err != nil {
|
||||
log.Error(2, "GetLatestCommitDate [%s]: %v", m.RepoID, err)
|
||||
log.Error(2, "GetLatestCommitDate [%d]: %v", m.RepoID, err)
|
||||
continue
|
||||
} else if commitDate.Before(m.Repo.Updated) {
|
||||
continue
|
||||
}
|
||||
|
||||
if _, err = x.Exec("UPDATE repository SET updated_unix = ? WHERE id = ?", commitDate.Unix(), m.RepoID); err != nil {
|
||||
log.Error(2, "Update repository 'updated_unix' [%s]: %v", m.RepoID, err)
|
||||
log.Error(2, "Update 'repository.updated_unix' [%d]: %v", m.RepoID, err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,40 @@ import (
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
)
|
||||
|
||||
func Test_parseRemoteUpdateOutput(t *testing.T) {
|
||||
Convey("Parse mirror remote update output", t, func() {
|
||||
testCases := []struct {
|
||||
output string
|
||||
results []*mirrorSyncResult
|
||||
}{
|
||||
{
|
||||
`
|
||||
From https://try.gogs.io/unknwon/upsteam
|
||||
* [new branch] develop -> develop
|
||||
b0bb24f..1d85a4f master -> master
|
||||
- [deleted] (none) -> bugfix
|
||||
`,
|
||||
[]*mirrorSyncResult{
|
||||
{"develop", GIT_SHORT_EMPTY_SHA, ""},
|
||||
{"master", "b0bb24f", "1d85a4f"},
|
||||
{"bugfix", "", GIT_SHORT_EMPTY_SHA},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
results := parseRemoteUpdateOutput(tc.output)
|
||||
So(len(results), ShouldEqual, len(tc.results))
|
||||
|
||||
for i := range tc.results {
|
||||
So(tc.results[i].refName, ShouldEqual, results[i].refName)
|
||||
So(tc.results[i].oldCommitID, ShouldEqual, results[i].oldCommitID)
|
||||
So(tc.results[i].newCommitID, ShouldEqual, results[i].newCommitID)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func Test_findPasswordInMirrorAddress(t *testing.T) {
|
||||
Convey("Find password portion in mirror address", t, func() {
|
||||
testCases := []struct {
|
||||
|
||||
@@ -7,7 +7,6 @@ package models
|
||||
import (
|
||||
"bufio"
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/url"
|
||||
@@ -20,11 +19,12 @@ import (
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/go-xorm/core"
|
||||
"github.com/go-xorm/xorm"
|
||||
"github.com/json-iterator/go"
|
||||
_ "github.com/lib/pq"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/gogs/models/migrations"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/models/migrations"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
// Engine represents a XORM engine or session.
|
||||
@@ -33,7 +33,7 @@ type Engine interface {
|
||||
Exec(string, ...interface{}) (sql.Result, error)
|
||||
Find(interface{}, ...interface{}) error
|
||||
Get(interface{}) (bool, error)
|
||||
Id(interface{}) *xorm.Session
|
||||
ID(interface{}) *xorm.Session
|
||||
In(string, ...interface{}) *xorm.Session
|
||||
Insert(...interface{}) (int64, error)
|
||||
InsertOne(interface{}) (int64, error)
|
||||
@@ -134,12 +134,14 @@ func getEngine() (*xorm.Engine, error) {
|
||||
switch DbCfg.Type {
|
||||
case "mysql":
|
||||
if DbCfg.Host[0] == '/' { // looks like a unix socket
|
||||
connStr = fmt.Sprintf("%s:%s@unix(%s)/%s%scharset=utf8&parseTime=true",
|
||||
connStr = fmt.Sprintf("%s:%s@unix(%s)/%s%scharset=utf8mb4&parseTime=true",
|
||||
DbCfg.User, DbCfg.Passwd, DbCfg.Host, DbCfg.Name, Param)
|
||||
} else {
|
||||
connStr = fmt.Sprintf("%s:%s@tcp(%s)/%s%scharset=utf8&parseTime=true",
|
||||
connStr = fmt.Sprintf("%s:%s@tcp(%s)/%s%scharset=utf8mb4&parseTime=true",
|
||||
DbCfg.User, DbCfg.Passwd, DbCfg.Host, DbCfg.Name, Param)
|
||||
}
|
||||
var engineParams = map[string]string{"rowFormat": "DYNAMIC"}
|
||||
return xorm.NewEngineWithParams(DbCfg.Type, connStr, engineParams)
|
||||
case "postgres":
|
||||
host, port := parsePostgreSQLHostPort(DbCfg.Host)
|
||||
if host[0] == '/' { // looks like a unix socket
|
||||
@@ -283,8 +285,7 @@ func DumpDatabase(dirPath string) (err error) {
|
||||
}
|
||||
|
||||
if err = x.Asc("id").Iterate(table, func(idx int, bean interface{}) (err error) {
|
||||
enc := json.NewEncoder(f)
|
||||
return enc.Encode(bean)
|
||||
return jsoniter.NewEncoder(f).Encode(bean)
|
||||
}); err != nil {
|
||||
f.Close()
|
||||
return fmt.Errorf("fail to dump table '%s': %v", tableName, err)
|
||||
@@ -298,6 +299,11 @@ func DumpDatabase(dirPath string) (err error) {
|
||||
func ImportDatabase(dirPath string, verbose bool) (err error) {
|
||||
snakeMapper := core.SnakeMapper{}
|
||||
|
||||
skipInsertProcessors := map[string]bool{
|
||||
"mirror": true,
|
||||
"milestone": true,
|
||||
}
|
||||
|
||||
// Purposely create a local variable to not modify global variable
|
||||
tables := append(tables, new(Version))
|
||||
for _, table := range tables {
|
||||
@@ -312,22 +318,24 @@ func ImportDatabase(dirPath string, verbose bool) (err error) {
|
||||
}
|
||||
|
||||
if err = x.DropTables(table); err != nil {
|
||||
return fmt.Errorf("fail to drop table '%s': %v", tableName, err)
|
||||
return fmt.Errorf("drop table '%s': %v", tableName, err)
|
||||
} else if err = x.Sync2(table); err != nil {
|
||||
return fmt.Errorf("fail to sync table '%s': %v", tableName, err)
|
||||
return fmt.Errorf("sync table '%s': %v", tableName, err)
|
||||
}
|
||||
|
||||
f, err := os.Open(tableFile)
|
||||
if err != nil {
|
||||
return fmt.Errorf("fail to open JSON file: %v", err)
|
||||
return fmt.Errorf("open JSON file: %v", err)
|
||||
}
|
||||
rawTableName := x.TableName(table)
|
||||
_, isInsertProcessor := table.(xorm.BeforeInsertProcessor)
|
||||
scanner := bufio.NewScanner(f)
|
||||
for scanner.Scan() {
|
||||
switch bean := table.(type) {
|
||||
case *LoginSource:
|
||||
meta := make(map[string]interface{})
|
||||
if err = json.Unmarshal(scanner.Bytes(), &meta); err != nil {
|
||||
return fmt.Errorf("fail to unmarshal to map: %v", err)
|
||||
if err = jsoniter.Unmarshal(scanner.Bytes(), &meta); err != nil {
|
||||
return fmt.Errorf("unmarshal to map: %v", err)
|
||||
}
|
||||
|
||||
tp := LoginType(com.StrTo(com.ToStr(meta["Type"])).MustInt64())
|
||||
@@ -344,12 +352,31 @@ func ImportDatabase(dirPath string, verbose bool) (err error) {
|
||||
table = bean
|
||||
}
|
||||
|
||||
if err = json.Unmarshal(scanner.Bytes(), table); err != nil {
|
||||
return fmt.Errorf("fail to unmarshal to struct: %v", err)
|
||||
if err = jsoniter.Unmarshal(scanner.Bytes(), table); err != nil {
|
||||
return fmt.Errorf("unmarshal to struct: %v", err)
|
||||
}
|
||||
|
||||
if _, err = x.Insert(table); err != nil {
|
||||
return fmt.Errorf("fail to insert strcut: %v", err)
|
||||
return fmt.Errorf("insert strcut: %v", err)
|
||||
}
|
||||
|
||||
meta := make(map[string]interface{})
|
||||
if err = jsoniter.Unmarshal(scanner.Bytes(), &meta); err != nil {
|
||||
log.Error(2, "Failed to unmarshal to map: %v", err)
|
||||
}
|
||||
|
||||
// Reset created_unix back to the date save in archive because Insert method updates its value
|
||||
if isInsertProcessor && !skipInsertProcessors[rawTableName] {
|
||||
if _, err = x.Exec("UPDATE "+rawTableName+" SET created_unix=? WHERE id=?", meta["CreatedUnix"], meta["ID"]); err != nil {
|
||||
log.Error(2, "Failed to reset 'created_unix': %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
switch rawTableName {
|
||||
case "milestone":
|
||||
if _, err = x.Exec("UPDATE "+rawTableName+" SET deadline_unix=?, closed_date_unix=? WHERE id=?", meta["DeadlineUnix"], meta["ClosedDateUnix"], meta["ID"]); err != nil {
|
||||
log.Error(2, "Failed to reset 'milestone.deadline_unix', 'milestone.closed_date_unix': %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -358,7 +385,7 @@ func ImportDatabase(dirPath string, verbose bool) (err error) {
|
||||
rawTableName := snakeMapper.Obj2Table(tableName)
|
||||
seqName := rawTableName + "_id_seq"
|
||||
if _, err = x.Exec(fmt.Sprintf(`SELECT setval('%s', COALESCE((SELECT MAX(id)+1 FROM "%s"), 1), false);`, seqName, rawTableName)); err != nil {
|
||||
return fmt.Errorf("fail to reset table '%s' sequence: %v", rawTableName, err)
|
||||
return fmt.Errorf("reset table '%s' sequence: %v", rawTableName, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -410,7 +410,7 @@ func RemoveOrgUser(orgID, userID int64) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := sess.Id(ou.ID).Delete(ou); err != nil {
|
||||
if _, err := sess.ID(ou.ID).Delete(ou); err != nil {
|
||||
return err
|
||||
} else if _, err = sess.Exec("UPDATE `user` SET num_members=num_members-1 WHERE id=?", orgID); err != nil {
|
||||
return err
|
||||
|
||||
@@ -22,8 +22,8 @@ type Team struct {
|
||||
Name string
|
||||
Description string
|
||||
Authorize AccessMode
|
||||
Repos []*Repository `xorm:"-"`
|
||||
Members []*User `xorm:"-"`
|
||||
Repos []*Repository `xorm:"-" json:"-"`
|
||||
Members []*User `xorm:"-" json:"-"`
|
||||
NumRepos int
|
||||
NumMembers int
|
||||
}
|
||||
@@ -31,7 +31,7 @@ type Team struct {
|
||||
func (t *Team) AfterSet(colName string, _ xorm.Cell) {
|
||||
switch colName {
|
||||
case "num_repos":
|
||||
// LEGACY [1.0]: this is backward compatibility bug fix for https://github.com/gogits/gogs/issues/3671
|
||||
// LEGACY [1.0]: this is backward compatibility bug fix for https://github.com/gogs/gogs/issues/3671
|
||||
if t.NumRepos < 0 {
|
||||
t.NumRepos = 0
|
||||
}
|
||||
@@ -111,7 +111,7 @@ func (t *Team) addRepository(e Engine, repo *Repository) (err error) {
|
||||
}
|
||||
|
||||
t.NumRepos++
|
||||
if _, err = e.Id(t.ID).AllCols().Update(t); err != nil {
|
||||
if _, err = e.ID(t.ID).AllCols().Update(t); err != nil {
|
||||
return fmt.Errorf("update team: %v", err)
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ func (t *Team) removeRepository(e Engine, repo *Repository, recalculate bool) (e
|
||||
}
|
||||
|
||||
t.NumRepos--
|
||||
if _, err = e.Id(t.ID).AllCols().Update(t); err != nil {
|
||||
if _, err = e.ID(t.ID).AllCols().Update(t); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -286,7 +286,7 @@ func GetTeamOfOrgByName(orgID int64, name string) (*Team, error) {
|
||||
|
||||
func getTeamByID(e Engine, teamID int64) (*Team, error) {
|
||||
t := new(Team)
|
||||
has, err := e.Id(teamID).Get(t)
|
||||
has, err := e.ID(teamID).Get(t)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
@@ -334,7 +334,7 @@ func UpdateTeam(t *Team, authChanged bool) (err error) {
|
||||
return ErrTeamAlreadyExist{t.OrgID, t.LowerName}
|
||||
}
|
||||
|
||||
if _, err = sess.Id(t.ID).AllCols().Update(t); err != nil {
|
||||
if _, err = sess.ID(t.ID).AllCols().Update(t); err != nil {
|
||||
return fmt.Errorf("update: %v", err)
|
||||
}
|
||||
|
||||
@@ -386,7 +386,7 @@ func DeleteTeam(t *Team) error {
|
||||
}
|
||||
|
||||
// Delete team.
|
||||
if _, err = sess.Id(t.ID).Delete(new(Team)); err != nil {
|
||||
if _, err = sess.ID(t.ID).Delete(new(Team)); err != nil {
|
||||
return err
|
||||
}
|
||||
// Update organization number of teams.
|
||||
@@ -431,7 +431,7 @@ func getTeamMembers(e Engine, teamID int64) (_ []*User, err error) {
|
||||
members := make([]*User, 0, len(teamUsers))
|
||||
for i := range teamUsers {
|
||||
member := new(User)
|
||||
if _, err = e.Id(teamUsers[i].UID).Get(member); err != nil {
|
||||
if _, err = e.ID(teamUsers[i].UID).Get(member); err != nil {
|
||||
return nil, fmt.Errorf("get user '%d': %v", teamUsers[i].UID, err)
|
||||
}
|
||||
members = append(members, member)
|
||||
@@ -500,7 +500,7 @@ func AddTeamMember(orgID, teamID, userID int64) error {
|
||||
}
|
||||
if _, err = sess.Insert(tu); err != nil {
|
||||
return err
|
||||
} else if _, err = sess.Id(t.ID).Update(t); err != nil {
|
||||
} else if _, err = sess.ID(t.ID).Update(t); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -520,7 +520,7 @@ func AddTeamMember(orgID, teamID, userID int64) error {
|
||||
if t.IsOwnerTeam() {
|
||||
ou.IsOwner = true
|
||||
}
|
||||
if _, err = sess.Id(ou.ID).AllCols().Update(ou); err != nil {
|
||||
if _, err = sess.ID(ou.ID).AllCols().Update(ou); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -562,7 +562,7 @@ func removeTeamMember(e Engine, orgID, teamID, uid int64) error {
|
||||
}
|
||||
if _, err := e.Delete(tu); err != nil {
|
||||
return err
|
||||
} else if _, err = e.Id(t.ID).AllCols().Update(t); err != nil {
|
||||
} else if _, err = e.ID(t.ID).AllCols().Update(t); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -583,7 +583,7 @@ func removeTeamMember(e Engine, orgID, teamID, uid int64) error {
|
||||
if t.IsOwnerTeam() {
|
||||
ou.IsOwner = false
|
||||
}
|
||||
if _, err = e.Id(ou.ID).AllCols().Update(ou); err != nil {
|
||||
if _, err = e.ID(ou.ID).AllCols().Update(ou); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -15,13 +15,13 @@ import (
|
||||
"github.com/go-xorm/xorm"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/git-module"
|
||||
api "github.com/gogits/go-gogs-client"
|
||||
"github.com/gogs/git-module"
|
||||
api "github.com/gogs/go-gogs-client"
|
||||
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/process"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogits/gogs/pkg/sync"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/process"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/sync"
|
||||
)
|
||||
|
||||
var PullRequestQueue = sync.NewUniqueQueue(setting.Repository.PullRequestQueueLength)
|
||||
@@ -48,13 +48,13 @@ type PullRequest struct {
|
||||
Status PullRequestStatus
|
||||
|
||||
IssueID int64 `xorm:"INDEX"`
|
||||
Issue *Issue `xorm:"-"`
|
||||
Issue *Issue `xorm:"-" json:"-"`
|
||||
Index int64
|
||||
|
||||
HeadRepoID int64
|
||||
HeadRepo *Repository `xorm:"-"`
|
||||
HeadRepo *Repository `xorm:"-" json:"-"`
|
||||
BaseRepoID int64
|
||||
BaseRepo *Repository `xorm:"-"`
|
||||
BaseRepo *Repository `xorm:"-" json:"-"`
|
||||
HeadUserName string
|
||||
HeadBranch string
|
||||
BaseBranch string
|
||||
@@ -63,8 +63,8 @@ type PullRequest struct {
|
||||
HasMerged bool
|
||||
MergedCommitID string `xorm:"VARCHAR(40)"`
|
||||
MergerID int64
|
||||
Merger *User `xorm:"-"`
|
||||
Merged time.Time `xorm:"-"`
|
||||
Merger *User `xorm:"-" json:"-"`
|
||||
Merged time.Time `xorm:"-" json:"-"`
|
||||
MergedUnix int64
|
||||
}
|
||||
|
||||
@@ -193,7 +193,7 @@ const (
|
||||
|
||||
// Merge merges pull request to base repository.
|
||||
// FIXME: add repoWorkingPull make sure two merges does not happen at same time.
|
||||
func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository, mergeStyle MergeStyle) (err error) {
|
||||
func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository, mergeStyle MergeStyle, commitDescription string) (err error) {
|
||||
defer func() {
|
||||
go HookQueue.Add(pr.BaseRepo.ID)
|
||||
go AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false)
|
||||
@@ -215,38 +215,37 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository, mergeStyle
|
||||
return fmt.Errorf("OpenRepository: %v", err)
|
||||
}
|
||||
|
||||
// Clone base repo.
|
||||
// Create temporary directory to store temporary copy of the base repository,
|
||||
// and clean it up when operation finished regardless of succeed or not.
|
||||
tmpBasePath := path.Join(setting.AppDataPath, "tmp/repos", com.ToStr(time.Now().Nanosecond())+".git")
|
||||
os.MkdirAll(path.Dir(tmpBasePath), os.ModePerm)
|
||||
defer os.RemoveAll(path.Dir(tmpBasePath))
|
||||
|
||||
// Clone the base repository to the defined temporary directory,
|
||||
// and checks out to base branch directly.
|
||||
var stderr string
|
||||
if _, stderr, err = process.ExecTimeout(5*time.Minute,
|
||||
fmt.Sprintf("PullRequest.Merge (git clone): %s", tmpBasePath),
|
||||
"git", "clone", baseGitRepo.Path, tmpBasePath); err != nil {
|
||||
"git", "clone", "-b", pr.BaseBranch, baseGitRepo.Path, tmpBasePath); err != nil {
|
||||
return fmt.Errorf("git clone: %s", stderr)
|
||||
}
|
||||
|
||||
// Check out base branch.
|
||||
if _, stderr, err = process.ExecDir(-1, tmpBasePath,
|
||||
fmt.Sprintf("PullRequest.Merge (git checkout): %s", tmpBasePath),
|
||||
"git", "checkout", pr.BaseBranch); err != nil {
|
||||
return fmt.Errorf("git checkout: %s", stderr)
|
||||
}
|
||||
|
||||
// Add head repo remote.
|
||||
// Add remote which points to the head repository.
|
||||
if _, stderr, err = process.ExecDir(-1, tmpBasePath,
|
||||
fmt.Sprintf("PullRequest.Merge (git remote add): %s", tmpBasePath),
|
||||
"git", "remote", "add", "head_repo", headRepoPath); err != nil {
|
||||
return fmt.Errorf("git remote add [%s -> %s]: %s", headRepoPath, tmpBasePath, stderr)
|
||||
}
|
||||
|
||||
// Fetch information from head repository to the temporary copy.
|
||||
if _, stderr, err = process.ExecDir(-1, tmpBasePath,
|
||||
fmt.Sprintf("PullRequest.Merge (git fetch): %s", tmpBasePath),
|
||||
"git", "fetch", "head_repo"); err != nil {
|
||||
return fmt.Errorf("git fetch [%s -> %s]: %s", headRepoPath, tmpBasePath, stderr)
|
||||
}
|
||||
|
||||
remoteHeadBranch := "head_repo/" + pr.HeadBranch
|
||||
|
||||
// Check if merge style is allowed, reset to default style if not
|
||||
if mergeStyle == MERGE_STYLE_REBASE && !pr.BaseRepo.PullsAllowRebase {
|
||||
mergeStyle = MERGE_STYLE_REGULAR
|
||||
@@ -254,35 +253,63 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository, mergeStyle
|
||||
|
||||
switch mergeStyle {
|
||||
case MERGE_STYLE_REGULAR: // Create merge commit
|
||||
|
||||
// Merge changes from head branch.
|
||||
if _, stderr, err = process.ExecDir(-1, tmpBasePath,
|
||||
fmt.Sprintf("PullRequest.Merge (git merge --no-ff --no-commit): %s", tmpBasePath),
|
||||
"git", "merge", "--no-ff", "--no-commit", "head_repo/"+pr.HeadBranch); err != nil {
|
||||
"git", "merge", "--no-ff", "--no-commit", remoteHeadBranch); err != nil {
|
||||
return fmt.Errorf("git merge --no-ff --no-commit [%s]: %v - %s", tmpBasePath, err, stderr)
|
||||
}
|
||||
|
||||
// Create a merge commit for the base branch.
|
||||
sig := doer.NewGitSig()
|
||||
if _, stderr, err = process.ExecDir(-1, tmpBasePath,
|
||||
fmt.Sprintf("PullRequest.Merge (git merge): %s", tmpBasePath),
|
||||
"git", "commit", fmt.Sprintf("--author='%s <%s>'", sig.Name, sig.Email),
|
||||
"-m", fmt.Sprintf("Merge branch '%s' of %s/%s into %s", pr.HeadBranch, pr.HeadUserName, pr.HeadRepo.Name, pr.BaseBranch)); err != nil {
|
||||
"-m", fmt.Sprintf("Merge branch '%s' of %s/%s into %s", pr.HeadBranch, pr.HeadUserName, pr.HeadRepo.Name, pr.BaseBranch),
|
||||
"-m", commitDescription); err != nil {
|
||||
return fmt.Errorf("git commit [%s]: %v - %s", tmpBasePath, err, stderr)
|
||||
}
|
||||
|
||||
case MERGE_STYLE_REBASE: // Rebase before merging
|
||||
|
||||
// Rebase head branch based on base branch, this creates a non-branch commit state.
|
||||
if _, stderr, err = process.ExecDir(-1, tmpBasePath,
|
||||
fmt.Sprintf("PullRequest.Merge (git rebase): %s", tmpBasePath),
|
||||
"git", "rebase", "-q", pr.BaseBranch, "head_repo/"+pr.HeadBranch); err != nil {
|
||||
return fmt.Errorf("git rebase [%s -> %s]: %s", headRepoPath, tmpBasePath, stderr)
|
||||
"git", "rebase", "--quiet", pr.BaseBranch, remoteHeadBranch); err != nil {
|
||||
return fmt.Errorf("git rebase [%s on %s]: %s", remoteHeadBranch, pr.BaseBranch, stderr)
|
||||
}
|
||||
|
||||
// Name non-branch commit state to a new temporary branch in order to save changes.
|
||||
tmpBranch := com.ToStr(time.Now().UnixNano(), 10)
|
||||
if _, stderr, err = process.ExecDir(-1, tmpBasePath,
|
||||
fmt.Sprintf("PullRequest.Merge (git checkout): %s", tmpBasePath),
|
||||
"git", "checkout", "-b", tmpBranch); err != nil {
|
||||
return fmt.Errorf("git checkout '%s': %s", tmpBranch, stderr)
|
||||
}
|
||||
|
||||
// Check out the base branch to be operated on.
|
||||
if _, stderr, err = process.ExecDir(-1, tmpBasePath,
|
||||
fmt.Sprintf("PullRequest.Merge (git checkout): %s", tmpBasePath),
|
||||
"git", "checkout", pr.BaseBranch); err != nil {
|
||||
return fmt.Errorf("git checkout '%s': %s", pr.BaseBranch, stderr)
|
||||
}
|
||||
|
||||
// Merge changes from temporary branch to the base branch.
|
||||
if _, stderr, err = process.ExecDir(-1, tmpBasePath,
|
||||
fmt.Sprintf("PullRequest.Merge (git merge): %s", tmpBasePath),
|
||||
"git", "merge", tmpBranch); err != nil {
|
||||
return fmt.Errorf("git merge [%s]: %v - %s", tmpBasePath, err, stderr)
|
||||
}
|
||||
|
||||
default:
|
||||
return fmt.Errorf("unknown merge style: %s", mergeStyle)
|
||||
}
|
||||
|
||||
// Push back to upstream.
|
||||
// Push changes on base branch to upstream.
|
||||
if _, stderr, err = process.ExecDir(-1, tmpBasePath,
|
||||
fmt.Sprintf("PullRequest.Merge (git push): %s", tmpBasePath),
|
||||
"git", "push", "head_repo", "HEAD:"+pr.BaseBranch); err != nil {
|
||||
"git", "push", baseGitRepo.Path, pr.BaseBranch); err != nil {
|
||||
return fmt.Errorf("git push: %s", stderr)
|
||||
}
|
||||
|
||||
@@ -294,7 +321,7 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository, mergeStyle
|
||||
pr.HasMerged = true
|
||||
pr.Merged = time.Now()
|
||||
pr.MergerID = doer.ID
|
||||
if _, err = sess.Id(pr.ID).AllCols().Update(pr); err != nil {
|
||||
if _, err = sess.ID(pr.ID).AllCols().Update(pr); err != nil {
|
||||
return fmt.Errorf("update pull request: %v", err)
|
||||
}
|
||||
|
||||
@@ -519,7 +546,7 @@ func GetUnmergedPullRequestsByBaseInfo(repoID int64, branch string) ([]*PullRequ
|
||||
|
||||
func getPullRequestByID(e Engine, id int64) (*PullRequest, error) {
|
||||
pr := new(PullRequest)
|
||||
has, err := e.Id(id).Get(pr)
|
||||
has, err := e.ID(id).Get(pr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
|
||||
@@ -13,35 +13,35 @@ import (
|
||||
"github.com/go-xorm/xorm"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/git-module"
|
||||
api "github.com/gogits/go-gogs-client"
|
||||
"github.com/gogs/git-module"
|
||||
api "github.com/gogs/go-gogs-client"
|
||||
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/process"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/process"
|
||||
)
|
||||
|
||||
// Release represents a release of repository.
|
||||
type Release struct {
|
||||
ID int64
|
||||
RepoID int64
|
||||
Repo *Repository `xorm:"-"`
|
||||
Repo *Repository `xorm:"-" json:"-"`
|
||||
PublisherID int64
|
||||
Publisher *User `xorm:"-"`
|
||||
Publisher *User `xorm:"-" json:"-"`
|
||||
TagName string
|
||||
LowerTagName string
|
||||
Target string
|
||||
Title string
|
||||
Sha1 string `xorm:"VARCHAR(40)"`
|
||||
NumCommits int64
|
||||
NumCommitsBehind int64 `xorm:"-"`
|
||||
NumCommitsBehind int64 `xorm:"-" json:"-"`
|
||||
Note string `xorm:"TEXT"`
|
||||
IsDraft bool `xorm:"NOT NULL DEFAULT false"`
|
||||
IsPrerelease bool
|
||||
|
||||
Created time.Time `xorm:"-"`
|
||||
Created time.Time `xorm:"-" json:"-"`
|
||||
CreatedUnix int64
|
||||
|
||||
Attachments []*Attachment `xorm:"-"`
|
||||
Attachments []*Attachment `xorm:"-" json:"-"`
|
||||
}
|
||||
|
||||
func (r *Release) BeforeInsert() {
|
||||
@@ -293,7 +293,7 @@ func UpdateRelease(doer *User, gitRepo *git.Repository, r *Release, isPublish bo
|
||||
if err = sess.Begin(); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err = sess.Id(r.ID).AllCols().Update(r); err != nil {
|
||||
if _, err = sess.ID(r.ID).AllCols().Update(r); err != nil {
|
||||
return fmt.Errorf("Update: %v", err)
|
||||
}
|
||||
|
||||
|
||||
168
models/repo.go
168
models/repo.go
@@ -7,6 +7,9 @@ package models
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"image"
|
||||
_ "image/jpeg"
|
||||
"image/png"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
@@ -20,20 +23,25 @@ import (
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/go-xorm/xorm"
|
||||
"github.com/mcuadros/go-version"
|
||||
"github.com/nfnt/resize"
|
||||
log "gopkg.in/clog.v1"
|
||||
"gopkg.in/ini.v1"
|
||||
|
||||
git "github.com/gogits/git-module"
|
||||
api "github.com/gogits/go-gogs-client"
|
||||
git "github.com/gogs/git-module"
|
||||
api "github.com/gogs/go-gogs-client"
|
||||
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/bindata"
|
||||
"github.com/gogits/gogs/pkg/markup"
|
||||
"github.com/gogits/gogs/pkg/process"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogits/gogs/pkg/sync"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/avatar"
|
||||
"github.com/gogs/gogs/pkg/bindata"
|
||||
"github.com/gogs/gogs/pkg/markup"
|
||||
"github.com/gogs/gogs/pkg/process"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/sync"
|
||||
)
|
||||
|
||||
// REPO_AVATAR_URL_PREFIX is used to identify a URL is to access repository avatar.
|
||||
const REPO_AVATAR_URL_PREFIX = "repo-avatars"
|
||||
|
||||
var repoWorkingPool = sync.NewExclusivePool()
|
||||
|
||||
var (
|
||||
@@ -141,35 +149,37 @@ func NewRepoContext() {
|
||||
|
||||
// Repository contains information of a repository.
|
||||
type Repository struct {
|
||||
ID int64
|
||||
OwnerID int64 `xorm:"UNIQUE(s)"`
|
||||
Owner *User `xorm:"-"`
|
||||
LowerName string `xorm:"UNIQUE(s) INDEX NOT NULL"`
|
||||
Name string `xorm:"INDEX NOT NULL"`
|
||||
Description string
|
||||
Website string
|
||||
DefaultBranch string
|
||||
Size int64 `xorm:"NOT NULL DEFAULT 0"`
|
||||
ID int64
|
||||
OwnerID int64 `xorm:"UNIQUE(s)"`
|
||||
Owner *User `xorm:"-" json:"-"`
|
||||
LowerName string `xorm:"UNIQUE(s) INDEX NOT NULL"`
|
||||
Name string `xorm:"INDEX NOT NULL"`
|
||||
Description string `xorm:"VARCHAR(512)"`
|
||||
Website string
|
||||
DefaultBranch string
|
||||
Size int64 `xorm:"NOT NULL DEFAULT 0"`
|
||||
UseCustomAvatar bool
|
||||
|
||||
// Counters
|
||||
NumWatches int
|
||||
NumStars int
|
||||
NumForks int
|
||||
NumIssues int
|
||||
NumClosedIssues int
|
||||
NumOpenIssues int `xorm:"-"`
|
||||
NumOpenIssues int `xorm:"-" json:"-"`
|
||||
NumPulls int
|
||||
NumClosedPulls int
|
||||
NumOpenPulls int `xorm:"-"`
|
||||
NumOpenPulls int `xorm:"-" json:"-"`
|
||||
NumMilestones int `xorm:"NOT NULL DEFAULT 0"`
|
||||
NumClosedMilestones int `xorm:"NOT NULL DEFAULT 0"`
|
||||
NumOpenMilestones int `xorm:"-"`
|
||||
NumTags int `xorm:"-"`
|
||||
NumOpenMilestones int `xorm:"-" json:"-"`
|
||||
NumTags int `xorm:"-" json:"-"`
|
||||
|
||||
IsPrivate bool
|
||||
IsBare bool
|
||||
|
||||
IsMirror bool
|
||||
*Mirror `xorm:"-"`
|
||||
*Mirror `xorm:"-" json:"-"`
|
||||
|
||||
// Advanced settings
|
||||
EnableWiki bool `xorm:"NOT NULL DEFAULT true"`
|
||||
@@ -182,18 +192,18 @@ type Repository struct {
|
||||
ExternalTrackerURL string
|
||||
ExternalTrackerFormat string
|
||||
ExternalTrackerStyle string
|
||||
ExternalMetas map[string]string `xorm:"-"`
|
||||
ExternalMetas map[string]string `xorm:"-" json:"-"`
|
||||
EnablePulls bool `xorm:"NOT NULL DEFAULT true"`
|
||||
PullsIgnoreWhitespace bool `xorm:"NOT NULL DEFAULT false"`
|
||||
PullsAllowRebase bool `xorm:"NOT NULL DEFAULT false"`
|
||||
|
||||
IsFork bool `xorm:"NOT NULL DEFAULT false"`
|
||||
ForkID int64
|
||||
BaseRepo *Repository `xorm:"-"`
|
||||
BaseRepo *Repository `xorm:"-" json:"-"`
|
||||
|
||||
Created time.Time `xorm:"-"`
|
||||
Created time.Time `xorm:"-" json:"-"`
|
||||
CreatedUnix int64
|
||||
Updated time.Time `xorm:"-"`
|
||||
Updated time.Time `xorm:"-" json:"-"`
|
||||
UpdatedUnix int64
|
||||
}
|
||||
|
||||
@@ -284,10 +294,69 @@ func (repo *Repository) HTMLURL() string {
|
||||
return setting.AppURL + repo.FullName()
|
||||
}
|
||||
|
||||
// CustomAvatarPath returns repository custom avatar file path.
|
||||
func (repo *Repository) CustomAvatarPath() string {
|
||||
return filepath.Join(setting.RepositoryAvatarUploadPath, com.ToStr(repo.ID))
|
||||
}
|
||||
|
||||
// RelAvatarLink returns relative avatar link to the site domain,
|
||||
// which includes app sub-url as prefix.
|
||||
// Since Gravatar support not needed here - just check for image path.
|
||||
func (repo *Repository) RelAvatarLink() string {
|
||||
defaultImgUrl := ""
|
||||
if !com.IsExist(repo.CustomAvatarPath()) {
|
||||
return defaultImgUrl
|
||||
}
|
||||
return fmt.Sprintf("%s/%s/%d", setting.AppSubURL, REPO_AVATAR_URL_PREFIX, repo.ID)
|
||||
}
|
||||
|
||||
// AvatarLink returns repository avatar absolute link.
|
||||
func (repo *Repository) AvatarLink() string {
|
||||
link := repo.RelAvatarLink()
|
||||
if link[0] == '/' && link[1] != '/' {
|
||||
return setting.AppURL + strings.TrimPrefix(link, setting.AppSubURL)[1:]
|
||||
}
|
||||
return link
|
||||
}
|
||||
|
||||
// UploadAvatar saves custom avatar for repository.
|
||||
// FIXME: split uploads to different subdirs in case we have massive number of repositories.
|
||||
func (repo *Repository) UploadAvatar(data []byte) error {
|
||||
img, _, err := image.Decode(bytes.NewReader(data))
|
||||
if err != nil {
|
||||
return fmt.Errorf("decode image: %v", err)
|
||||
}
|
||||
|
||||
os.MkdirAll(setting.RepositoryAvatarUploadPath, os.ModePerm)
|
||||
fw, err := os.Create(repo.CustomAvatarPath())
|
||||
if err != nil {
|
||||
return fmt.Errorf("create custom avatar directory: %v", err)
|
||||
}
|
||||
defer fw.Close()
|
||||
|
||||
m := resize.Resize(avatar.AVATAR_SIZE, avatar.AVATAR_SIZE, img, resize.NearestNeighbor)
|
||||
if err = png.Encode(fw, m); err != nil {
|
||||
return fmt.Errorf("encode image: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeleteAvatar deletes the repository custom avatar.
|
||||
func (repo *Repository) DeleteAvatar() error {
|
||||
log.Trace("DeleteAvatar [%d]: %s", repo.ID, repo.CustomAvatarPath())
|
||||
if err := os.Remove(repo.CustomAvatarPath()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repo.UseCustomAvatar = false
|
||||
return UpdateRepository(repo, false)
|
||||
}
|
||||
|
||||
// This method assumes following fields have been assigned with valid values:
|
||||
// Required - BaseRepo (if fork)
|
||||
// Arguments that are allowed to be nil: permission
|
||||
func (repo *Repository) APIFormat(permission *api.Permission) *api.Repository {
|
||||
func (repo *Repository) APIFormat(permission *api.Permission, user ...*User) *api.Repository {
|
||||
cloneLink := repo.CloneLink()
|
||||
apiRepo := &api.Repository{
|
||||
ID: repo.ID,
|
||||
@@ -312,10 +381,16 @@ func (repo *Repository) APIFormat(permission *api.Permission) *api.Repository {
|
||||
Created: repo.Created,
|
||||
Updated: repo.Updated,
|
||||
Permissions: permission,
|
||||
// Reserved for go-gogs-client change
|
||||
// AvatarUrl: repo.AvatarLink(),
|
||||
}
|
||||
if repo.IsFork {
|
||||
// FIXME: check precise permission for base repository
|
||||
apiRepo.Parent = repo.BaseRepo.APIFormat(nil)
|
||||
p := &api.Permission{Pull: true}
|
||||
if len(user) != 0 {
|
||||
p.Admin = user[0].IsAdminOfRepo(repo)
|
||||
p.Push = user[0].IsWriterOfRepo(repo)
|
||||
}
|
||||
apiRepo.Parent = repo.BaseRepo.APIFormat(p)
|
||||
}
|
||||
return apiRepo
|
||||
}
|
||||
@@ -746,7 +821,7 @@ func MigrateRepository(doer, owner *User, opts MigrateRepoOptions) (*Repository,
|
||||
RepoID: repo.ID,
|
||||
Interval: setting.Mirror.DefaultInterval,
|
||||
EnablePrune: true,
|
||||
NextUpdate: time.Now().Add(time.Duration(setting.Mirror.DefaultInterval) * time.Hour),
|
||||
NextSync: time.Now().Add(time.Duration(setting.Mirror.DefaultInterval) * time.Hour),
|
||||
}); err != nil {
|
||||
return repo, fmt.Errorf("InsertOne: %v", err)
|
||||
}
|
||||
@@ -850,7 +925,7 @@ type CreateRepoOptions struct {
|
||||
}
|
||||
|
||||
func getRepoInitFile(tp, name string) ([]byte, error) {
|
||||
relPath := path.Join("conf", tp, strings.TrimLeft(name, "./"))
|
||||
relPath := path.Join("conf", tp, strings.TrimLeft(path.Clean("/"+name), "/"))
|
||||
|
||||
// Use custom file when available.
|
||||
customPath := path.Join(setting.CustomPath, relPath)
|
||||
@@ -1189,7 +1264,7 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) error
|
||||
repo.Owner = newOwner
|
||||
|
||||
// Update repository.
|
||||
if _, err := sess.Id(repo.ID).Update(repo); err != nil {
|
||||
if _, err := sess.ID(repo.ID).Update(repo); err != nil {
|
||||
return fmt.Errorf("update owner: %v", err)
|
||||
}
|
||||
|
||||
@@ -1221,7 +1296,7 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) error
|
||||
}
|
||||
|
||||
t.NumRepos--
|
||||
if _, err := sess.Id(t.ID).AllCols().Update(t); err != nil {
|
||||
if _, err := sess.ID(t.ID).AllCols().Update(t); err != nil {
|
||||
return fmt.Errorf("decrease team repository count '%d': %v", t.ID, err)
|
||||
}
|
||||
}
|
||||
@@ -1327,14 +1402,14 @@ func GetRepositoriesByForkID(forkID int64) ([]*Repository, error) {
|
||||
func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err error) {
|
||||
repo.LowerName = strings.ToLower(repo.Name)
|
||||
|
||||
if len(repo.Description) > 255 {
|
||||
repo.Description = repo.Description[:255]
|
||||
if len(repo.Description) > 512 {
|
||||
repo.Description = repo.Description[:512]
|
||||
}
|
||||
if len(repo.Website) > 255 {
|
||||
repo.Website = repo.Website[:255]
|
||||
}
|
||||
|
||||
if _, err = e.Id(repo.ID).AllCols().Update(repo); err != nil {
|
||||
if _, err = e.ID(repo.ID).AllCols().Update(repo); err != nil {
|
||||
return fmt.Errorf("update: %v", err)
|
||||
}
|
||||
|
||||
@@ -1448,6 +1523,8 @@ func DeleteRepository(uid, repoID int64) error {
|
||||
&PullRequest{BaseRepoID: repoID},
|
||||
&ProtectBranch{RepoID: repoID},
|
||||
&ProtectBranchWhitelist{RepoID: repoID},
|
||||
&Webhook{RepoID: repoID},
|
||||
&HookTask{RepoID: repoID},
|
||||
); err != nil {
|
||||
return fmt.Errorf("deleteBeans: %v", err)
|
||||
}
|
||||
@@ -1548,7 +1625,7 @@ func GetRepositoryByName(ownerID int64, name string) (*Repository, error) {
|
||||
|
||||
func getRepositoryByID(e Engine, id int64) (*Repository, error) {
|
||||
repo := new(Repository)
|
||||
has, err := e.Id(id).Get(repo)
|
||||
has, err := e.ID(id).Get(repo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
@@ -1647,11 +1724,11 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos []*Repository, count
|
||||
// this does not include other people's private repositories even if opts.UserID is an admin.
|
||||
if !opts.Private && opts.UserID > 0 {
|
||||
sess.Join("LEFT", "access", "access.repo_id = repo.id").
|
||||
Where("(repo.owner_id = ? OR access.user_id = ? OR repo.is_private = ?)", opts.UserID, opts.UserID, false)
|
||||
Where("repo.owner_id = ? OR access.user_id = ? OR repo.is_private = ? OR (repo.is_private = ? AND (repo.allow_public_wiki = ? OR repo.allow_public_issues = ?))", opts.UserID, opts.UserID, false, true, true, true)
|
||||
} else {
|
||||
// Only return public repositories if opts.Private is not set
|
||||
if !opts.Private {
|
||||
sess.And("repo.is_private = ?", false)
|
||||
sess.And("repo.is_private = ? OR (repo.is_private = ? AND (repo.allow_public_wiki = ? OR repo.allow_public_issues = ?))", false, true, true, true)
|
||||
}
|
||||
}
|
||||
if len(opts.Keyword) > 0 {
|
||||
@@ -2271,6 +2348,10 @@ func HasForkedRepo(ownerID, repoID int64) (*Repository, bool, error) {
|
||||
|
||||
// ForkRepository creates a fork of target repository under another user domain.
|
||||
func ForkRepository(doer, owner *User, baseRepo *Repository, name, desc string) (_ *Repository, err error) {
|
||||
if !owner.CanCreateRepo() {
|
||||
return nil, errors.ReachLimitOfRepo{owner.RepoCreationNum()}
|
||||
}
|
||||
|
||||
repo := &Repository{
|
||||
OwnerID: owner.ID,
|
||||
Owner: owner,
|
||||
@@ -2335,7 +2416,14 @@ func ForkRepository(doer, owner *User, baseRepo *Repository, name, desc string)
|
||||
|
||||
func (repo *Repository) GetForks() ([]*Repository, error) {
|
||||
forks := make([]*Repository, 0, repo.NumForks)
|
||||
return forks, x.Find(&forks, &Repository{ForkID: repo.ID})
|
||||
if err := x.Find(&forks, &Repository{ForkID: repo.ID}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, fork := range forks {
|
||||
fork.BaseRepo = repo
|
||||
}
|
||||
return forks, nil
|
||||
}
|
||||
|
||||
// __________ .__
|
||||
|
||||
@@ -9,9 +9,10 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/gogits/git-module"
|
||||
"github.com/gogs/git-module"
|
||||
|
||||
"github.com/gogits/gogs/pkg/tool"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/tool"
|
||||
)
|
||||
|
||||
type Branch struct {
|
||||
@@ -45,7 +46,7 @@ func GetBranchesByPath(path string) ([]*Branch, error) {
|
||||
|
||||
func (repo *Repository) GetBranch(br string) (*Branch, error) {
|
||||
if !git.IsBranchExist(repo.RepoPath(), br) {
|
||||
return nil, ErrBranchNotExist{br}
|
||||
return nil, errors.ErrBranchNotExist{br}
|
||||
}
|
||||
return &Branch{
|
||||
RepoPath: repo.RepoPath(),
|
||||
@@ -101,7 +102,7 @@ func GetProtectBranchOfRepoByName(repoID int64, name string) (*ProtectBranch, er
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, ErrBranchNotExist{name}
|
||||
return nil, errors.ErrBranchNotExist{name}
|
||||
}
|
||||
return protectBranch, nil
|
||||
}
|
||||
@@ -130,7 +131,7 @@ func UpdateProtectBranch(protectBranch *ProtectBranch) (err error) {
|
||||
}
|
||||
}
|
||||
|
||||
if _, err = sess.Id(protectBranch.ID).AllCols().Update(protectBranch); err != nil {
|
||||
if _, err = sess.ID(protectBranch.ID).AllCols().Update(protectBranch); err != nil {
|
||||
return fmt.Errorf("Update: %v", err)
|
||||
}
|
||||
|
||||
@@ -233,7 +234,7 @@ func UpdateOrgProtectBranch(repo *Repository, protectBranch *ProtectBranch, whit
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err = sess.Id(protectBranch.ID).AllCols().Update(protectBranch); err != nil {
|
||||
if _, err = sess.ID(protectBranch.ID).AllCols().Update(protectBranch); err != nil {
|
||||
return fmt.Errorf("Update: %v", err)
|
||||
}
|
||||
|
||||
@@ -252,5 +253,5 @@ func UpdateOrgProtectBranch(repo *Repository, protectBranch *ProtectBranch, whit
|
||||
// GetProtectBranchesByRepoID returns a list of *ProtectBranch in given repostiory.
|
||||
func GetProtectBranchesByRepoID(repoID int64) ([]*ProtectBranch, error) {
|
||||
protectBranches := make([]*ProtectBranch, 0, 2)
|
||||
return protectBranches, x.Where("repo_id = ?", repoID).Asc("name").Find(&protectBranches)
|
||||
return protectBranches, x.Where("repo_id = ? and protected = ?", repoID, true).Asc("name").Find(&protectBranches)
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
api "github.com/gogits/go-gogs-client"
|
||||
api "github.com/gogs/go-gogs-client"
|
||||
)
|
||||
|
||||
// Collaboration represent the relation between an individual and a repository.
|
||||
@@ -170,7 +170,7 @@ func (repo *Repository) ChangeCollaborationAccessMode(userID int64, mode AccessM
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err = sess.Id(collaboration.ID).AllCols().Update(collaboration); err != nil {
|
||||
if _, err = sess.ID(collaboration.ID).AllCols().Update(collaboration); err != nil {
|
||||
return fmt.Errorf("update collaboration: %v", err)
|
||||
}
|
||||
|
||||
|
||||
@@ -17,15 +17,50 @@ import (
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
gouuid "github.com/satori/go.uuid"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
git "github.com/gogits/git-module"
|
||||
"github.com/gogs/git-module"
|
||||
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/process"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/models/errors"
|
||||
"github.com/gogs/gogs/pkg/process"
|
||||
"github.com/gogs/gogs/pkg/setting"
|
||||
"github.com/gogs/gogs/pkg/tool"
|
||||
)
|
||||
|
||||
const (
|
||||
ENV_AUTH_USER_ID = "GOGS_AUTH_USER_ID"
|
||||
ENV_AUTH_USER_NAME = "GOGS_AUTH_USER_NAME"
|
||||
ENV_AUTH_USER_EMAIL = "GOGS_AUTH_USER_EMAIL"
|
||||
ENV_REPO_OWNER_NAME = "GOGS_REPO_OWNER_NAME"
|
||||
ENV_REPO_OWNER_SALT_MD5 = "GOGS_REPO_OWNER_SALT_MD5"
|
||||
ENV_REPO_ID = "GOGS_REPO_ID"
|
||||
ENV_REPO_NAME = "GOGS_REPO_NAME"
|
||||
ENV_REPO_CUSTOM_HOOKS_PATH = "GOGS_REPO_CUSTOM_HOOKS_PATH"
|
||||
)
|
||||
|
||||
type ComposeHookEnvsOptions struct {
|
||||
AuthUser *User
|
||||
OwnerName string
|
||||
OwnerSalt string
|
||||
RepoID int64
|
||||
RepoName string
|
||||
RepoPath string
|
||||
}
|
||||
|
||||
func ComposeHookEnvs(opts ComposeHookEnvsOptions) []string {
|
||||
envs := []string{
|
||||
"SSH_ORIGINAL_COMMAND=1",
|
||||
ENV_AUTH_USER_ID + "=" + com.ToStr(opts.AuthUser.ID),
|
||||
ENV_AUTH_USER_NAME + "=" + opts.AuthUser.Name,
|
||||
ENV_AUTH_USER_EMAIL + "=" + opts.AuthUser.Email,
|
||||
ENV_REPO_OWNER_NAME + "=" + opts.OwnerName,
|
||||
ENV_REPO_OWNER_SALT_MD5 + "=" + tool.MD5(opts.OwnerSalt),
|
||||
ENV_REPO_ID + "=" + com.ToStr(opts.RepoID),
|
||||
ENV_REPO_NAME + "=" + opts.RepoName,
|
||||
ENV_REPO_CUSTOM_HOOKS_PATH + "=" + path.Join(opts.RepoPath, "custom_hooks"),
|
||||
}
|
||||
return envs
|
||||
}
|
||||
|
||||
// ___________ .___.__ __ ___________.__.__
|
||||
// \_ _____/ __| _/|__|/ |_ \_ _____/|__| | ____
|
||||
// | __)_ / __ | | \ __\ | __) | | | _/ __ \
|
||||
@@ -88,9 +123,9 @@ func (repo *Repository) UpdateRepoFile(doer *User, opts UpdateRepoFileOptions) (
|
||||
defer repoWorkingPool.CheckOut(com.ToStr(repo.ID))
|
||||
|
||||
if err = repo.DiscardLocalRepoBranchChanges(opts.OldBranch); err != nil {
|
||||
return fmt.Errorf("DiscardLocalRepoBranchChanges [branch: %s]: %v", opts.OldBranch, err)
|
||||
return fmt.Errorf("discard local repo branch[%s] changes: %v", opts.OldBranch, err)
|
||||
} else if err = repo.UpdateLocalCopyBranch(opts.OldBranch); err != nil {
|
||||
return fmt.Errorf("UpdateLocalCopyBranch [branch: %s]: %v", opts.OldBranch, err)
|
||||
return fmt.Errorf("update local copy branch[%s]: %v", opts.OldBranch, err)
|
||||
}
|
||||
|
||||
repoPath := repo.RepoPath()
|
||||
@@ -107,12 +142,12 @@ func (repo *Repository) UpdateRepoFile(doer *User, opts UpdateRepoFileOptions) (
|
||||
if err = git.DeleteBranch(localPath, opts.NewBranch, git.DeleteBranchOptions{
|
||||
Force: true,
|
||||
}); err != nil {
|
||||
return fmt.Errorf("DeleteBranch [name: %s]: %v", opts.NewBranch, err)
|
||||
return fmt.Errorf("delete branch[%s]: %v", opts.NewBranch, err)
|
||||
}
|
||||
}
|
||||
|
||||
if err := repo.CheckoutNewBranch(opts.OldBranch, opts.NewBranch); err != nil {
|
||||
return fmt.Errorf("CheckoutNewBranch [old_branch: %s, new_branch: %s]: %v", opts.OldBranch, opts.NewBranch, err)
|
||||
return fmt.Errorf("checkout new branch[%s] from old branch[%s]: %v", opts.NewBranch, opts.OldBranch, err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,12 +166,12 @@ func (repo *Repository) UpdateRepoFile(doer *User, opts UpdateRepoFileOptions) (
|
||||
// Otherwise, move the file when name changed.
|
||||
if com.IsFile(oldFilePath) && opts.OldTreeName != opts.NewTreeName {
|
||||
if err = git.MoveFile(localPath, opts.OldTreeName, opts.NewTreeName); err != nil {
|
||||
return fmt.Errorf("git mv %s %s: %v", opts.OldTreeName, opts.NewTreeName, err)
|
||||
return fmt.Errorf("git mv %q %q: %v", opts.OldTreeName, opts.NewTreeName, err)
|
||||
}
|
||||
}
|
||||
|
||||
if err = ioutil.WriteFile(filePath, []byte(opts.Content), 0666); err != nil {
|
||||
return fmt.Errorf("WriteFile: %v", err)
|
||||
return fmt.Errorf("write file: %v", err)
|
||||
}
|
||||
|
||||
if err = git.AddChanges(localPath, true); err != nil {
|
||||
@@ -145,45 +180,18 @@ func (repo *Repository) UpdateRepoFile(doer *User, opts UpdateRepoFileOptions) (
|
||||
Committer: doer.NewGitSig(),
|
||||
Message: opts.Message,
|
||||
}); err != nil {
|
||||
return fmt.Errorf("CommitChanges: %v", err)
|
||||
} else if err = git.Push(localPath, "origin", opts.NewBranch); err != nil {
|
||||
return fmt.Errorf("commit changes on %q: %v", localPath, err)
|
||||
} else if err = git.PushWithEnvs(localPath, "origin", opts.NewBranch,
|
||||
ComposeHookEnvs(ComposeHookEnvsOptions{
|
||||
AuthUser: doer,
|
||||
OwnerName: repo.MustOwner().Name,
|
||||
OwnerSalt: repo.MustOwner().Salt,
|
||||
RepoID: repo.ID,
|
||||
RepoName: repo.Name,
|
||||
RepoPath: repo.RepoPath(),
|
||||
})); err != nil {
|
||||
return fmt.Errorf("git push origin %s: %v", opts.NewBranch, err)
|
||||
}
|
||||
|
||||
gitRepo, err := git.OpenRepository(repo.RepoPath())
|
||||
if err != nil {
|
||||
log.Error(2, "OpenRepository: %v", err)
|
||||
return nil
|
||||
}
|
||||
commit, err := gitRepo.GetBranchCommit(opts.NewBranch)
|
||||
if err != nil {
|
||||
log.Error(2, "GetBranchCommit [branch: %s]: %v", opts.NewBranch, err)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Simulate push event.
|
||||
pushCommits := &PushCommits{
|
||||
Len: 1,
|
||||
Commits: []*PushCommit{CommitToPushCommit(commit)},
|
||||
}
|
||||
oldCommitID := opts.LastCommitID
|
||||
if opts.NewBranch != opts.OldBranch {
|
||||
oldCommitID = git.EMPTY_SHA
|
||||
}
|
||||
if err := CommitRepoAction(CommitRepoActionOptions{
|
||||
PusherName: doer.Name,
|
||||
RepoOwnerID: repo.MustOwner().ID,
|
||||
RepoName: repo.Name,
|
||||
RefFullName: git.BRANCH_PREFIX + opts.NewBranch,
|
||||
OldCommitID: oldCommitID,
|
||||
NewCommitID: commit.ID.String(),
|
||||
Commits: pushCommits,
|
||||
}); err != nil {
|
||||
log.Error(2, "CommitRepoAction: %v", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
go AddTestPullRequestTask(doer, repo.ID, opts.NewBranch, true)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -193,16 +201,16 @@ func (repo *Repository) GetDiffPreview(branch, treePath, content string) (diff *
|
||||
defer repoWorkingPool.CheckOut(com.ToStr(repo.ID))
|
||||
|
||||
if err = repo.DiscardLocalRepoBranchChanges(branch); err != nil {
|
||||
return nil, fmt.Errorf("DiscardLocalRepoBranchChanges [branch: %s]: %v", branch, err)
|
||||
return nil, fmt.Errorf("discard local repo branch[%s] changes: %v", branch, err)
|
||||
} else if err = repo.UpdateLocalCopyBranch(branch); err != nil {
|
||||
return nil, fmt.Errorf("UpdateLocalCopyBranch [branch: %s]: %v", branch, err)
|
||||
return nil, fmt.Errorf("update local copy branch[%s]: %v", branch, err)
|
||||
}
|
||||
|
||||
localPath := repo.LocalCopyPath()
|
||||
filePath := path.Join(localPath, treePath)
|
||||
os.MkdirAll(filepath.Dir(filePath), os.ModePerm)
|
||||
if err = ioutil.WriteFile(filePath, []byte(content), 0666); err != nil {
|
||||
return nil, fmt.Errorf("WriteFile: %v", err)
|
||||
return nil, fmt.Errorf("write file: %v", err)
|
||||
}
|
||||
|
||||
cmd := exec.Command("git", "diff", treePath)
|
||||
@@ -211,11 +219,11 @@ func (repo *Repository) GetDiffPreview(branch, treePath, content string) (diff *
|
||||
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("StdoutPipe: %v", err)
|
||||
return nil, fmt.Errorf("get stdout pipe: %v", err)
|
||||
}
|
||||
|
||||
if err = cmd.Start(); err != nil {
|
||||
return nil, fmt.Errorf("Start: %v", err)
|
||||
return nil, fmt.Errorf("start: %v", err)
|
||||
}
|
||||
|
||||
pid := process.Add(fmt.Sprintf("GetDiffPreview [repo_path: %s]", repo.RepoPath()), cmd)
|
||||
@@ -223,11 +231,11 @@ func (repo *Repository) GetDiffPreview(branch, treePath, content string) (diff *
|
||||
|
||||
diff, err = ParsePatch(setting.Git.MaxGitDiffLines, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, stdout)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("ParsePatch: %v", err)
|
||||
return nil, fmt.Errorf("parse path: %v", err)
|
||||
}
|
||||
|
||||
if err = cmd.Wait(); err != nil {
|
||||
return nil, fmt.Errorf("Wait: %v", err)
|
||||
return nil, fmt.Errorf("wait: %v", err)
|
||||
}
|
||||
|
||||
return diff, nil
|
||||
@@ -254,20 +262,20 @@ func (repo *Repository) DeleteRepoFile(doer *User, opts DeleteRepoFileOptions) (
|
||||
defer repoWorkingPool.CheckOut(com.ToStr(repo.ID))
|
||||
|
||||
if err = repo.DiscardLocalRepoBranchChanges(opts.OldBranch); err != nil {
|
||||
return fmt.Errorf("DiscardLocalRepoBranchChanges [branch: %s]: %v", opts.OldBranch, err)
|
||||
return fmt.Errorf("discard local repo branch[%s] changes: %v", opts.OldBranch, err)
|
||||
} else if err = repo.UpdateLocalCopyBranch(opts.OldBranch); err != nil {
|
||||
return fmt.Errorf("UpdateLocalCopyBranch [branch: %s]: %v", opts.OldBranch, err)
|
||||
return fmt.Errorf("update local copy branch[%s]: %v", opts.OldBranch, err)
|
||||
}
|
||||
|
||||
if opts.OldBranch != opts.NewBranch {
|
||||
if err := repo.CheckoutNewBranch(opts.OldBranch, opts.NewBranch); err != nil {
|
||||
return fmt.Errorf("CheckoutNewBranch [old_branch: %s, new_branch: %s]: %v", opts.OldBranch, opts.NewBranch, err)
|
||||
return fmt.Errorf("checkout new branch[%s] from old branch[%s]: %v", opts.NewBranch, opts.OldBranch, err)
|
||||
}
|
||||
}
|
||||
|
||||
localPath := repo.LocalCopyPath()
|
||||
if err = os.Remove(path.Join(localPath, opts.TreePath)); err != nil {
|
||||
return fmt.Errorf("Remove: %v", err)
|
||||
return fmt.Errorf("remove file %q: %v", opts.TreePath, err)
|
||||
}
|
||||
|
||||
if err = git.AddChanges(localPath, true); err != nil {
|
||||
@@ -276,41 +284,18 @@ func (repo *Repository) DeleteRepoFile(doer *User, opts DeleteRepoFileOptions) (
|
||||
Committer: doer.NewGitSig(),
|
||||
Message: opts.Message,
|
||||
}); err != nil {
|
||||
return fmt.Errorf("CommitChanges: %v", err)
|
||||
} else if err = git.Push(localPath, "origin", opts.NewBranch); err != nil {
|
||||
return fmt.Errorf("commit changes to %q: %v", localPath, err)
|
||||
} else if err = git.PushWithEnvs(localPath, "origin", opts.NewBranch,
|
||||
ComposeHookEnvs(ComposeHookEnvsOptions{
|
||||
AuthUser: doer,
|
||||
OwnerName: repo.MustOwner().Name,
|
||||
OwnerSalt: repo.MustOwner().Salt,
|
||||
RepoID: repo.ID,
|
||||
RepoName: repo.Name,
|
||||
RepoPath: repo.RepoPath(),
|
||||
})); err != nil {
|
||||
return fmt.Errorf("git push origin %s: %v", opts.NewBranch, err)
|
||||
}
|
||||
|
||||
gitRepo, err := git.OpenRepository(repo.RepoPath())
|
||||
if err != nil {
|
||||
log.Error(2, "OpenRepository: %v", err)
|
||||
return nil
|
||||
}
|
||||
commit, err := gitRepo.GetBranchCommit(opts.NewBranch)
|
||||
if err != nil {
|
||||
log.Error(2, "GetBranchCommit [branch: %s]: %v", opts.NewBranch, err)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Simulate push event.
|
||||
pushCommits := &PushCommits{
|
||||
Len: 1,
|
||||
Commits: []*PushCommit{CommitToPushCommit(commit)},
|
||||
}
|
||||
if err := CommitRepoAction(CommitRepoActionOptions{
|
||||
PusherName: doer.Name,
|
||||
RepoOwnerID: repo.MustOwner().ID,
|
||||
RepoName: repo.Name,
|
||||
RefFullName: git.BRANCH_PREFIX + opts.NewBranch,
|
||||
OldCommitID: opts.LastCommitID,
|
||||
NewCommitID: commit.ID.String(),
|
||||
Commits: pushCommits,
|
||||
}); err != nil {
|
||||
log.Error(2, "CommitRepoAction: %v", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
go AddTestPullRequestTask(doer, repo.ID, opts.NewBranch, true)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -348,19 +333,19 @@ func NewUpload(name string, buf []byte, file multipart.File) (_ *Upload, err err
|
||||
|
||||
localPath := upload.LocalPath()
|
||||
if err = os.MkdirAll(path.Dir(localPath), os.ModePerm); err != nil {
|
||||
return nil, fmt.Errorf("MkdirAll: %v", err)
|
||||
return nil, fmt.Errorf("mkdir all: %v", err)
|
||||
}
|
||||
|
||||
fw, err := os.Create(localPath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Create: %v", err)
|
||||
return nil, fmt.Errorf("create: %v", err)
|
||||
}
|
||||
defer fw.Close()
|
||||
|
||||
if _, err = fw.Write(buf); err != nil {
|
||||
return nil, fmt.Errorf("Write: %v", err)
|
||||
return nil, fmt.Errorf("write: %v", err)
|
||||
} else if _, err = io.Copy(fw, file); err != nil {
|
||||
return nil, fmt.Errorf("Copy: %v", err)
|
||||
return nil, fmt.Errorf("copy: %v", err)
|
||||
}
|
||||
|
||||
if _, err := x.Insert(upload); err != nil {
|
||||
@@ -434,11 +419,11 @@ func DeleteUploadByUUID(uuid string) error {
|
||||
if IsErrUploadNotExist(err) {
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("GetUploadByUUID: %v", err)
|
||||
return fmt.Errorf("get upload by UUID[%s]: %v", uuid, err)
|
||||
}
|
||||
|
||||
if err := DeleteUpload(upload); err != nil {
|
||||
return fmt.Errorf("DeleteUpload: %v", err)
|
||||
return fmt.Errorf("delete upload: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -450,7 +435,7 @@ type UploadRepoFileOptions struct {
|
||||
NewBranch string
|
||||
TreePath string
|
||||
Message string
|
||||
Files []string // In UUID format.
|
||||
Files []string // In UUID format
|
||||
}
|
||||
|
||||
func (repo *Repository) UploadRepoFiles(doer *User, opts UploadRepoFileOptions) (err error) {
|
||||
@@ -460,21 +445,21 @@ func (repo *Repository) UploadRepoFiles(doer *User, opts UploadRepoFileOptions)
|
||||
|
||||
uploads, err := GetUploadsByUUIDs(opts.Files)
|
||||
if err != nil {
|
||||
return fmt.Errorf("GetUploadsByUUIDs [uuids: %v]: %v", opts.Files, err)
|
||||
return fmt.Errorf("get uploads by UUIDs[%v]: %v", opts.Files, err)
|
||||
}
|
||||
|
||||
repoWorkingPool.CheckIn(com.ToStr(repo.ID))
|
||||
defer repoWorkingPool.CheckOut(com.ToStr(repo.ID))
|
||||
|
||||
if err = repo.DiscardLocalRepoBranchChanges(opts.OldBranch); err != nil {
|
||||
return fmt.Errorf("DiscardLocalRepoBranchChanges [branch: %s]: %v", opts.OldBranch, err)
|
||||
return fmt.Errorf("discard local repo branch[%s] changes: %v", opts.OldBranch, err)
|
||||
} else if err = repo.UpdateLocalCopyBranch(opts.OldBranch); err != nil {
|
||||
return fmt.Errorf("UpdateLocalCopyBranch [branch: %s]: %v", opts.OldBranch, err)
|
||||
return fmt.Errorf("update local copy branch[%s]: %v", opts.OldBranch, err)
|
||||
}
|
||||
|
||||
if opts.OldBranch != opts.NewBranch {
|
||||
if err = repo.CheckoutNewBranch(opts.OldBranch, opts.NewBranch); err != nil {
|
||||
return fmt.Errorf("CheckoutNewBranch [old_branch: %s, new_branch: %s]: %v", opts.OldBranch, opts.NewBranch, err)
|
||||
return fmt.Errorf("checkout new branch[%s] from old branch[%s]: %v", opts.NewBranch, opts.OldBranch, err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -491,7 +476,7 @@ func (repo *Repository) UploadRepoFiles(doer *User, opts UploadRepoFileOptions)
|
||||
}
|
||||
|
||||
if err = com.Copy(tmpPath, targetPath); err != nil {
|
||||
return fmt.Errorf("Copy: %v", err)
|
||||
return fmt.Errorf("copy: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -501,40 +486,18 @@ func (repo *Repository) UploadRepoFiles(doer *User, opts UploadRepoFileOptions)
|
||||
Committer: doer.NewGitSig(),
|
||||
Message: opts.Message,
|
||||
}); err != nil {
|
||||
return fmt.Errorf("CommitChanges: %v", err)
|
||||
} else if err = git.Push(localPath, "origin", opts.NewBranch); err != nil {
|
||||
return fmt.Errorf("commit changes on %q: %v", localPath, err)
|
||||
} else if err = git.PushWithEnvs(localPath, "origin", opts.NewBranch,
|
||||
ComposeHookEnvs(ComposeHookEnvsOptions{
|
||||
AuthUser: doer,
|
||||
OwnerName: repo.MustOwner().Name,
|
||||
OwnerSalt: repo.MustOwner().Salt,
|
||||
RepoID: repo.ID,
|
||||
RepoName: repo.Name,
|
||||
RepoPath: repo.RepoPath(),
|
||||
})); err != nil {
|
||||
return fmt.Errorf("git push origin %s: %v", opts.NewBranch, err)
|
||||
}
|
||||
|
||||
gitRepo, err := git.OpenRepository(repo.RepoPath())
|
||||
if err != nil {
|
||||
log.Error(2, "OpenRepository: %v", err)
|
||||
return nil
|
||||
}
|
||||
commit, err := gitRepo.GetBranchCommit(opts.NewBranch)
|
||||
if err != nil {
|
||||
log.Error(2, "GetBranchCommit [branch: %s]: %v", opts.NewBranch, err)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Simulate push event.
|
||||
pushCommits := &PushCommits{
|
||||
Len: 1,
|
||||
Commits: []*PushCommit{CommitToPushCommit(commit)},
|
||||
}
|
||||
if err := CommitRepoAction(CommitRepoActionOptions{
|
||||
PusherName: doer.Name,
|
||||
RepoOwnerID: repo.MustOwner().ID,
|
||||
RepoName: repo.Name,
|
||||
RefFullName: git.BRANCH_PREFIX + opts.NewBranch,
|
||||
OldCommitID: opts.LastCommitID,
|
||||
NewCommitID: commit.ID.String(),
|
||||
Commits: pushCommits,
|
||||
}); err != nil {
|
||||
log.Error(2, "CommitRepoAction: %v", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
go AddTestPullRequestTask(doer, repo.ID, opts.NewBranch, true)
|
||||
return DeleteUploads(uploads...)
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
|
||||
. "github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/markup"
|
||||
. "github.com/gogs/gogs/models"
|
||||
"github.com/gogs/gogs/pkg/markup"
|
||||
)
|
||||
|
||||
func TestRepo(t *testing.T) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user