Merge branch 'master' into techknowlogick-patch-2
This commit is contained in:
commit
ecadae8e90
|
|
@ -114,7 +114,7 @@ pull request workflow to do that. And, we also use [LGTM](http://lgtm.co)
|
|||
to ensure every PR is reviewed by at least 2 maintainers.
|
||||
|
||||
Please try to make your pull request easy to review for us. And, please read
|
||||
the *[How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#best-practices-for-faster-reviews)* guide;
|
||||
the *[How to get faster PR reviews](https://github.com/kubernetes/community/blob/261cb0fd089b64002c91e8eddceebf032462ccd6/contributors/guide/pull-requests.md#best-practices-for-faster-reviews)* guide;
|
||||
it has lots of useful tips for any project you may want to contribute.
|
||||
Some of the key points:
|
||||
|
||||
|
|
|
|||
7
Makefile
7
Makefile
|
|
@ -100,6 +100,13 @@ swagger-check: generate-swagger
|
|||
exit 1; \
|
||||
fi;
|
||||
|
||||
.PHONY: swagger-validate
|
||||
swagger-validate:
|
||||
@hash swagger > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
||||
$(GO) get -u github.com/go-swagger/go-swagger/cmd/swagger; \
|
||||
fi
|
||||
swagger validate ./public/swagger.v1.json
|
||||
|
||||
.PHONY: errcheck
|
||||
errcheck:
|
||||
@hash errcheck > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
||||
|
|
|
|||
|
|
@ -268,7 +268,7 @@ func runServ(c *cli.Context) error {
|
|||
claims := jwt.MapClaims{
|
||||
"repo": repo.ID,
|
||||
"op": lfsVerb,
|
||||
"exp": now.Add(5 * time.Minute).Unix(),
|
||||
"exp": now.Add(setting.LFS.HTTPAuthExpiry).Unix(),
|
||||
"nbf": now.Unix(),
|
||||
}
|
||||
if user != nil {
|
||||
|
|
|
|||
|
|
@ -189,6 +189,8 @@ LFS_START_SERVER = false
|
|||
LFS_CONTENT_PATH = data/lfs
|
||||
; LFS authentication secret, change this yourself
|
||||
LFS_JWT_SECRET =
|
||||
; LFS authentication validity period (in time.Duration), pushes taking longer than this may fail.
|
||||
LFS_HTTP_AUTH_EXPIRY = 20m
|
||||
|
||||
; Define allowed algorithms and their minimum key length (use -1 to disable a type)
|
||||
[ssh.minimum_key_sizes]
|
||||
|
|
|
|||
|
|
@ -115,6 +115,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
|
|||
- `LFS_START_SERVER`: **false**: Enables git-lfs support.
|
||||
- `LFS_CONTENT_PATH`: **./data/lfs**: Where to store LFS files.
|
||||
- `LFS_JWT_SECRET`: **\<empty\>**: LFS authentication secret, change this a unique string.
|
||||
- `LFS_HTTP_AUTH_EXPIRY`: **20m**: LFS authentication validity period in time.Duration, pushes taking longer than this may fail.
|
||||
- `REDIRECT_OTHER_PORT`: **false**: If true and `PROTOCOL` is https, redirects http requests
|
||||
on another (https) port.
|
||||
- `PORT_TO_REDIRECT`: **80**: Port used when `REDIRECT_OTHER_PORT` is true.
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ _Symbols used in table:_
|
|||
<td>GitLab CE</td>
|
||||
<td>GitLab EE</td>
|
||||
<td>BitBucket</td>
|
||||
<td>RhodeCode CE</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
@ -48,6 +49,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Issue tracker</td>
|
||||
|
|
@ -57,6 +59,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Pull/Merge requests</td>
|
||||
|
|
@ -66,6 +69,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Squash merging</td>
|
||||
|
|
@ -75,6 +79,7 @@ _Symbols used in table:_
|
|||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Rebase merging</td>
|
||||
|
|
@ -84,6 +89,7 @@ _Symbols used in table:_
|
|||
<td>✘</td>
|
||||
<td>⁄</td>
|
||||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Pull/Merge request inline comments</td>
|
||||
|
|
@ -93,6 +99,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Pull/Merge request approval</td>
|
||||
|
|
@ -102,6 +109,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Merge conflict resolution</td>
|
||||
|
|
@ -111,6 +119,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Restrict push and merge access to certain users</td>
|
||||
|
|
@ -120,6 +129,7 @@ _Symbols used in table:_
|
|||
<td>⁄</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Markdown support</td>
|
||||
|
|
@ -129,6 +139,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Issues and pull/merge requests templates</td>
|
||||
|
|
@ -138,6 +149,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Revert specific commits or a merge request</td>
|
||||
|
|
@ -147,6 +159,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Labels</td>
|
||||
|
|
@ -156,6 +169,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Time tracking</td>
|
||||
|
|
@ -165,6 +179,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Multiple assignees for issues</td>
|
||||
|
|
@ -174,6 +189,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Related issues</td>
|
||||
|
|
@ -183,6 +199,7 @@ _Symbols used in table:_
|
|||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Confidential issues</td>
|
||||
|
|
@ -192,6 +209,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Comment reactions</td>
|
||||
|
|
@ -201,6 +219,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lock Discussion</td>
|
||||
|
|
@ -210,6 +229,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Batch issue handling</td>
|
||||
|
|
@ -219,6 +239,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Issue Boards</td>
|
||||
|
|
@ -228,6 +249,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Create new branches from issues</td>
|
||||
|
|
@ -237,6 +259,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Commit graph</td>
|
||||
|
|
@ -246,6 +269,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Web code editor</td>
|
||||
|
|
@ -255,6 +279,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Branch manager</td>
|
||||
|
|
@ -264,6 +289,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Create new branches</td>
|
||||
|
|
@ -273,6 +299,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Repository topics</td>
|
||||
|
|
@ -282,6 +309,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Repository code search</td>
|
||||
|
|
@ -291,6 +319,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Global code search</td>
|
||||
|
|
@ -300,6 +329,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Issue search</td>
|
||||
|
|
@ -309,6 +339,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Global issue search</td>
|
||||
|
|
@ -318,6 +349,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Git LFS 2.0</td>
|
||||
|
|
@ -327,6 +359,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>⁄</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Integrated Git-powered wiki</td>
|
||||
|
|
@ -336,6 +369,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Static Git-powered pages</td>
|
||||
|
|
@ -345,6 +379,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Group Milestones</td>
|
||||
|
|
@ -354,6 +389,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Granular user roles (Code, Issues, Wiki etc)</td>
|
||||
|
|
@ -363,6 +399,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cherry-picking changes</td>
|
||||
|
|
@ -372,6 +409,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>GPG Signed Commits</td>
|
||||
|
|
@ -381,6 +419,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Reject unsigned commits</td>
|
||||
|
|
@ -390,6 +429,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Verified Committer</td>
|
||||
|
|
@ -399,6 +439,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Subgroups: groups within groups</td>
|
||||
|
|
@ -408,6 +449,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Custom Git Hooks</td>
|
||||
|
|
@ -417,6 +459,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Repository Activity page</td>
|
||||
|
|
@ -426,6 +469,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Deploy Tokens</td>
|
||||
|
|
@ -435,6 +479,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Repository Tokens with write rights</td>
|
||||
|
|
@ -444,6 +489,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Easy upgrade process</td>
|
||||
|
|
@ -453,6 +499,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Built-in Container Registry</td>
|
||||
|
|
@ -462,6 +509,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>External git mirroring</td>
|
||||
|
|
@ -471,6 +519,7 @@ _Symbols used in table:_
|
|||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>AD / LDAP integration</td>
|
||||
|
|
@ -480,6 +529,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Multiple LDAP / AD server support</td>
|
||||
|
|
@ -489,6 +539,7 @@ _Symbols used in table:_
|
|||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>LDAP user synchronization</td>
|
||||
|
|
@ -498,6 +549,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>OpenId Connect support</td>
|
||||
|
|
@ -507,6 +559,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>?</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>OAuth 2.0 integration (external authorization)</td>
|
||||
|
|
@ -516,6 +569,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>?</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Act as OAuth 2.0 provider</td>
|
||||
|
|
@ -525,6 +579,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Two factor authentication (2FA)</td>
|
||||
|
|
@ -534,6 +589,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FIDO U2F (2FA)</td>
|
||||
|
|
@ -543,6 +599,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Webhook support</td>
|
||||
|
|
@ -552,6 +609,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mattermost/Slack integration</td>
|
||||
|
|
@ -561,6 +619,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>⁄</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Discord integration</td>
|
||||
|
|
@ -570,6 +629,7 @@ _Symbols used in table:_
|
|||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Built-in CI/CD</td>
|
||||
|
|
@ -579,6 +639,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>External CI/CD status display</td>
|
||||
|
|
@ -588,6 +649,7 @@ _Symbols used in table:_
|
|||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Multiple database support</td>
|
||||
|
|
@ -597,6 +659,7 @@ _Symbols used in table:_
|
|||
<td>⁄</td>
|
||||
<td>⁄</td>
|
||||
<td>✓</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Multiple OS support</td>
|
||||
|
|
@ -606,6 +669,7 @@ _Symbols used in table:_
|
|||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
<td>✓</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Low resource usage (RAM/CPU)</td>
|
||||
|
|
@ -615,6 +679,7 @@ _Symbols used in table:_
|
|||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
<td>✘</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
46
docs/content/doc/usage/https-support.md
Normal file
46
docs/content/doc/usage/https-support.md
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
---
|
||||
date: "2018-06-02T11:00:00+02:00"
|
||||
title: "Usage: HTTPS setup"
|
||||
slug: "https-setup"
|
||||
weight: 12
|
||||
toc: true
|
||||
draft: false
|
||||
menu:
|
||||
sidebar:
|
||||
parent: "usage"
|
||||
name: "HTTPS setup"
|
||||
weight: 12
|
||||
identifier: "https-setup"
|
||||
---
|
||||
|
||||
# HTTPS setup to encrypt connections to Gitea
|
||||
|
||||
## Using built-in server
|
||||
|
||||
Before you enable HTTPS make sure that you have valid SSL/TLS certificates.
|
||||
You could use self-generated certificates for evaluation and testing. Please run `gitea cert --host [HOST]` to generate a self signed certificate.
|
||||
|
||||
To use Gitea's built-in HTTPS support you must change your `app.ini` file:
|
||||
|
||||
```ini
|
||||
[server]
|
||||
PROTOCOL=https
|
||||
ROOT_URL = `https://git.example.com:3000/`
|
||||
HTTP_PORT = 3000
|
||||
CERT_FILE = cert.pem
|
||||
KEY_FILE = key.pem
|
||||
```
|
||||
To learn more about the config values, please checkout the [Config Cheat Sheet](../config-cheat-sheet#server).
|
||||
|
||||
## Using reverse proxy
|
||||
|
||||
Setup up your reverse proxy like shown in the [reverse proxy guide](../reverse-proxies).
|
||||
|
||||
After that, enable HTTPS by following one of these guides:
|
||||
|
||||
* [nginx](https//nginx.org/en/docs/http/configuring_https_servers.html)
|
||||
* [apache2/httpd](https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html)
|
||||
* [caddy](https://caddyserver.com/docs/tls)
|
||||
|
||||
Note: You connection between your reverse proxy and gitea might be unencrypted. To encrypt it too follow the [built-in server guide](#using-built-in-server) and change
|
||||
the proxy url to `https://[URL]`.
|
||||
|
|
@ -371,7 +371,7 @@ func (f *MergePullRequestForm) Validate(ctx *macaron.Context, errs binding.Error
|
|||
|
||||
// NewReleaseForm form for creating release
|
||||
type NewReleaseForm struct {
|
||||
TagName string `binding:"Required"`
|
||||
TagName string `binding:"Required;GitRefName"`
|
||||
Target string `form:"tag_target" binding:"Required"`
|
||||
Title string `binding:"Required"`
|
||||
Content string
|
||||
|
|
|
|||
|
|
@ -136,10 +136,11 @@ var (
|
|||
}
|
||||
|
||||
LFS struct {
|
||||
StartServer bool `ini:"LFS_START_SERVER"`
|
||||
ContentPath string `ini:"LFS_CONTENT_PATH"`
|
||||
JWTSecretBase64 string `ini:"LFS_JWT_SECRET"`
|
||||
JWTSecretBytes []byte `ini:"-"`
|
||||
StartServer bool `ini:"LFS_START_SERVER"`
|
||||
ContentPath string `ini:"LFS_CONTENT_PATH"`
|
||||
JWTSecretBase64 string `ini:"LFS_JWT_SECRET"`
|
||||
JWTSecretBytes []byte `ini:"-"`
|
||||
HTTPAuthExpiry time.Duration `ini:"LFS_HTTP_AUTH_EXPIRY"`
|
||||
}
|
||||
|
||||
// Security settings
|
||||
|
|
@ -828,6 +829,8 @@ func NewContext() {
|
|||
LFS.ContentPath = filepath.Join(AppWorkPath, LFS.ContentPath)
|
||||
}
|
||||
|
||||
LFS.HTTPAuthExpiry = sec.Key("LFS_HTTP_AUTH_EXPIRY").MustDuration(20 * time.Minute)
|
||||
|
||||
if LFS.StartServer {
|
||||
|
||||
if err := os.MkdirAll(LFS.ContentPath, 0700); err != nil {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ package util
|
|||
import (
|
||||
"net/url"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
)
|
||||
|
|
@ -56,16 +57,25 @@ func Max(a, b int) int {
|
|||
|
||||
// URLJoin joins url components, like path.Join, but preserving contents
|
||||
func URLJoin(base string, elems ...string) string {
|
||||
u, err := url.Parse(base)
|
||||
if !strings.HasSuffix(base, "/") {
|
||||
base += "/"
|
||||
}
|
||||
baseURL, err := url.Parse(base)
|
||||
if err != nil {
|
||||
log.Error(4, "URLJoin: Invalid base URL %s", base)
|
||||
return ""
|
||||
}
|
||||
joinArgs := make([]string, 0, len(elems)+1)
|
||||
joinArgs = append(joinArgs, u.Path)
|
||||
joinArgs = append(joinArgs, elems...)
|
||||
u.Path = path.Join(joinArgs...)
|
||||
return u.String()
|
||||
joinedPath := path.Join(elems...)
|
||||
argURL, err := url.Parse(joinedPath)
|
||||
if err != nil {
|
||||
log.Error(4, "URLJoin: Invalid arg %s", joinedPath)
|
||||
return ""
|
||||
}
|
||||
joinedURL := baseURL.ResolveReference(argURL).String()
|
||||
if !baseURL.IsAbs() && !strings.HasPrefix(base, "/") {
|
||||
return joinedURL[1:] // Removing leading '/' if needed
|
||||
}
|
||||
return joinedURL
|
||||
}
|
||||
|
||||
// Min min of two ints
|
||||
|
|
|
|||
|
|
@ -30,6 +30,14 @@ func TestURLJoin(t *testing.T) {
|
|||
"a", "b/c/"),
|
||||
newTest("a/b/d",
|
||||
"a/", "b/c/", "/../d/"),
|
||||
newTest("https://try.gitea.io/a/b/c#d",
|
||||
"https://try.gitea.io", "a/b", "c#d"),
|
||||
newTest("/a/b/d",
|
||||
"/a/", "b/c/", "/../d/"),
|
||||
newTest("/a/b/c",
|
||||
"/a", "b/c/"),
|
||||
newTest("/a/b/c#hash",
|
||||
"/a", "b/c#hash"),
|
||||
} {
|
||||
assert.Equal(t, test.Expected, URLJoin(test.Base, test.Elements...))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ const (
|
|||
)
|
||||
|
||||
var (
|
||||
// GitRefNamePattern is regular expression wirh unallowed characters in git reference name
|
||||
// GitRefNamePattern is regular expression with unallowed characters in git reference name
|
||||
GitRefNamePattern = regexp.MustCompile("[^\\d\\w-_\\./]")
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -102,11 +102,13 @@ lfs_path_helper=В этой папке будут храниться файлы
|
|||
run_user=Запуск от имени пользователя
|
||||
run_user_helper=Введите имя пользователя операционной системы, под которым работает Gitea. Обратите внимание, что этот пользователь должен иметь доступ к корневому пути репозиториев.
|
||||
domain=Домен SSH сервера
|
||||
domain_helper=Влияет на URL-адреса для клонирования по SSH.
|
||||
ssh_port=Порт SSH сервера
|
||||
ssh_port_helper=Номер порта, который использует SSH сервер. Оставьте пустым, чтобы отключить SSH.
|
||||
http_port=Gitea HTTP порт
|
||||
http_port_helper=Номер порта, который будет прослушиваться Gitea веб-сервером.
|
||||
app_url=Базовый URL-адрес Gitea
|
||||
app_url_helper=Этот параметр влияет на URL для клонирования по HTTP/HTTPS и на некоторые уведомления по электронной почте.
|
||||
log_root_path=Путь к журналу
|
||||
log_root_path_helper=Файлы журнала будут записываться в этот каталог.
|
||||
|
||||
|
|
@ -124,6 +126,7 @@ offline_mode=Включить локальный режим
|
|||
offline_mode_popup=Отключить сторонние сети доставки контента и отдавать все ресурсы из их локальных копий.
|
||||
disable_gravatar=Отключить Gravatar
|
||||
disable_gravatar_popup=Отключить Gravatar и сторонние источники аватаров. Если пользователь не загрузит аватар локально, то по умолчанию будет использоваться стандартный аватар.
|
||||
federated_avatar_lookup=Включить федеративные аватары
|
||||
federated_avatar_lookup_popup=Включите поиск федеративного аватара для использования службы с открытым исходным кодом на основе libravatar.
|
||||
disable_registration=Отключить самостоятельную регистрацию
|
||||
disable_registration_popup=Запретить самостоятельную регистрацию. Только администраторы смогут создавать новые учетные записи пользователей.
|
||||
|
|
@ -136,6 +139,7 @@ enable_captcha=Включить CAPTCHA
|
|||
enable_captcha_popup=Запрашивать капчу при регистрации пользователя.
|
||||
require_sign_in_view=Требовать авторизации для просмотра страниц
|
||||
require_sign_in_view_popup=Ограничение доступа к страницам только для пользователей, выполнивших вход. Посетители увидят только страницы входа и регистрации.
|
||||
admin_setting_desc=Создание учетной записи администратора необязательно. Первый зарегистрированный пользователь автоматически становится администратором.
|
||||
admin_title=Настройки учётной записи администратора
|
||||
admin_name=Логин администратора
|
||||
admin_password=Пароль
|
||||
|
|
@ -146,6 +150,7 @@ test_git_failed=Не удалось проверить 'git' команду: %v
|
|||
sqlite3_not_available=Эта версия Gitea не поддерживает SQLite3. Пожалуйста, загрузите официальную бинарную версию из %s (не 'go build' версия).
|
||||
invalid_db_setting=Недопустимые параметры настройки базы данных: %v
|
||||
invalid_repo_path=Недопустимый путь к корню репозитория: %v
|
||||
run_user_not_match=Текущий пользователь не является пользователем для запуска: %s -> %s
|
||||
save_config_failed=Не удалось сохранить конфигурацию: %v
|
||||
invalid_admin_setting=Указан недопустимый параметр учетной записи администратора: %v
|
||||
install_success=Добро пожаловать! Благодарим вас за выбор Gitea, пользуйтесь с удовольствием!
|
||||
|
|
@ -157,11 +162,13 @@ default_allow_create_organization_popup=Разрешить новым учетн
|
|||
default_enable_timetracking=Включение отслеживания времени по умолчанию
|
||||
default_enable_timetracking_popup=Включить отслеживание времени для новых репозиториев по умолчанию.
|
||||
no_reply_address=Скрытый почтовый домен
|
||||
no_reply_address_helper=Доменное имя для пользователей со скрытым адресом электронной почты. Например, имя пользователя 'joe' будет зарегистрировано в Git как 'joe@noreply.example.org' если скрытый домен электронной почты установлен как 'noreply.example.org'.
|
||||
|
||||
[home]
|
||||
uname_holder=Имя пользователя / Email
|
||||
password_holder=Пароль
|
||||
switch_dashboard_context=Переключить контекст панели управления
|
||||
my_repos=Репозитории
|
||||
show_more_repos=Показать больше репозиториев…
|
||||
collaborative_repos=Совместные репозитории
|
||||
my_orgs=Мои организации
|
||||
|
|
@ -186,6 +193,7 @@ code_search_results=Результаты поиска для '%s'
|
|||
[auth]
|
||||
create_new_account=Регистрация аккаунта
|
||||
register_helper_msg=Уже есть аккаунт? Авторизуйтесь!
|
||||
social_register_helper_msg=Уже есть аккаунт? Свяжите его сейчас!
|
||||
disable_register_prompt=Извините, возможность регистрации отключена. Пожалуйста, свяжитесь с администратором сайта.
|
||||
disable_register_mail=Подтверждение регистрации по электронной почте отключено.
|
||||
remember_me=Запомнить меня
|
||||
|
|
@ -217,7 +225,9 @@ login_userpass=Вход
|
|||
login_openid=OpenID
|
||||
openid_connect_submit=Подключить
|
||||
openid_connect_title=Подключение к существующей учетной записи
|
||||
openid_connect_desc=Выбранный OpenID URI неизвестен. Свяжите с новой учетной записью здесь.
|
||||
openid_register_title=Создать новый аккаунт
|
||||
openid_register_desc=Выбранный OpenID URI неизвестен. Свяжите с новой учетной записью здесь.
|
||||
openid_signin_desc=Введите свой OpenID URI. Например: https://anne.me, bob.openid.org.cn или gnusocial.net/carry.
|
||||
disable_forgot_password_mail=К сожалению сброс пароля отключен. Пожалуйста, свяжитесь с администратором сайта.
|
||||
|
||||
|
|
@ -254,6 +264,8 @@ TreeName=Путь к файлу
|
|||
Content=Содержимое
|
||||
|
||||
require_error=` не может быть пустым.`
|
||||
alpha_dash_error=` должен содержать только буквенно-цифровые символы, тире (' - ') и подчеркивания ('_').`
|
||||
alpha_dash_dot_error=` должен содержать только буквенно-цифровые символы, тире ('-'), подчеркивания ('_') и точки ('.').`
|
||||
git_ref_name_error=` должно быть правильным ссылочным именем Git.`
|
||||
size_error=` должен быть размер %s.`
|
||||
min_size_error=«должен содержать по крайней мере %s символов.»
|
||||
|
|
@ -277,31 +289,43 @@ enterred_invalid_repo_name=Введенное вами имя репозитор
|
|||
enterred_invalid_owner_name=Имя нового владельца недоступно.
|
||||
enterred_invalid_password=Введенный пароль неверный.
|
||||
user_not_exist=Пользователь не существует.
|
||||
last_org_owner=Вы не можете удалить последнего пользователя из команды 'владельцы'. В любой команде должен быть хотя бы один владелец.
|
||||
cannot_add_org_to_team=Организацию нельзя добавить в качестве члена команды.
|
||||
|
||||
invalid_ssh_key=Не удается проверить SSH ключ: %s
|
||||
invalid_gpg_key=Не удается проверить GPG ключ: %s
|
||||
unable_verify_ssh_key=Не удается проверить ключ SSH; дважды проверьте его на наличие ошибок.
|
||||
auth_failed=Ошибка аутентификации: %v
|
||||
|
||||
still_own_repo=Ваша учетная запись владеет одним или несколькими репозиториями; удалите или перенесите их в первую очередь.
|
||||
still_has_org=Ваша учетная запись является членом одной или нескольких организаций; выйдите из них в первую очередь.
|
||||
org_still_own_repo=Эта организация по-прежнему владеет одним или несколькими репозиториями; сначала удалите или перенесите их.
|
||||
|
||||
target_branch_not_exist=Целевая ветка не существует
|
||||
|
||||
[user]
|
||||
change_avatar=Измените свой авататар…
|
||||
join_on=Присоединился
|
||||
repositories=Репозитории
|
||||
activity=Активность
|
||||
followers=Подписчики
|
||||
starred=Избранные репозитории
|
||||
following=Подписан
|
||||
follow=Подписаться
|
||||
unfollow=Отписаться
|
||||
|
||||
form.name_reserved=Имя пользователя '%s' зарезервировано.
|
||||
form.name_pattern_not_allowed=Шаблон '%s' не допускается в имени пользователя.
|
||||
|
||||
[settings]
|
||||
profile=Профиль
|
||||
account=Аккаунт
|
||||
password=Пароль
|
||||
security=Безопасность
|
||||
avatar=Аватар
|
||||
ssh_gpg_keys=SSH / GPG ключи
|
||||
social=Учетные записи в соцсетях
|
||||
applications=Приложения
|
||||
orgs=Управление организациями
|
||||
repos=Репозитории
|
||||
delete=Удалить аккаунт
|
||||
|
|
@ -309,6 +333,7 @@ twofa=Двухфакторная аутентификация
|
|||
account_link=Привязанные аккаунты
|
||||
organization=Организации
|
||||
uid=UID
|
||||
u2f=Ключи безопасности
|
||||
|
||||
public_profile=Открытый профиль
|
||||
profile_desc=Ваш адрес электронной почты будет использован для уведомлений и других операций.
|
||||
|
|
@ -350,19 +375,32 @@ email_deletion=Удалить адрес электронной почты
|
|||
email_deletion_desc=Адрес электронной почты и вся связанная с ним информация будет удалена из вашего аккаунта. Коммиты, сделанные от имени этого адреса электронной почты, не будут изменены. Продолжить?
|
||||
email_deletion_success=Ваш Email адрес был удален.
|
||||
openid_deletion=Удалить OpenID URI
|
||||
openid_deletion_desc=После удаления адреса OpenID вы не сможете войти в вашу учётную запись с его помощью. Вы уверены?
|
||||
openid_deletion_success=OpenID был удален.
|
||||
add_new_email=Добавить новый адрес электронной почты
|
||||
add_new_openid=Добавить новый OpenID URI
|
||||
add_email=Добавить новый адрес электронной почты
|
||||
add_openid=Добавить адрес OpenID
|
||||
add_email_confirmation_sent=Письмо для подтверждения было отправлено на '%s'. Пожалуйста, проверьте ваш почтовый ящик в течение %s, чтобы завершить процесс подтверждения.
|
||||
add_email_success=Добавлен новый адрес электронной почты.
|
||||
add_openid_success=Добавлен новый адрес OpenID.
|
||||
keep_email_private=Скрыть адрес электронной почты
|
||||
keep_email_private_popup=Ваш адрес электронной почты будет скрыт от других пользователей.
|
||||
openid_desc=OpenID позволяет делегировать проверку подлинности внешнему поставщику.
|
||||
|
||||
manage_ssh_keys=Управление SSH ключами
|
||||
manage_gpg_keys=Управление GPG ключами
|
||||
add_key=Добавить ключ
|
||||
ssh_desc=Эти открытые SSH ключи связаны с вашей учетной записью. Соответствующие закрытые ключи обеспечивают полный доступ к вашим хранилищам.
|
||||
gpg_desc=Эти открытые GPG ключи связаны с вашей учетной записью. Храните закрытые ключи в безопасности, так как они позволяют проверять подлинности коммитов.
|
||||
ssh_helper=<strong>Нужна помощь?</strong> Ознакомьтесь с руководством GitHub по <a href="%s">созданию SSH ключей</a> или решению <a href="%s">возникающих проблем</a> при использовании SSH.
|
||||
gpg_helper=<strong>Нужна помощь?</strong> Взгляните на руководство GitHub <a href="%s"> по GPG</a>.
|
||||
add_new_key=Добавить SSH ключ
|
||||
add_new_gpg_key=Добавить GPG ключ
|
||||
ssh_key_been_used=Этот SSH ключ уже добавлен в вашу учетную запись.
|
||||
ssh_key_name_used=SSH ключ с таким именем уже добавлен в вашу учетную запись.
|
||||
gpg_key_id_used=Публичный GPG ключ с таким же идентификатором уже существует.
|
||||
gpg_no_key_email_found=Этот ключ GPG не может использоваться с любым адресом электронной почты, привязанной к вашей учетной записи.
|
||||
subkeys=Подключи
|
||||
key_id=ИД ключа
|
||||
key_name=Имя ключа
|
||||
|
|
@ -370,6 +408,10 @@ key_content=Содержимое
|
|||
add_key_success=SSH ключ '%s' добавлен.
|
||||
add_gpg_key_success=GPG ключ '%s' добавлен.
|
||||
delete_key=Удалить
|
||||
ssh_key_deletion=Удалить SSH ключ
|
||||
gpg_key_deletion=Удалить GPG ключ
|
||||
ssh_key_deletion_desc=Удаление SSH ключа аннулирует его доступ к вашей учетной записи. Продолжить?
|
||||
gpg_key_deletion_desc=Удаление GPG ключа отменяет проверку подписанных им коммитов. Продолжить?
|
||||
ssh_key_deletion_success=SSH ключ был удален.
|
||||
gpg_key_deletion_success=GPG ключ был удален.
|
||||
add_on=Добавлено
|
||||
|
|
@ -389,7 +431,9 @@ manage_social=Управление привязанными учетными з
|
|||
unbind=Удалить связь
|
||||
unbind_success=Связанная внешняя учётная запись была удалена.
|
||||
|
||||
manage_access_token=Управление токенами
|
||||
generate_new_token=Создать новый токен
|
||||
tokens_desc=Эти токены предоставляют доступ к вашей учетной записи с помощью Gitea API.
|
||||
token_name=Имя токена
|
||||
generate_token=Генерировать токен
|
||||
generate_token_success=Новый токен создан. Скопируйте и сохраните его сейчас, так как он не будет показан снова.
|
||||
|
|
@ -413,6 +457,7 @@ scan_this_image=Сканируйте это изображение вашим п
|
|||
or_enter_secret=Или введите кодовое слово: %s
|
||||
then_enter_passcode=И введите пароль, показанный в приложении:
|
||||
passcode_invalid=Неверный пароль. попробуйте снова.
|
||||
twofa_enrolled=Для вашего аккаунта была включена двухфакторная аутентификация. Сохраните ваш scratch-токен (%s), он не сохраняется на сервере!
|
||||
|
||||
u2f_register_key=Добавить ключ безопасности
|
||||
u2f_nickname=Имя пользователя
|
||||
|
|
@ -420,14 +465,21 @@ u2f_press_button=Нажмите кнопку на ключе безопасно
|
|||
u2f_delete_key=Удалить ключ безопасности
|
||||
u2f_delete_key_desc=Если вы удалите ключ безопасности, вы не сможете использовать его для входа. Вы уверены?
|
||||
|
||||
manage_account_links=Управление привязанными аккаунтами
|
||||
manage_account_links_desc=Эти внешние аккаунты привязаны к вашему аккаунту Gitea.
|
||||
account_links_not_available=В настоящее время нет внешних аккаунтов, привязанных к вашему аккаунту Gitea.
|
||||
remove_account_link=Удалить привязанный аккаунт
|
||||
remove_account_link_desc=Удаление привязанной учетной записи отменит её доступ к вашей учетной записи Gitea. Продолжить?
|
||||
remove_account_link_success=Привязанная учетная запись удалена.
|
||||
|
||||
orgs_none=Вы не состоите ни в одной организации.
|
||||
repos_none=Вы не владеете репозиториями
|
||||
|
||||
delete_account=Удалить свой аккаунт
|
||||
delete_prompt=Эта операция навсегда удалит вашу учетную запись. Это <strong>НЕВОЗМОЖНО</strong> будет отменить.
|
||||
confirm_delete_account=Подтвердите удаление
|
||||
delete_account_title=Удалить аккаунт
|
||||
delete_account_desc=Вы уверены, что хотите навсегда удалить этот аккаунт?
|
||||
|
||||
[repo]
|
||||
owner=Владелец
|
||||
|
|
@ -436,6 +488,7 @@ repo_name_helper=Лучшие названия репозиториев сост
|
|||
visibility=Видимость
|
||||
visiblity_helper=Сделать репозиторий приватным
|
||||
visiblity_fork_helper=(Изменение этого повлияет на все форки.)
|
||||
clone_helper=Нужна помощь в клонировании? Посетите страницу <a target="_blank" rel="noopener" href="%s">справки</a>.
|
||||
fork_repo=Форкнуть репозиторий
|
||||
fork_from=Форк от
|
||||
fork_visiblity_helper=Видимость форкнутого репозитория изменить нельзя.
|
||||
|
|
@ -452,6 +505,8 @@ default_branch=Ветка по умолчанию
|
|||
mirror_prune=Очистить
|
||||
mirror_interval=Интервал зеркалирования (допустимы единицы времени 'h', 'm', 's')
|
||||
mirror_interval_invalid=Недопустимый интервал зеркалирования.
|
||||
mirror_address=Клонировать по URL
|
||||
mirror_address_desc=Укажите необходимые учетные данные в адресе.
|
||||
mirror_last_synced=Последняя синхронизация
|
||||
watchers=Наблюдатели
|
||||
stargazers=Звездочеты
|
||||
|
|
@ -461,10 +516,13 @@ reactions_more=и ещё %d
|
|||
|
||||
form.reach_limit_of_creation=Вы уже достигли ваш предел %d репозиториев.
|
||||
form.name_reserved=Имя репозитория '%s' зарезервировано.
|
||||
form.name_pattern_not_allowed=Шаблон имени репозитория '%s' не допускается.
|
||||
|
||||
migrate_type=Тип миграции
|
||||
migrate_type_helper=Этот репозиторий будет <span class="text blue">зеркалом</span>
|
||||
migrate_repo=Перенос репозитория
|
||||
migrate.clone_address=Перенос / Клонирование по URL
|
||||
migrate.clone_address_desc=Это может быть HTTP/HTTPS/GIT адрес или локальный путь существующего репозитория на сервере.
|
||||
migrate.clone_local_path=или путь к локальному серверу
|
||||
migrate.permission_denied=У вас нет прав на импорт локальных репозиториев.
|
||||
migrate.invalid_local_path=Недопустимый локальный путь. Возможно он не существует или не является папкой.
|
||||
|
|
@ -510,8 +568,10 @@ file_raw=Исходник
|
|||
file_history=История
|
||||
file_view_raw=Посмотреть исходник
|
||||
file_permalink=Постоянная ссылка
|
||||
file_too_large=Этот файл слишком большой, поэтому он не может быть отображён.
|
||||
video_not_supported_in_browser=Ваш браузер не поддерживает HTML5 'video' тэг.
|
||||
stored_lfs=Хранится Git LFS
|
||||
commit_graph=Граф коммитов
|
||||
|
||||
editor.new_file=Новый файл
|
||||
editor.upload_file=Загрузить файл
|
||||
|
|
@ -522,6 +582,7 @@ editor.edit_this_file=Редактировать файл
|
|||
editor.delete_this_file=Удалить файл
|
||||
editor.file_delete_success=Файл '%s' удалён.
|
||||
editor.name_your_file=Назовите свой файл…
|
||||
editor.filename_help=Чтобы добавить каталог, просто наберите название и нажмите /. Чтобы удалить каталог, перейдите к началу поля и нажмите клавишу backspace.
|
||||
editor.or=или
|
||||
editor.cancel_lower=Отменить
|
||||
editor.commit_changes=Сохранить правки
|
||||
|
|
@ -536,12 +597,22 @@ editor.new_branch_name_desc=Новое название ветки…
|
|||
editor.cancel=Отмена
|
||||
editor.filename_cannot_be_empty=Имя файла не может быть пустым.
|
||||
editor.branch_already_exists=Ветка «%s» уже существует в этом репозитории.
|
||||
editor.directory_is_a_file=Имя каталога '%s' уже используется в качестве имени файла в этом репозитории.
|
||||
editor.file_is_a_symlink='%s' является символической ссылкой. Символические ссылки нельзя редактировать в веб-редакторе
|
||||
editor.filename_is_a_directory=Имя файла '%s' уже используется в качестве имени каталога в этом репозитории.
|
||||
editor.file_editing_no_longer_exists=Редактируемый файл '%s' больше не существует в этом репозитории.
|
||||
editor.file_changed_while_editing=Содержимое файла изменилось с момента начала редактирования. <a target="_blank" rel="noopener" href="%s">Нажмите здесь</a>, чтобы увидеть, что было изменено, или <strong>Зафиксировать изменения снова</strong>, чтобы заменить их.
|
||||
editor.file_already_exists=Файл с именем '%s' уже существует в репозитории.
|
||||
editor.no_changes_to_show=Нет изменений.
|
||||
editor.fail_to_update_file=Не удалось обновить/создать файл «%s» из-за ошибки: %v
|
||||
editor.add_subdir=Добавить каталог…
|
||||
editor.unable_to_upload_files=Не удалось загрузить файлы в «%s» из-за ошибки: %v
|
||||
editor.upload_files_to_dir=Загрузить файлы '%s'
|
||||
editor.cannot_commit_to_protected_branch=Нельзя коммитить в защищённую ветку '%s'.
|
||||
|
||||
commits.desc=Просмотр истории изменений исходного кода.
|
||||
commits.commits=Коммиты
|
||||
commits.search=Поиск коммитов…
|
||||
commits.find=Поиск
|
||||
commits.search_all=Все ветки
|
||||
commits.author=Автор
|
||||
|
|
@ -550,8 +621,12 @@ commits.date=Дата
|
|||
commits.older=Раньше
|
||||
commits.newer=Новее
|
||||
commits.signed_by=Подписано
|
||||
commits.gpg_key_id=Идентификатор GPG ключа
|
||||
|
||||
ext_issues=Внешние задачи
|
||||
ext_issues.desc=Ссылка на внешнюю систему отслеживания ошибок.
|
||||
|
||||
issues.desc=Организация отчетов об ошибках, задач и этапов.
|
||||
issues.new=Новая задача
|
||||
issues.new.labels=Метки
|
||||
issues.new.no_label=Нет меток
|
||||
|
|
@ -561,12 +636,18 @@ issues.new.no_milestone=Нет этапа
|
|||
issues.new.clear_milestone=Очистить этап
|
||||
issues.new.open_milestone=Открыть этап
|
||||
issues.new.closed_milestone=Завершенные этапы
|
||||
issues.new.assignees=Назначенные
|
||||
issues.new.clear_assignees=Убрать ответственных
|
||||
issues.new.no_assignees=Никто не назначен
|
||||
issues.no_ref=Не указана ветка или тэг
|
||||
issues.create=Добавить задачу
|
||||
issues.new_label=Новая метка
|
||||
issues.new_label_placeholder=Имя метки
|
||||
issues.new_label_desc_placeholder=Описание
|
||||
issues.create_label=Добавить метку
|
||||
issues.label_templates.title=Загрузить набор предопределённых меток
|
||||
issues.label_templates.helper=Выберите метку
|
||||
issues.label_templates.use=Использовать набор меток
|
||||
issues.label_templates.fail_to_load_file=Не удалось загрузить файл шаблона метки «%s»: %v
|
||||
issues.add_label_at=добавил(а) метку <div class="ui label" style="color: %s\; background-color: %s">%s</div> %s
|
||||
issues.remove_label_at=убрал(а) метку <div class="ui label" style="color: %s\; background-color: %s">%s</div> %s
|
||||
|
|
@ -586,6 +667,7 @@ issues.filter_label_no_select=Все метки
|
|||
issues.filter_milestone=Этап
|
||||
issues.filter_milestone_no_select=Все этапы
|
||||
issues.filter_assignee=Назначено
|
||||
issues.filter_assginee_no_select=Все назначения
|
||||
issues.filter_type=Тип
|
||||
issues.filter_type.all_issues=Все задачи
|
||||
issues.filter_type.assigned_to_you=Назначено вам
|
||||
|
|
@ -598,6 +680,10 @@ issues.filter_sort.recentupdate=Недавно обновленные
|
|||
issues.filter_sort.leastupdate=Давно обновленные
|
||||
issues.filter_sort.mostcomment=Большего комментариев
|
||||
issues.filter_sort.leastcomment=Меньше комментариев
|
||||
issues.filter_sort.moststars=Больше звезд
|
||||
issues.filter_sort.feweststars=Меньше звезд
|
||||
issues.filter_sort.mostforks=Больше форков
|
||||
issues.filter_sort.fewestforks=Меньше форков
|
||||
issues.action_open=Открыть
|
||||
issues.action_close=Закрыть
|
||||
issues.action_label=Метка
|
||||
|
|
@ -616,7 +702,9 @@ issues.commented_at=`прокомментировал <a href="#%s"> %s</a>`
|
|||
issues.delete_comment_confirm=Вы уверены, что хотите удалить этот комментарий?
|
||||
issues.no_content=Пока нет содержимого.
|
||||
issues.close_issue=Закрыть
|
||||
issues.close_comment_issue=Прокомментировать и закрыть
|
||||
issues.reopen_issue=Открыть снова
|
||||
issues.reopen_comment_issue=Прокомментировать и открыть снова
|
||||
issues.create_comment=Комментировать
|
||||
issues.closed_at=`закрыл <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.reopened_at=`открыл снова <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
|
|
@ -637,6 +725,8 @@ issues.label_edit=Редактировать
|
|||
issues.label_delete=Удалить
|
||||
issues.label_modify=Изменить метку
|
||||
issues.label_deletion=Удалить метку
|
||||
issues.label_deletion_desc=Удаление метки удаляет ее из всех обсуждений. Продолжить?
|
||||
issues.label_deletion_success=Метка была удалена.
|
||||
issues.label.filter_sort.alphabetically=По алфавиту
|
||||
issues.label.filter_sort.reverse_alphabetically=С конца алфавита
|
||||
issues.label.filter_sort.by_size=Размер
|
||||
|
|
@ -646,23 +736,43 @@ issues.attachment.open_tab=`Нажмите, чтобы увидеть "%s" в н
|
|||
issues.attachment.download=`Нажмите, чтобы скачать "%s"`
|
||||
issues.subscribe=Подписаться
|
||||
issues.unsubscribe=Отказаться от подписки
|
||||
issues.tracker=Отслеживание времени
|
||||
issues.start_tracking_short=Начать
|
||||
issues.start_tracking=Начать отслеживание времени
|
||||
issues.start_tracking_history=`начал работать %s`
|
||||
issues.tracking_already_started=`Вы уже начали отслеживать время для этой <a href="%s">задачи</a>!`
|
||||
issues.stop_tracking=Остановить
|
||||
issues.stop_tracking_history=`перестал работать %s`
|
||||
issues.add_time=Вручную добавить время
|
||||
issues.add_time_short=Добавить время
|
||||
issues.add_time_cancel=Отмена
|
||||
issues.add_time_history=`добавил потраченное время %s`
|
||||
issues.add_time_hours=Часы
|
||||
issues.add_time_minutes=Минуты
|
||||
issues.add_time_sum_to_small=Время не было введено.
|
||||
issues.cancel_tracking=Отмена
|
||||
issues.cancel_tracking_history=`отменил отслеживание %s`
|
||||
issues.time_spent_total=Общее затраченное время
|
||||
issues.time_spent_from_all_authors=`Общее затраченное время: %s`
|
||||
issues.due_date=Срок выполнения
|
||||
issues.invalid_due_date_format=Дата окончания должна быть в формате 'гггг-мм-дд'.
|
||||
issues.error_modifying_due_date=Не удалось изменить срок выполнения.
|
||||
issues.error_removing_due_date=Не удалось убрать срок выполнения.
|
||||
issues.due_date_form=гггг-мм-дд
|
||||
issues.due_date_not_set=Срок выполнения не установлен.
|
||||
issues.due_date_remove=удалён срок выполнения %s %s
|
||||
issues.due_date_overdue=Просроченные
|
||||
|
||||
pulls.desc=Включить Pull Request'ы и интерфейс согласования правок.
|
||||
pulls.new=Новый Pull Request
|
||||
pulls.compare_changes=Новый Pull Request
|
||||
pulls.compare_changes_desc=Сравнить две ветки и создать запрос на слияние для изменений.
|
||||
pulls.compare_base=родительская ветка
|
||||
pulls.compare_compare=сравнить
|
||||
pulls.filter_branch=Фильтр по ветке
|
||||
pulls.no_results=Результатов не найдено.
|
||||
pulls.nothing_to_compare=Нечего сравнивать, родительская и текущая ветка одинаковые.
|
||||
pulls.has_pull_request=`Уже существует запрос на слияние между двумя целями: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Создать Pull Request
|
||||
pulls.title_desc=хочет смерджить %[1]d коммит(ов) из <code>%[2]s</code> в <code>%[3]s</code>
|
||||
pulls.merged_title_desc=слито %[1]d коммит(ов) из <code>%[2]s</code> в <code>%[3]s</code> %[4]s
|
||||
|
|
@ -671,10 +781,17 @@ pulls.tab_commits=Коммиты
|
|||
pulls.tab_files=Измененные файлы
|
||||
pulls.reopen_to_merge=Пожалуйста, переоткройте этот Pull Request для выполнения слияния.
|
||||
pulls.merged=Слито
|
||||
pulls.has_merged=Слияние этого запроса успешно завершено.
|
||||
pulls.data_broken=Содержимое этого запроса было нарушено вследствие удаления информации форка.
|
||||
pulls.is_checking=Продолжается проверка конфликтов, пожалуйста обновите страницу несколько позже.
|
||||
pulls.can_auto_merge_desc=Этот Pull Request может быть объединён автоматически.
|
||||
pulls.cannot_auto_merge_desc=Этот запрос на слияние не может быть объединён автоматически.
|
||||
pulls.cannot_auto_merge_helper=Пожалуйста, совершите слияние вручную для урегулирования конфликтов.
|
||||
pulls.no_merge_desc=Pull Request не может быть принят, так как запрещены все методы организации рабочего потока.
|
||||
pulls.merge_pull_request=Принять Pull Request
|
||||
pulls.rebase_merge_pull_request=Выполнить rebase и принять PR
|
||||
pulls.squash_merge_pull_request=Объединить и принять PR
|
||||
pulls.open_unmerged_pull_exists=`Вы не можете снова открыть, поскольку уже существует запрос на слияние (#%d) из того же репозитория с той же информацией о слиянии и ожидающий слияния.`
|
||||
|
||||
milestones.new=Новый этап
|
||||
milestones.open_tab=%d открыты
|
||||
|
|
@ -683,13 +800,21 @@ milestones.closed=Закрыт %s
|
|||
milestones.no_due_date=Срок не указан
|
||||
milestones.open=Открыть
|
||||
milestones.close=Закрыть
|
||||
milestones.new_subheader=Создавайте этапы для организации ваших задач.
|
||||
milestones.create=Создать этап
|
||||
milestones.title=Заголовок
|
||||
milestones.desc=Описание
|
||||
milestones.due_date=Дата окончания (опционально)
|
||||
milestones.clear=Очистить
|
||||
milestones.invalid_due_date_format=Дата окончания должна быть в формате 'гггг-мм-дд'.
|
||||
milestones.create_success=Этап '%s' создан.
|
||||
milestones.edit=Редактировать этап
|
||||
milestones.edit_subheader=Используйте лучшее описание контрольной точки, во избежание непонимания со стороны других людей.
|
||||
milestones.cancel=Отмена
|
||||
milestones.modify=Обновить этап
|
||||
milestones.edit_success=Этап '%s' был обновлен.
|
||||
milestones.deletion=Удалить этап
|
||||
milestones.deletion_success=Контрольная точка успешно удалена.
|
||||
milestones.filter_sort.closest_due_date=Ближайшее по дате
|
||||
milestones.filter_sort.furthest_due_date=Дальнее по дате
|
||||
milestones.filter_sort.least_complete=Менее полное
|
||||
|
|
@ -697,17 +822,25 @@ milestones.filter_sort.most_complete=Более полное
|
|||
milestones.filter_sort.most_issues=Большинство задач
|
||||
milestones.filter_sort.least_issues=Меньшинство задач
|
||||
|
||||
ext_wiki=Внешняя вики
|
||||
ext_wiki.desc=Ссылка на внешнюю вики.
|
||||
|
||||
wiki=Вики
|
||||
wiki.welcome=Добро пожаловать в Вики.
|
||||
wiki.desc=Вики - это место для хранения документации.
|
||||
wiki.create_first_page=Создать первую страницу
|
||||
wiki.page=Страница
|
||||
wiki.filter_page=Фильтр страницы
|
||||
wiki.new_page=Страница
|
||||
wiki.default_commit_message=Описание изменения вики-страницы (необязательно).
|
||||
wiki.save_page=Сохранить страницу
|
||||
wiki.last_commit_info=%s редактировал эту страницу %s
|
||||
wiki.edit_page_button=Редактировать
|
||||
wiki.new_page_button=Новая страница
|
||||
wiki.delete_page_button=Удалить страницу
|
||||
wiki.delete_page_notice_1=Удаление вики-страницы '%s' не может быть отменено. Продолжить?
|
||||
wiki.page_already_exists=Вики-страница с таким именем уже существует.
|
||||
wiki.reserved_page=Имя вики-страницы '%s' зарезервировано.
|
||||
wiki.pages=Страницы
|
||||
wiki.last_updated=Последнее обновление %s
|
||||
|
||||
|
|
@ -744,6 +877,9 @@ activity.closed_issue_label=Закрыто
|
|||
activity.new_issues_count_1=Новая задача
|
||||
activity.new_issues_count_n=Новых задач
|
||||
activity.new_issue_label=Открытые
|
||||
activity.title.unresolved_conv_1=%d Незавершённое обсуждение
|
||||
activity.title.unresolved_conv_n=%d Незавершённых обсуждений
|
||||
activity.unresolved_conv_desc=Список всех старых тикетов и Pull Request'ов с недавней активностью, но ещё не закрытых либо принятых.
|
||||
activity.unresolved_conv_label=Открытые
|
||||
activity.title.releases_1=%d релиз
|
||||
activity.title.releases_n=%d релизов
|
||||
|
|
@ -766,66 +902,176 @@ settings.hooks=Автоматическое обновление
|
|||
settings.githooks=Git хуки
|
||||
settings.basic_settings=Основные параметры
|
||||
settings.mirror_settings=Настройки зеркалирования
|
||||
settings.sync_mirror=Синхронизировать
|
||||
settings.mirror_sync_in_progress=Синхронизируются репозитории-зеркала. Подождите минуту и обновите страницу.
|
||||
settings.site=Сайт
|
||||
settings.update_settings=Обновить настройки
|
||||
settings.advanced_settings=Расширенные настройки
|
||||
settings.wiki_desc=Включить Вики для репозитория
|
||||
settings.use_internal_wiki=Использовать встроенную вики-систему
|
||||
settings.use_external_wiki=Использовать внешнюю вики-систему
|
||||
settings.external_wiki_url=URL-адрес внешней Вики
|
||||
settings.external_wiki_url_error=URL внешней вики не является допустимым URL-адресом.
|
||||
settings.external_wiki_url_desc=Посетители будут перенаправлены на URL-адрес, когда они кликнут по вкладке.
|
||||
settings.issues_desc=Включить систему учёта задач репозитория
|
||||
settings.use_internal_issue_tracker=Использовать встроенную систему учета задач
|
||||
settings.use_external_issue_tracker=Использовать внешнюю систему учета задач
|
||||
settings.external_tracker_url=URL внешней системы отслеживания ошибок
|
||||
settings.external_tracker_url_error=URL внешнего баг-трекера не является допустимым URL-адресом.
|
||||
settings.external_tracker_url_desc=Посетители будут перенаправлены на URL-адрес, когда они кликнут по вкладке.
|
||||
settings.tracker_url_format=Внешний формат ссылки системы отслеживания ошибок.
|
||||
settings.tracker_issue_style=Формат нумерации для внешней системы учета задач
|
||||
settings.tracker_issue_style.numeric=Цифровой
|
||||
settings.tracker_issue_style.alphanumeric=Буквенноцифровой
|
||||
settings.tracker_url_format_desc=Вы можете использовать шаблоны <code>{user}</code>, <code>{repo}</code> и <code>{index}</code> для имени пользователя, репозитория и номера задачи.
|
||||
settings.enable_timetracker=Включить отслеживание времени
|
||||
settings.allow_only_contributors_to_track_time=Учитывать только участников разработки в подсчёте времени
|
||||
settings.pulls_desc=Включить публичные запросы на слияние
|
||||
settings.pulls.ignore_whitespace=Игнорировать незначащие изменения (пробелы, табуляция) при проверке на конфликты слияния
|
||||
settings.pulls.allow_merge_commits=Разрешить коммиты слияния
|
||||
settings.pulls.allow_rebase_merge=Разрешить rebase-слияние
|
||||
settings.pulls.allow_squash_commits=Разрешить объединять коммиты перед слиянием (squash)
|
||||
settings.admin_settings=Настройки администратора
|
||||
settings.admin_enable_health_check=Выполнять проверки целостности этого репозитория (git fsck)
|
||||
settings.danger_zone=Опасная зона
|
||||
settings.new_owner_has_same_repo=У нового владельца уже есть хранилище с таким названием.
|
||||
settings.convert=Преобразовать в обычный репозиторий
|
||||
settings.convert_desc=Это зеркало можно преобразовать в обычный репозиторий. Это не может быть отменено.
|
||||
settings.convert_notices_1=Эта операция преобразует это зеркало в обычный репозиторий, и она не может быть отменена.
|
||||
settings.convert_confirm=Подтвердите преобразование
|
||||
settings.convert_succeed=Репозиторий успешно преобразован в обычный.
|
||||
settings.transfer=Передать права собственности
|
||||
settings.transfer_desc=Передать репозиторий другому пользователю или организации где у вас есть права администратора.
|
||||
settings.transfer_notices_1=- Вы можете потерять доступ, если новый владелец является отдельным пользователем.
|
||||
settings.transfer_notices_2=- Вы сохраните доступ, если новым владельцем станет организация, владельцем которой вы являетесь.
|
||||
settings.transfer_form_title=Введите сопутствующую информацию для подтверждения операции:
|
||||
settings.wiki_delete=Стереть данные Вики
|
||||
settings.wiki_delete_desc=Будьте внимательны! Как только вы удалите Вики — пути назад не будет.
|
||||
settings.wiki_delete_notices_1=- Это навсегда удалит и отключит Вики для %s.
|
||||
settings.confirm_wiki_delete=Стереть данные Вики
|
||||
settings.wiki_deletion_success=Данные Вики успешно стерты.
|
||||
settings.delete=Удалить этот репозиторий
|
||||
settings.delete_desc=Будьте внимательны! Как только вы удалите репозиторий — пути назад не будет.
|
||||
settings.delete_notices_1=- Эта операция <strong>НЕ МОЖЕТ</strong> быть отменена.
|
||||
settings.delete_notices_2=- Эта операция навсегда удалит всё из репозитория <strong>%s</strong>, включая данные Git, связанные с ним задачи, комментарии и права доступа для сотрудников.
|
||||
settings.delete_notices_fork_1=- Все форки станут независимыми репозиториями после удаления.
|
||||
settings.deletion_success=Репозиторий удален.
|
||||
settings.update_settings_success=Настройки репозитория обновлены.
|
||||
settings.transfer_owner=Новый владелец
|
||||
settings.make_transfer=Выполнить передачу
|
||||
settings.transfer_succeed=Репозиторий перенесён.
|
||||
settings.confirm_delete=Удалить репозиторий
|
||||
settings.add_collaborator=Добавить соавтора
|
||||
settings.add_collaborator_success=Соавтор добавлен.
|
||||
settings.delete_collaborator=Удалить
|
||||
settings.collaborator_deletion=Удалить соавтора
|
||||
settings.collaborator_deletion_desc=Этот пользователь больше не будет иметь доступа для совместной работы в этом репозитории после удаления. Вы хотите продолжить?
|
||||
settings.remove_collaborator_success=Соавтор удалён.
|
||||
settings.search_user_placeholder=Поиск пользователя…
|
||||
settings.org_not_allowed_to_be_collaborator=Организации не могут быть добавлены как соавторы.
|
||||
settings.user_is_org_member=Пользователь является членом организации, члены которой не могут быть добавлены в качестве соавтора.
|
||||
settings.add_webhook=Добавить Webhook
|
||||
settings.hooks_desc=Webhooks позволяют внешним службам получать уведомления при возникновении определенных событий на Gitea. При возникновении указанных событий мы отправим запрос POST на каждый заданный вами URL. Узнать больше можно в нашем <a target="_blank" rel="noopener" href="%s">руководстве по webhooks</a>.
|
||||
settings.webhook_deletion=Удалить Webhook
|
||||
settings.webhook_deletion_desc=Удаление этого веб-хука приведет к удалению всей связанной с ним информации, включая историю. Хотите продолжить?
|
||||
settings.webhook_deletion_success=Webhook был удалён.
|
||||
settings.webhook.test_delivery=Проверить доставку
|
||||
settings.webhook.test_delivery_desc=Отправить тестовое событие для тестирования настройки веб-хука.
|
||||
settings.webhook.test_delivery_success=Тест веб-хука была добавлен в очередь доставки. Это может занять несколько секунд, прежде чем он отобразится в истории доставки.
|
||||
settings.webhook.request=Запрос
|
||||
settings.webhook.response=Ответ
|
||||
settings.webhook.headers=Заголовки
|
||||
settings.webhook.payload=Содержимое
|
||||
settings.webhook.body=Тело ответа
|
||||
settings.githooks_desc=Git-хуки предоставляются Git самим по себе, вы можете изменять файлы поддерживаемых хуков из списка ниже чтобы выполнять внешние операции.
|
||||
settings.githook_edit_desc=Если хук не активен, будет подставлен пример содержимого. Пустое значение в этом поле приведет к отключению хука.
|
||||
settings.githook_name=Название Hook'a
|
||||
settings.githook_content=Перехватить содержание
|
||||
settings.update_githook=Обновить Hook
|
||||
settings.add_webhook_desc=Gitea будет оправлять <code>POST</code> запросы на указанный URL адрес, с информацией о происходящих событиях. Вы также можете указать формат данных (JSON, x-www-form-urlencoded, XML и т.д.). Подробности на странице <a target="_blank" rel="noopener" href="%s">инструкции по использованию webhooks</a>.
|
||||
settings.payload_url=URL обработчика
|
||||
settings.content_type=Тип содержимого
|
||||
settings.secret=Секретный ключ
|
||||
settings.slack_username=Имя пользователя
|
||||
settings.slack_icon_url=URL иконки
|
||||
settings.discord_username=Имя пользователя
|
||||
settings.discord_icon_url=URL иконки
|
||||
settings.slack_color=Цвет
|
||||
settings.event_desc=На какие события этот webhook должен срабатывать?
|
||||
settings.event_push_only=Просто push событие
|
||||
settings.event_send_everything=Все события
|
||||
settings.event_choose=Позвольте мне выбрать то, что нужно.
|
||||
settings.event_create=Создать
|
||||
settings.event_create_desc=Ветка или тэг созданы.
|
||||
settings.event_delete=Удалить
|
||||
settings.event_delete_desc=Ветка или метка удалена
|
||||
settings.event_fork=Форкнуть
|
||||
settings.event_fork_desc=Репозиторий склонирован
|
||||
settings.event_issues=Задачи
|
||||
settings.event_issue_comment=Комментарии в задаче
|
||||
settings.event_issue_comment_desc=Комментарий создан, изменен или удален.
|
||||
settings.event_release=Релиз
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Запрос слияния открыт, закрыт, переоткрыт, изменён, назначен, снят, метка обновлена, метка убрана, или синхронизирован.
|
||||
settings.event_push=Push
|
||||
settings.event_push_desc=Push в репозиторий.
|
||||
settings.event_repository=Репозиторий
|
||||
settings.event_repository_desc=Репозиторий создан или удален.
|
||||
settings.active=Активен
|
||||
settings.active_helper=Также будет отправлена информация о произошедшем событии.
|
||||
settings.add_hook_success=Webhook был добавлен.
|
||||
settings.update_webhook=Обновление Webhook
|
||||
settings.update_hook_success=Webhook был обновлен.
|
||||
settings.delete_webhook=Удалить Webhook
|
||||
settings.recent_deliveries=Недавние рассылки
|
||||
settings.hook_type=Тип перехватчика
|
||||
settings.add_slack_hook_desc=Добавить интеграцию с <a href="%s">Slack</a> в ваш репозиторий.
|
||||
settings.slack_token=Slack токен
|
||||
settings.slack_domain=Домен
|
||||
settings.slack_channel=Канал
|
||||
settings.add_discord_hook_desc=Добавить уведомления о событиях через <a href="%s">Discord</a>.
|
||||
settings.add_dingtalk_hook_desc=Добавить интеграцию с <a href="%s">Dingtalk</a> в ваш репозиторий.
|
||||
settings.deploy_keys=Ключи развертывания
|
||||
settings.add_deploy_key=Добавить ключ развертывания
|
||||
settings.deploy_key_desc=Ключи развёртывания доступны только для чтения. Это не то же самое что и SSH-ключи аккаунта.
|
||||
settings.is_writable=Разрешить запись
|
||||
settings.is_writable_info=Может ли этот ключ быть использован для выполнения <strong>push</strong> в репозиторий? Ключи развёртывания всегда имеют доступ на pull.
|
||||
settings.no_deploy_keys=Вы не добавляли ключи развертывания.
|
||||
settings.title=Заголовок
|
||||
settings.deploy_key_content=Содержимое
|
||||
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_success=Ключ развёртки был успешно удалён.
|
||||
settings.branches=Ветки
|
||||
settings.protected_branch=Защита веток
|
||||
settings.protected_branch_can_push=Разрешить push?
|
||||
settings.protected_branch_can_push_yes=Вы можете выполнять push
|
||||
settings.protected_branch_can_push_no=Вы не можете выполнять push
|
||||
settings.branch_protection=Защита ветки <b>%s</b>
|
||||
settings.protect_this_branch=Защитить эту ветку
|
||||
settings.protect_this_branch_desc=Выключить принудительный push и защитить от удаления.
|
||||
settings.protect_whitelist_committers=Белый список тех, кто может делать push в эту ветку
|
||||
settings.protect_whitelist_committers_desc=Добавить пользователей или команды в белый список ветки. На них не будут распространяться обычные ограничения на push.
|
||||
settings.protect_whitelist_users=Пользователи, которые могут делать push в эту ветку:
|
||||
settings.protect_whitelist_search_users=Поиск пользователей…
|
||||
settings.protect_whitelist_teams=Команды, члены которых могут делать push в эту ветку:
|
||||
settings.protect_whitelist_search_teams=Поиск команд…
|
||||
settings.protect_merge_whitelist_committers=Ограничить право на принятие Pull Request'ов в эту ветку списком
|
||||
settings.protect_merge_whitelist_committers_desc=Вы можете добавлять пользователей или целые команды в "белый" список этой ветки. Только присутствующие в списке смогут принимать Pull Request'ы. В противном случае любой с правами на запись в репозиторий будет обладать такой возможностью.
|
||||
settings.protect_merge_whitelist_users=Пользователи с правом на принятие Pull Request'ов в эту ветку:
|
||||
settings.protect_merge_whitelist_teams=Команды, члены которых обладают правом на принятие Pull Request'ов в эту ветку:
|
||||
settings.add_protected_branch=Включить защиту
|
||||
settings.delete_protected_branch=Отключить защиту
|
||||
settings.update_protect_branch_success=Настройки защиты ветки '%s' были успешно изменены.
|
||||
settings.remove_protected_branch_success=Защита ветки '%s' была успешно отключена.
|
||||
settings.protected_branch_deletion=Отключение защиты ветки
|
||||
settings.protected_branch_deletion_desc=Любой пользователь с разрешениями на запись сможет выполнять push в эту ветку. Вы уверены?
|
||||
settings.default_branch_desc=Главная ветка является "базовой" для вашего репозитория, на которую по умолчанию направлены все Pull Request'ы и которая является лицом вашего репозитория. Первое, что увидит посетитель — это содержимое главной ветки. Выберите её из уже существующих:
|
||||
settings.choose_branch=Выберите ветку…
|
||||
settings.no_protected_branch=Нет защищённых веток.
|
||||
|
||||
diff.browse_source=Просмотр исходного кода
|
||||
diff.parent=Родитель
|
||||
|
|
@ -840,6 +1086,7 @@ diff.view_file=Просмотреть файл
|
|||
diff.file_suppressed=Разница между файлами не показана из-за своего большого размера
|
||||
diff.too_many_files=Некоторые файлы не были показаны из-за большого количества измененных файлов
|
||||
|
||||
releases.desc=Релизы позволяют организовать хранение готовых сборок проекта в строгом хронологически верном порядке.
|
||||
release.releases=Релизы
|
||||
release.new_release=Новый релиз
|
||||
release.draft=Черновик
|
||||
|
|
@ -848,17 +1095,27 @@ release.stable=Стабильный
|
|||
release.edit=Редактировать
|
||||
release.ahead=<strong>%d</strong> коммитов %s начиная с этого релиза
|
||||
release.source_code=Исходный код
|
||||
release.new_subheader=Публикация релизов поможет хранить чёткую историю развития вашего проекта.
|
||||
release.edit_subheader=Подробный журнал изменений может помочь пользователям понять, что было изменено в очередной версии.
|
||||
release.tag_name=Имя тега
|
||||
release.target=Цель
|
||||
release.tag_helper=Выберите существующий тег, или создайте новый.
|
||||
release.title=Заголовок
|
||||
release.content=Содержимое
|
||||
release.write=Редактирование
|
||||
release.preview=Предварительный просмотр
|
||||
release.loading=Загрузка…
|
||||
release.prerelease_desc=Это предварительный релиз
|
||||
release.prerelease_helper=Отдельно отметим, что этот релиз не готов к использованию в продакшене.
|
||||
release.cancel=Отменить
|
||||
release.publish=Опубликовать релиз
|
||||
release.save_draft=Сохранить черновик
|
||||
release.edit_release=Редактировать релиз
|
||||
release.delete_release=Удалить этот релиз
|
||||
release.deletion=Удаление релиза
|
||||
release.deletion_success=Релиз был удалён.
|
||||
release.tag_name_already_exist=Релиз с этим именем метки уже существует.
|
||||
release.tag_name_invalid=Имя тега является не допустимым.
|
||||
release.downloads=Загрузки
|
||||
|
||||
branch.name=Имя ветки
|
||||
|
|
@ -867,10 +1124,19 @@ branch.already_exists=Ветка с именем '%s' уже существуе
|
|||
branch.delete_head=Удалить
|
||||
branch.delete=Удалить ветку '%s'
|
||||
branch.delete_html=Удалить ветку
|
||||
branch.delete_desc=Удаление ветки <strong>НЕОБРАТИМО</strong>. Действие никак нельзя отменить.
|
||||
branch.deletion_success=Ветка %s удалена.
|
||||
branch.deletion_failed=Не удалось удалить ветку %s.
|
||||
branch.delete_branch_has_new_commits=%s нельзя удалить, поскольку после слияния были добавлены новые коммиты.
|
||||
branch.create_branch=Создать ветку <strong>%s</strong>
|
||||
branch.create_from=из '%s'
|
||||
branch.create_success=Ветка '%s' создана.
|
||||
branch.branch_already_exists=Ветка '%s' уже существует в репозитории.
|
||||
branch.branch_name_conflict=Имя ветки '%s' конфликтует с уже существующей веткой '%s'.
|
||||
branch.tag_collision=Ветка '%s' не может быть создана, так как уже существует тэг с таким именем.
|
||||
branch.deleted_by=Удалён %s
|
||||
branch.restore_success=Ветка '%s' восстановлена.
|
||||
branch.restore_failed=Не удалось восстановить ветку '%s'.
|
||||
|
||||
topic.manage_topics=Редактировать тематические метки
|
||||
topic.done=Сохранить
|
||||
|
|
@ -878,6 +1144,7 @@ topic.done=Сохранить
|
|||
[org]
|
||||
org_name_holder=Название организации
|
||||
org_full_name_holder=Полное название организации
|
||||
org_name_helper=Лучшие названия организаций коротки и запоминаемы.
|
||||
create_org=Создать организацию
|
||||
repo_updated=Обновлено
|
||||
people=Люди
|
||||
|
|
@ -889,9 +1156,13 @@ create_team=Создать команду
|
|||
org_desc=Описание
|
||||
team_name=Название команды
|
||||
team_desc=Описание
|
||||
team_desc_helper=Что это за команда?
|
||||
team_permission_desc=Разрешение
|
||||
team_unit_desc=Разрешить доступ к разделам репозитория
|
||||
|
||||
form.name_reserved=Наименование организации '%s' зарезервированно.
|
||||
form.name_pattern_not_allowed=Шаблон организации '%s' не допускается.
|
||||
form.create_org_not_allowed=Этому пользователю не разрешено создавать организацию.
|
||||
|
||||
settings=Настройки
|
||||
settings.options=Организация
|
||||
|
|
@ -900,8 +1171,11 @@ settings.website=Сайт
|
|||
settings.location=Местоположение
|
||||
settings.update_settings=Обновить настройки
|
||||
settings.update_setting_success=Настройки организации обновлены.
|
||||
settings.change_orgname_prompt=Это изменение изменит ссылки на организацию.
|
||||
settings.update_avatar_success=Аватар организации обновлен.
|
||||
settings.delete=Удалить организацию
|
||||
settings.delete_account=Удалить эту организацию
|
||||
settings.delete_prompt=Это действие <strong>БЕЗВОЗВРАТНО</strong> удалит эту организацию навсегда.
|
||||
settings.confirm_delete_account=Подтвердить удаление
|
||||
settings.delete_org_title=Удалить организацию
|
||||
settings.delete_org_desc=Эта организация будет безвозвратно удалена. Продолжить?
|
||||
|
|
@ -930,12 +1204,16 @@ teams.admin_access=Доступ администратора
|
|||
teams.admin_access_helper=Участники могут выполнять pull, push в командные репозитории и добавлять соавторов в команду.
|
||||
teams.no_desc=Эта группа не имеет описания
|
||||
teams.settings=Настройки
|
||||
teams.owners_permission_desc=Владельцы имеют полный доступ ко <strong>всем репозиториям</strong> и имеют <strong>права администратора</strong> организации.
|
||||
teams.members=Члены группы разработки
|
||||
teams.update_settings=Обновить настройки
|
||||
teams.delete_team=Удалить команду
|
||||
teams.add_team_member=Добавление члена группы разработки
|
||||
teams.delete_team_title=Удалить команду
|
||||
teams.delete_team_success=Команда удалена.
|
||||
teams.read_permission_desc=Эта команда предоставляет доступ на <strong>Чтение</strong>: члены могут просматривать и клонировать репозитории команды.
|
||||
teams.write_permission_desc=Эта команда предоставляет доступ на <strong>Запись</strong>: члены могут получать и выполнять push команды в репозитории.
|
||||
teams.admin_permission_desc=Эта команда дает <strong>административный</strong> доступ: участники могут читать, пушить и добавлять соавторов к ее репозиториям.
|
||||
teams.repositories=Репозитории группы разработки
|
||||
teams.search_repo_placeholder=Поиск репозитория…
|
||||
teams.add_team_repository=Добавить репозиторий группы разработки
|
||||
|
|
@ -944,8 +1222,10 @@ teams.add_nonexistent_repo=Вы добавляете в отсутствующи
|
|||
|
||||
[admin]
|
||||
dashboard=Панель
|
||||
users=Пользователи
|
||||
organizations=Организации
|
||||
repositories=Репозитории
|
||||
authentication=Авторизация
|
||||
config=Конфигурация
|
||||
notices=Системные уведомления
|
||||
monitor=Мониторинг
|
||||
|
|
@ -953,6 +1233,10 @@ first_page=Первая
|
|||
last_page=Последняя
|
||||
total=Всего: %d
|
||||
|
||||
dashboard.statistic=Статистика
|
||||
dashboard.operations=Операции
|
||||
dashboard.system_status=Статус системного монитора
|
||||
dashboard.statistic_info=В базе данных Gitea записано <b>%d</b> пользователей, <b>%d</b> организаций, <b>%d</b> публичных ключей, <b>%d</b> репозиториев, <b>%d</b> подписок на репозитории, <b>%d</b> добавлений в избранное, <b>%d</b> действий, <b>%d</b> доступов, <b>%d</b> задач, <b>%d</b> комментариев, <b>%d</b> социальных учетных записей, <b>%d</b> подписок на пользователей, <b>%d</b> зеркал, <b>%d</b> релизов, <b>%d</b> источников входа, <b>%d</b> веб-хуков, <b>%d</b> этапов, <b>%d</b> меток, <b>%d</b> задач хуков, <b>%d</b> команд, <b>%d</b> задач по обновлению, <b>%d</b> присоединенных файлов.
|
||||
dashboard.operation_name=Имя операции
|
||||
dashboard.operation_switch=Переключить
|
||||
dashboard.operation_run=Запуск
|
||||
|
|
@ -960,16 +1244,29 @@ dashboard.clean_unbind_oauth=Очистить список незавершён
|
|||
dashboard.clean_unbind_oauth_success=Все незавершённые связи OAuth были удалены.
|
||||
dashboard.delete_inactivate_accounts=Удалить все неактивированные учетные записи
|
||||
dashboard.delete_inactivate_accounts_success=Все неактивные учётные записи удалены.
|
||||
dashboard.delete_repo_archives=Удаление всех архивов репозиториев
|
||||
dashboard.delete_repo_archives_success=Все архивы репозиториев удалены.
|
||||
dashboard.delete_missing_repos=Удалить все записи о репозиториях с отсутствующими файлами Git
|
||||
dashboard.delete_missing_repos_success=Все записи о репозиториях с отсутствующими файлами Git удалены.
|
||||
dashboard.git_gc_repos=Выполнить сборку мусора для всех репозиториев
|
||||
dashboard.git_gc_repos_success=Сборка мусора выполнена для всех репозиториев.
|
||||
dashboard.resync_all_sshkeys=Перезаписать файл '.ssh/authorized_keys' для SSH ключей Gitea. Не требуется для встроенного SSH сервера.
|
||||
dashboard.resync_all_sshkeys_success=Все открытые ключи были перезаписаны.
|
||||
dashboard.resync_all_hooks=Повторная синхронизация хуков pre-receive, update и post-receive во всех репозиториях.
|
||||
dashboard.reinit_missing_repos=Переинициализировать все отсутствующие Git репозитории, для которых существуют записи
|
||||
dashboard.reinit_missing_repos_success=Все отсутствующие репозитории Git, для которых существуют записи были повторно инициализированы.
|
||||
dashboard.sync_external_users=Синхронизировать данные внешних пользователей
|
||||
dashboard.sync_external_users_started=Запущена синхронизация внешних пользователей.
|
||||
dashboard.git_fsck=Запустить проверку данных всех репозиториев (git fsck)
|
||||
dashboard.git_fsck_started=Проверка данных репозиториев запущена.
|
||||
dashboard.server_uptime=Время непрерывной работы сервера
|
||||
dashboard.current_goroutine=Текущее количество Goroutines
|
||||
dashboard.current_memory_usage=Текущее использование памяти
|
||||
dashboard.total_memory_allocated=Всего памяти выделено
|
||||
dashboard.memory_obtained=Памяти использовано
|
||||
dashboard.pointer_lookup_times=Запросов указателя
|
||||
dashboard.memory_allocate_times=Выделений памяти
|
||||
dashboard.memory_free_times=Освобождений памяти
|
||||
dashboard.current_heap_usage=Текущее использование кучи
|
||||
dashboard.heap_memory_obtained=Получено динамической памяти
|
||||
dashboard.heap_memory_idle=Не используется динамической памяти
|
||||
|
|
@ -992,14 +1289,37 @@ dashboard.total_gc_pause=Итоговая задержка GC
|
|||
dashboard.last_gc_pause=Последняя пауза сборщика мусора
|
||||
dashboard.gc_times=Количество сборок мусора
|
||||
|
||||
users.user_manage_panel=Панель управления пользователями
|
||||
users.new_account=Создать новый аккаунт
|
||||
users.name=Имя пользователя
|
||||
users.activated=Активирован
|
||||
users.admin=Администратор
|
||||
users.repos=Репозитории
|
||||
users.created=Создано
|
||||
users.last_login=Последний вход
|
||||
users.never_login=Никогда не входил
|
||||
users.send_register_notify=Отправить пользователю уведомление о регистрации
|
||||
users.new_success=Учетная запись '%s' создана.
|
||||
users.edit=Редактировать
|
||||
users.auth_source=Источник аутентификации
|
||||
users.local=Локальный
|
||||
users.auth_login_name=Логин для авторизации
|
||||
users.password_helper=Оставьте пустым, чтобы оставить без изменений.
|
||||
users.update_profile_success=Профиль учетной записи обновлен успешно.
|
||||
users.edit_account=Изменение учетной записи
|
||||
users.max_repo_creation=Ограничение максимального количества создаваемых репозиториев
|
||||
users.max_repo_creation_desc=(Установите -1 для использования стандартного глобального значения предела)
|
||||
users.is_activated=Эта учетная запись активирована
|
||||
users.prohibit_login=Этой учетной записи запрещен вход в систему
|
||||
users.is_admin=У этой учетной записи есть права администратора
|
||||
users.allow_git_hook=Эта учетная запись имеет разрешение на создание Git-хуков
|
||||
users.allow_import_local=Пользователь имеет право импортировать локальные репозитории
|
||||
users.allow_create_organization=Эта учетная запись имеет разрешения на создание организаций
|
||||
users.update_profile=Обновить профиль учетной записи
|
||||
users.delete_account=Удалить эту учетную запись
|
||||
users.still_own_repo=На вашем аккаунте все еще остается один или более репозиториев, сначала вам нужно удалить или передать их.
|
||||
users.still_has_org=Эта учетная запись все еще является членом одной или более организаций. Для продолжения, покиньте или удалите организации.
|
||||
users.deletion_success=Учетная запись успешно удалена.
|
||||
|
||||
orgs.org_manage_panel=Управление организациями
|
||||
orgs.name=Название
|
||||
|
|
@ -1013,12 +1333,16 @@ repos.name=Название
|
|||
repos.private=Личный
|
||||
repos.watches=Следят
|
||||
repos.stars=Звезды
|
||||
repos.forks=Форки
|
||||
repos.issues=Задачи
|
||||
repos.size=Размер
|
||||
|
||||
auths.auth_manage_panel=Управление аутентификацией
|
||||
auths.new=Добавить новый источник
|
||||
auths.name=Имя
|
||||
auths.type=Тип
|
||||
auths.enabled=Включено
|
||||
auths.syncenabled=Включить синхронизацию пользователей
|
||||
auths.updated=Обновлено
|
||||
auths.auth_type=Тип аутентификации
|
||||
auths.auth_name=Имя аутентификации
|
||||
|
|
@ -1030,6 +1354,7 @@ auths.bind_dn=Bind DN
|
|||
auths.bind_password=Привязать пароль
|
||||
auths.user_base=База для поиска пользователя
|
||||
auths.user_dn=DN пользователя
|
||||
auths.attribute_username_placeholder=Оставьте пустым, чтобы использовать имя пользователя для регистрации.
|
||||
auths.use_paged_search=Использовать постраничный поиск
|
||||
auths.search_page_size=Размер страницы
|
||||
auths.filter=Фильтр пользователя
|
||||
|
|
@ -1060,27 +1385,39 @@ auths.tip.facebook=Создайте новое приложение на https:/
|
|||
auths.tip.github=Добавьте OAuth приложение на https://github.com/settings/applications/new
|
||||
auths.tip.gitlab=Добавьте новое приложение на https://gitlab.com/profile/applications
|
||||
auths.tip.openid_connect=Используйте OpenID Connect Discovery URL (<server>/.well-known/openid-configuration) для автоматической настройки входа OAuth
|
||||
auths.edit=Обновить параметры аутентификации
|
||||
auths.activated=Эта аутентификация активирована
|
||||
auths.new_success=Метод аутентификации '%s' был добавлен.
|
||||
auths.update_success=Параметры аутентификации обновлены.
|
||||
auths.delete=Удалить этот источник аутентификации
|
||||
auths.delete_auth_title=Удалить источник аутентификации
|
||||
auths.delete_auth_desc=Этот источник аутентификации будет удален, вы уверены, что вы хотите продолжить?
|
||||
auths.still_in_used=Эта проверка подлинности до сих пор используется некоторыми пользователями, удалите или преобразуйте этих пользователей в другой тип входа в систему.
|
||||
auths.deletion_success=Канал аутентификации успешно удален!
|
||||
auths.login_source_exist=Источник входа '%s' уже существует.
|
||||
|
||||
config.server_config=Конфигурация сервера
|
||||
config.app_name=Название сайта
|
||||
config.app_ver=Версия Gitea
|
||||
config.app_url=Базовый URL-адрес Gitea
|
||||
config.custom_conf=Путь к файлу конфигурации
|
||||
config.domain=Домен SSH сервера
|
||||
config.offline_mode=Локальный режим
|
||||
config.disable_router_log=Отключение журнала маршрутизатора
|
||||
config.run_user=Запуск от имени пользователя
|
||||
config.run_mode=Режим выполнения
|
||||
config.git_version=Версия Git
|
||||
config.repo_root_path=Путь до папки репозиториев
|
||||
config.lfs_root_path=Корневой путь LFS
|
||||
config.static_file_root_path=Путь до папки со статичными файлами
|
||||
config.log_file_root_path=Путь к журналу
|
||||
config.script_type=Тип скрипта
|
||||
config.reverse_auth_user=Имя пользователя для авторизации на reverse proxy
|
||||
|
||||
config.ssh_config=Конфигурация SSH
|
||||
config.ssh_enabled=SSH включён
|
||||
config.ssh_start_builtin_server=Использовать встроенный сервер
|
||||
config.ssh_domain=Домен
|
||||
config.ssh_port=Порт
|
||||
config.ssh_listen_port=Прослушиваемый порт
|
||||
config.ssh_root_path=Корневой путь
|
||||
|
|
@ -1093,27 +1430,38 @@ config.db_config=Конфигурация базы данных
|
|||
config.db_type=Тип
|
||||
config.db_host=Сервер
|
||||
config.db_name=Имя
|
||||
config.db_user=Пользователь
|
||||
config.db_ssl_mode=SSL
|
||||
config.db_ssl_mode_helper=(только для "postgres")
|
||||
config.db_path=Путь
|
||||
config.db_path_helper=(для "sqlite3" и "tidb")
|
||||
|
||||
config.service_config=Сервисная конфигурация
|
||||
config.register_email_confirm=Требуется подтверждение по электронной почте
|
||||
config.disable_register=Отключить самостоятельную регистрацию
|
||||
config.allow_only_external_registration=Включить регистрацию только через сторонние сервисы
|
||||
config.enable_openid_signup=Включить cамостоятельную регистрацию OpenID
|
||||
config.enable_openid_signin=Включение входа через OpenID
|
||||
config.show_registration_button=Показать кнопку регистрации
|
||||
config.require_sign_in_view=Для просмотра необходима авторизация
|
||||
config.mail_notify=Почтовые уведомления
|
||||
config.disable_key_size_check=Отключить проверку на минимальный размер ключа
|
||||
config.enable_captcha=Включить CAPTCHA
|
||||
config.active_code_lives=Время жизни кода для активации
|
||||
config.reset_password_code_lives=Время жизни кода на сброс пароля
|
||||
config.default_keep_email_private=Скрывать адреса электронной почты по умолчанию
|
||||
config.default_allow_create_organization=Разрешить создание организаций по умолчанию
|
||||
config.enable_timetracking=Включить отслеживание времени
|
||||
config.default_enable_timetracking=Включить отслеживание времени по умолчанию
|
||||
config.default_allow_only_contributors_to_track_time=Учитывать только участников разработки в подсчёте времени
|
||||
config.no_reply_address=No-reply адрес
|
||||
|
||||
config.webhook_config=Конфигурация Webhooks
|
||||
config.queue_length=Длина очереди
|
||||
config.deliver_timeout=Задержка доставки
|
||||
config.skip_tls_verify=Пропустить проверку TLS
|
||||
|
||||
config.mailer_config=Настройки почты
|
||||
config.mailer_enabled=Почта включена
|
||||
config.mailer_disable_helo=Отключить HELO
|
||||
config.mailer_name=Имя
|
||||
|
|
@ -1121,6 +1469,10 @@ config.mailer_host=Сервер
|
|||
config.mailer_user=Пользователь
|
||||
config.mailer_use_sendmail=Использовать Sendmail
|
||||
config.mailer_sendmail_path=Путь к Sendmail
|
||||
config.mailer_sendmail_args=Дополнительные аргументы для Sendmail
|
||||
config.send_test_mail=Отправить тестовое письмо
|
||||
config.test_mail_failed=Не удалось отправить тестовое письмо на «%s»: %v
|
||||
config.test_mail_sent=Тестовое письмо было отправлено «%s».
|
||||
|
||||
config.oauth_config=Конфигурация OAuth
|
||||
config.oauth_enabled=OAuth включен
|
||||
|
|
@ -1140,6 +1492,7 @@ config.session_life_time=Время жизни сессии
|
|||
config.https_only=Только HTTPS
|
||||
config.cookie_life_time=Время жизни файла cookie
|
||||
|
||||
config.picture_config=Настройка изображения
|
||||
config.picture_service=Сервис изображений
|
||||
config.disable_gravatar=Отключить Gravatar
|
||||
config.enable_federated_avatar=Включить внешние аватары
|
||||
|
|
@ -1164,6 +1517,7 @@ monitor.name=Название
|
|||
monitor.schedule=Расписание
|
||||
monitor.next=Следующий раз
|
||||
monitor.previous=Предыдущий раз
|
||||
monitor.execute_times=Количество выполнений
|
||||
monitor.process=Запущенные процессы
|
||||
monitor.desc=Описание
|
||||
monitor.start=Время начала
|
||||
|
|
@ -1233,6 +1587,8 @@ remove_file=Удалить файл
|
|||
notifications=Уведомления
|
||||
unread=Непрочитанные
|
||||
read=Прочитанные
|
||||
no_unread=У вас нет непрочитанных уведомлений.
|
||||
no_read=У вас нет прочитанных уведомлений.
|
||||
pin=Прикрепить уведомление
|
||||
mark_as_read=Отметить как прочитанное
|
||||
mark_as_unread=Пометить как непрочитанное
|
||||
|
|
@ -1241,8 +1597,10 @@ mark_all_as_read=Пометить все как прочитанные
|
|||
[gpg]
|
||||
error.extract_sign=Не удалось извлечь подпись
|
||||
error.generate_hash=Не удается создать хэш коммита
|
||||
error.no_committer_account=Аккаунт пользователя с таким Email не найден
|
||||
error.no_gpg_keys_found=Не найден GPG ключ соответствующий данной подписи
|
||||
error.not_signed_commit=Неподписанный коммит
|
||||
error.failed_retrieval_gpg_keys=Не удалось получить соответствующий GPG ключ пользователя
|
||||
|
||||
[units]
|
||||
error.unit_not_allowed=У вас нет доступа к этому разделу репозитория.
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ twofa=Двофакторна авторизація
|
|||
twofa_scratch=Двофакторний одноразовий пароль
|
||||
passcode=Код доступу
|
||||
|
||||
u2f_insert_key=Вставте ключ безпеки
|
||||
u2f_reload=Оновити
|
||||
|
||||
repository=Репозиторій
|
||||
|
|
@ -292,6 +293,7 @@ twofa=Двофакторна авторизація
|
|||
account_link=Прив'язані облікові записи
|
||||
organization=Організації
|
||||
uid=Ідентифікатор Uid
|
||||
u2f=Ключі безпеки
|
||||
|
||||
public_profile=Загальнодоступний профіль
|
||||
profile_desc=Ваша адреса електронної пошти використовуватиметься для сповіщення та інших операцій.
|
||||
|
|
@ -463,7 +465,7 @@ pulls=Запити на злиття
|
|||
labels=Мітки
|
||||
milestones=Етап
|
||||
commits=Коміти
|
||||
commit=Змина
|
||||
commit=Коміт
|
||||
releases=Релізи
|
||||
file_raw=Неформатований
|
||||
file_history=Історія
|
||||
|
|
@ -560,6 +562,7 @@ issues.filter_sort.recentupdate=Нещодавно оновлено
|
|||
issues.filter_sort.leastupdate=Найдавніше оновлені
|
||||
issues.filter_sort.mostcomment=Найбільш коментовані
|
||||
issues.filter_sort.leastcomment=Найменш коментовані
|
||||
issues.filter_sort.mostforks=Найбільше форків
|
||||
issues.action_open=Відкрити
|
||||
issues.action_close=Закрити
|
||||
issues.action_label=Мітка
|
||||
|
|
@ -756,6 +759,7 @@ settings.use_internal_wiki=Використовувати вбудовані В
|
|||
settings.use_external_wiki=Використовувати зовнішні Вікі
|
||||
settings.external_wiki_url=URL зовнішньої вікі
|
||||
settings.issues_desc=Увімкнути відстеження проблем в репозиторію
|
||||
settings.use_internal_issue_tracker=Використовувати вбудовану систему відстеження проблем
|
||||
settings.external_tracker_url=URL зовнішньої системи відстеження проблем
|
||||
settings.tracker_url_format=Формат URL зовнішнього трекера задач
|
||||
settings.tracker_issue_style.numeric=Цифровий
|
||||
|
|
@ -986,12 +990,14 @@ last_page=Остання
|
|||
total=Разом: %d
|
||||
|
||||
dashboard.statistic=Підсумок
|
||||
dashboard.operations=Технічне обслуговування
|
||||
dashboard.system_status=Статус системи
|
||||
dashboard.operation_name=Назва операції
|
||||
dashboard.operation_switch=Перемкнути
|
||||
dashboard.operation_run=Запустити
|
||||
dashboard.delete_inactivate_accounts=Видалити всі неактивні облікові записи
|
||||
dashboard.delete_inactivate_accounts_success=Усі неактивні облікові записи успішно видалено.
|
||||
dashboard.delete_repo_archives=Видалити всі архіви репозиторіїв
|
||||
dashboard.git_gc_repos_success=Всі репозиторії завершили збирання сміття.
|
||||
dashboard.server_uptime=Uptime серверу
|
||||
dashboard.current_memory_usage=Поточне використання пам'яті
|
||||
|
|
|
|||
59
public/swagger.v1.json
vendored
59
public/swagger.v1.json
vendored
|
|
@ -1028,7 +1028,9 @@
|
|||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {}
|
||||
"200": {
|
||||
"description": "success"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -1338,7 +1340,9 @@
|
|||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {}
|
||||
"200": {
|
||||
"description": "success"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -3261,7 +3265,9 @@
|
|||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {}
|
||||
"200": {
|
||||
"description": "success"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -4999,7 +5005,8 @@
|
|||
"type": "string",
|
||||
"description": "username of user",
|
||||
"name": "username",
|
||||
"in": "path"
|
||||
"in": "path",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -5273,7 +5280,8 @@
|
|||
"type": "string",
|
||||
"description": "username of the user",
|
||||
"name": "username",
|
||||
"in": "path"
|
||||
"in": "path",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
@ -7376,11 +7384,13 @@
|
|||
"description": "AccessTokenList represents a list of API access token."
|
||||
},
|
||||
"Attachment": {
|
||||
"description": "Attachment",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Attachment"
|
||||
}
|
||||
},
|
||||
"AttachmentList": {
|
||||
"description": "AttachmentList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7389,11 +7399,13 @@
|
|||
}
|
||||
},
|
||||
"Branch": {
|
||||
"description": "Branch",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Branch"
|
||||
}
|
||||
},
|
||||
"BranchList": {
|
||||
"description": "BranchList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7402,11 +7414,13 @@
|
|||
}
|
||||
},
|
||||
"Comment": {
|
||||
"description": "Comment",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Comment"
|
||||
}
|
||||
},
|
||||
"CommentList": {
|
||||
"description": "CommentList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7415,11 +7429,13 @@
|
|||
}
|
||||
},
|
||||
"DeployKey": {
|
||||
"description": "DeployKey",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/DeployKey"
|
||||
}
|
||||
},
|
||||
"DeployKeyList": {
|
||||
"description": "DeployKeyList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7428,6 +7444,7 @@
|
|||
}
|
||||
},
|
||||
"EmailList": {
|
||||
"description": "EmailList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7436,11 +7453,13 @@
|
|||
}
|
||||
},
|
||||
"GPGKey": {
|
||||
"description": "GPGKey",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/GPGKey"
|
||||
}
|
||||
},
|
||||
"GPGKeyList": {
|
||||
"description": "GPGKeyList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7449,6 +7468,7 @@
|
|||
}
|
||||
},
|
||||
"Hook": {
|
||||
"description": "Hook",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7457,6 +7477,7 @@
|
|||
}
|
||||
},
|
||||
"HookList": {
|
||||
"description": "HookList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7465,11 +7486,13 @@
|
|||
}
|
||||
},
|
||||
"Issue": {
|
||||
"description": "Issue",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Issue"
|
||||
}
|
||||
},
|
||||
"IssueList": {
|
||||
"description": "IssueList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7478,11 +7501,13 @@
|
|||
}
|
||||
},
|
||||
"Label": {
|
||||
"description": "Label",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Label"
|
||||
}
|
||||
},
|
||||
"LabelList": {
|
||||
"description": "LabelList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7494,11 +7519,13 @@
|
|||
"description": "MarkdownRender is a rendered markdown document"
|
||||
},
|
||||
"Milestone": {
|
||||
"description": "Milestone",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Milestone"
|
||||
}
|
||||
},
|
||||
"MilestoneList": {
|
||||
"description": "MilestoneList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7507,11 +7534,13 @@
|
|||
}
|
||||
},
|
||||
"Organization": {
|
||||
"description": "Organization",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Organization"
|
||||
}
|
||||
},
|
||||
"OrganizationList": {
|
||||
"description": "OrganizationList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7520,11 +7549,13 @@
|
|||
}
|
||||
},
|
||||
"PublicKey": {
|
||||
"description": "PublicKey",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/PublicKey"
|
||||
}
|
||||
},
|
||||
"PublicKeyList": {
|
||||
"description": "PublicKeyList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7533,11 +7564,13 @@
|
|||
}
|
||||
},
|
||||
"PullRequest": {
|
||||
"description": "PullRequest",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/PullRequest"
|
||||
}
|
||||
},
|
||||
"PullRequestList": {
|
||||
"description": "PullRequestList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7546,11 +7579,13 @@
|
|||
}
|
||||
},
|
||||
"Release": {
|
||||
"description": "Release",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Release"
|
||||
}
|
||||
},
|
||||
"ReleaseList": {
|
||||
"description": "ReleaseList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7559,11 +7594,13 @@
|
|||
}
|
||||
},
|
||||
"Repository": {
|
||||
"description": "Repository",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Repository"
|
||||
}
|
||||
},
|
||||
"RepositoryList": {
|
||||
"description": "RepositoryList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7572,6 +7609,7 @@
|
|||
}
|
||||
},
|
||||
"SearchResults": {
|
||||
"description": "SearchResults",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/SearchResults"
|
||||
},
|
||||
|
|
@ -7580,16 +7618,19 @@
|
|||
}
|
||||
},
|
||||
"ServerVersion": {
|
||||
"description": "ServerVersion",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/ServerVersion"
|
||||
}
|
||||
},
|
||||
"Status": {
|
||||
"description": "Status",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Status"
|
||||
}
|
||||
},
|
||||
"StatusList": {
|
||||
"description": "StatusList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7598,11 +7639,13 @@
|
|||
}
|
||||
},
|
||||
"Team": {
|
||||
"description": "Team",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Team"
|
||||
}
|
||||
},
|
||||
"TeamList": {
|
||||
"description": "TeamList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7611,11 +7654,13 @@
|
|||
}
|
||||
},
|
||||
"TrackedTime": {
|
||||
"description": "TrackedTime",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/TrackedTime"
|
||||
}
|
||||
},
|
||||
"TrackedTimeList": {
|
||||
"description": "TrackedTimeList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7624,11 +7669,13 @@
|
|||
}
|
||||
},
|
||||
"User": {
|
||||
"description": "User",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/User"
|
||||
}
|
||||
},
|
||||
"UserList": {
|
||||
"description": "UserList",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
|
@ -7637,6 +7684,7 @@
|
|||
}
|
||||
},
|
||||
"WatchInfo": {
|
||||
"description": "WatchInfo",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/WatchInfo"
|
||||
}
|
||||
|
|
@ -7670,6 +7718,7 @@
|
|||
"description": "APINotFound is a not found empty response"
|
||||
},
|
||||
"parameterBodies": {
|
||||
"description": "parameterBodies",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/EditAttachmentOptions"
|
||||
},
|
||||
|
|
|
|||
8
public/vendor/VERSIONS
vendored
8
public/vendor/VERSIONS
vendored
|
|
@ -15,10 +15,7 @@ File(s): /vendor/plugins/clipboard/clipboard.min.js
|
|||
Version: 1.5.9
|
||||
|
||||
File(s): /vendor/plugins/gitgraph/gitgraph.js
|
||||
Version: 9b492e8bf1ddf7908a4997b8f83fa38a809a9da3
|
||||
|
||||
File(s): /vendor/plugins/autolink/autolink.js
|
||||
Version: 741f66f
|
||||
Version: 745f604212e2abfe2f0a59169ea530857b46625c
|
||||
|
||||
File(s): /vendor/plugins/vue/vue.min.js
|
||||
Version: 2.1.10
|
||||
|
|
@ -50,6 +47,9 @@ Version: 1.10.1
|
|||
File(s): /vendor/plugins/pdfjs/
|
||||
Version: 1.4.20
|
||||
|
||||
File(s): /vendor/plugins/u2f/
|
||||
Version: 1.0.8
|
||||
|
||||
File(s): /vendor/assets/font-awesome/fonts/
|
||||
Version: 4.6.0
|
||||
|
||||
|
|
|
|||
5
public/vendor/librejs.html
vendored
5
public/vendor/librejs.html
vendored
|
|
@ -45,11 +45,6 @@
|
|||
<td><a href="https://github.com/bluef/gitgraph.js/blob/master/LICENSE">BSD 3-Clause</a></td>
|
||||
<td><a href="https://github.com/bluef/gitgraph.js">gitgraph.js-latest</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/vendor/plugins/autolink/autolink.js">autolink.min.js</a></td>
|
||||
<td><a href="https://github.com/egoist/autolink.js/blob/master/LICENSE">Expat</a></td>
|
||||
<td><a href="https://github.com/egoist/autolink.js">autolink.js-latest</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/vendor/plugins/vue/vue.min.js">vue.min.js</a></td>
|
||||
<td><a href="https://github.com/vuejs/vue/blob/dev/LICENSE">Expat</a></td>
|
||||
|
|
|
|||
71
public/vendor/plugins/gitgraph/gitgraph.js
vendored
71
public/vendor/plugins/gitgraph/gitgraph.js
vendored
|
|
@ -126,7 +126,20 @@ var gitGraph = function (canvas, rawGraphList, config) {
|
|||
!(row[i - 2] && row[i] === "_" && row[i - 2] === "|")) {}
|
||||
|
||||
return i;
|
||||
}
|
||||
};
|
||||
|
||||
var findLineBreak = function (row) {
|
||||
if (!row) {
|
||||
return -1
|
||||
}
|
||||
|
||||
var i = row.length;
|
||||
|
||||
while (i-- &&
|
||||
!(row[i - 1] && row[i - 2] && row[i] === " " && row[i - 1] === "|" && row[i - 2] === "_")) {}
|
||||
|
||||
return i;
|
||||
};
|
||||
|
||||
var genNewFlow = function () {
|
||||
var newId;
|
||||
|
|
@ -138,21 +151,21 @@ var gitGraph = function (canvas, rawGraphList, config) {
|
|||
return {id:newId, color:"#" + newId};
|
||||
};
|
||||
|
||||
//draw method
|
||||
var drawLineRight = function (x, y, color) {
|
||||
//Draw methods
|
||||
var drawLine = function (moveX, moveY, lineX, lineY, color) {
|
||||
ctx.strokeStyle = color;
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(x, y + config.unitSize / 2);
|
||||
ctx.lineTo(x + config.unitSize, y + config.unitSize / 2);
|
||||
ctx.moveTo(moveX, moveY);
|
||||
ctx.lineTo(lineX, lineY);
|
||||
ctx.stroke();
|
||||
};
|
||||
|
||||
var drawLineRight = function (x, y, color) {
|
||||
drawLine(x, y + config.unitSize / 2, x + config.unitSize, y + config.unitSize / 2, color);
|
||||
};
|
||||
|
||||
var drawLineUp = function (x, y, color) {
|
||||
ctx.strokeStyle = color;
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(x, y + config.unitSize / 2);
|
||||
ctx.lineTo(x, y - config.unitSize / 2);
|
||||
ctx.stroke();
|
||||
drawLine(x, y + config.unitSize / 2, x, y - config.unitSize / 2, color);
|
||||
};
|
||||
|
||||
var drawNode = function (x, y, color) {
|
||||
|
|
@ -166,37 +179,28 @@ var gitGraph = function (canvas, rawGraphList, config) {
|
|||
};
|
||||
|
||||
var drawLineIn = function (x, y, color) {
|
||||
ctx.strokeStyle = color;
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(x + config.unitSize, y + config.unitSize / 2);
|
||||
ctx.lineTo(x, y - config.unitSize / 2);
|
||||
ctx.stroke();
|
||||
drawLine(x + config.unitSize, y + config.unitSize / 2, x, y - config.unitSize / 2, color);
|
||||
};
|
||||
|
||||
var drawLineOut = function (x, y, color) {
|
||||
ctx.strokeStyle = color;
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(x, y + config.unitSize / 2);
|
||||
ctx.lineTo(x + config.unitSize, y - config.unitSize / 2);
|
||||
ctx.stroke();
|
||||
drawLine(x, y + config.unitSize / 2, x + config.unitSize, y - config.unitSize / 2, color);
|
||||
};
|
||||
|
||||
var draw = function (graphList) {
|
||||
var colomn, colomnIndex, prevColomn, condenseIndex;
|
||||
var colomn, colomnIndex, prevColomn, condenseIndex, breakIndex = -1;
|
||||
var x, y;
|
||||
var color;
|
||||
var nodePos, outPos;
|
||||
var nodePos;
|
||||
var tempFlow;
|
||||
var prevRowLength = 0;
|
||||
var flowSwapPos = -1;
|
||||
var lastLinePos;
|
||||
var i, k, l;
|
||||
var i, l;
|
||||
var condenseCurrentLength, condensePrevLength = 0, condenseNextLength = 0;
|
||||
|
||||
var inlineIntersect = false;
|
||||
|
||||
//initiate for first row
|
||||
//initiate color array for first row
|
||||
for (i = 0, l = graphList[0].length; i < l; i++) {
|
||||
if (graphList[0][i] !== "_" && graphList[0][i] !== " ") {
|
||||
flows.push(genNewFlow());
|
||||
|
|
@ -275,6 +279,7 @@ var gitGraph = function (canvas, rawGraphList, config) {
|
|||
colomnIndex = 0; //reset index
|
||||
condenseIndex = 0;
|
||||
condensePrevLength = 0;
|
||||
breakIndex = -1; //reset break index
|
||||
while (colomnIndex < currentRow.length) {
|
||||
colomn = currentRow[colomnIndex];
|
||||
|
||||
|
|
@ -282,6 +287,18 @@ var gitGraph = function (canvas, rawGraphList, config) {
|
|||
++condensePrevLength;
|
||||
}
|
||||
|
||||
//check and fix line break in next row
|
||||
if (colomn === "/" && currentRow[colomnIndex - 1] && currentRow[colomnIndex - 1] === "|") {
|
||||
if ((breakIndex = findLineBreak(nextRow)) !== -1) {
|
||||
nextRow.splice(breakIndex, 1);
|
||||
}
|
||||
}
|
||||
//if line break found replace all '/' with '|' after breakIndex in previous row
|
||||
if (breakIndex !== - 1 && colomn === "/" && colomnIndex > breakIndex) {
|
||||
currentRow[colomnIndex] = "|";
|
||||
colomn = "|";
|
||||
}
|
||||
|
||||
if (colomn === " " &&
|
||||
currentRow[colomnIndex + 1] &&
|
||||
currentRow[colomnIndex + 1] === "_" &&
|
||||
|
|
@ -294,7 +311,7 @@ var gitGraph = function (canvas, rawGraphList, config) {
|
|||
colomn = "/";
|
||||
}
|
||||
|
||||
//create new flow only when no intersetc happened
|
||||
//create new flow only when no intersect happened
|
||||
if (flowSwapPos === -1 &&
|
||||
colomn === "/" &&
|
||||
currentRow[colomnIndex - 1] &&
|
||||
|
|
@ -415,4 +432,4 @@ var gitGraph = function (canvas, rawGraphList, config) {
|
|||
init();
|
||||
draw(graphList);
|
||||
};
|
||||
// @end-license
|
||||
// @end-license
|
||||
|
|
@ -51,6 +51,7 @@ func ListUserOrgs(ctx *context.APIContext) {
|
|||
// in: path
|
||||
// description: username of user
|
||||
// type: string
|
||||
// required: true
|
||||
// responses:
|
||||
// "200":
|
||||
// "$ref": "#/responses/OrganizationList"
|
||||
|
|
|
|||
|
|
@ -36,7 +36,8 @@ func GetRawFile(ctx *context.APIContext) {
|
|||
// type: string
|
||||
// required: true
|
||||
// responses:
|
||||
// 200:
|
||||
// 200:
|
||||
// description: success
|
||||
if !ctx.Repo.HasAccess() {
|
||||
ctx.Status(404)
|
||||
return
|
||||
|
|
@ -85,7 +86,8 @@ func GetArchive(ctx *context.APIContext) {
|
|||
// type: string
|
||||
// required: true
|
||||
// responses:
|
||||
// 200:
|
||||
// 200:
|
||||
// description: success
|
||||
repoPath := models.RepoPath(ctx.Params(":username"), ctx.Params(":reponame"))
|
||||
gitRepo, err := git.OpenRepository(repoPath)
|
||||
if err != nil {
|
||||
|
|
@ -121,7 +123,8 @@ func GetEditorconfig(ctx *context.APIContext) {
|
|||
// type: string
|
||||
// required: true
|
||||
// responses:
|
||||
// 200:
|
||||
// 200:
|
||||
// description: success
|
||||
ec, err := ctx.Repo.GetEditorconfig()
|
||||
if err != nil {
|
||||
if git.IsErrNotExist(err) {
|
||||
|
|
|
|||
|
|
@ -8,60 +8,70 @@ import (
|
|||
api "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
// Issue
|
||||
// swagger:response Issue
|
||||
type swaggerResponseIssue struct {
|
||||
// in:body
|
||||
Body api.Issue `json:"body"`
|
||||
}
|
||||
|
||||
// IssueList
|
||||
// swagger:response IssueList
|
||||
type swaggerResponseIssueList struct {
|
||||
// in:body
|
||||
Body []api.Issue `json:"body"`
|
||||
}
|
||||
|
||||
// Comment
|
||||
// swagger:response Comment
|
||||
type swaggerResponseComment struct {
|
||||
// in:body
|
||||
Body api.Comment `json:"body"`
|
||||
}
|
||||
|
||||
// CommentList
|
||||
// swagger:response CommentList
|
||||
type swaggerResponseCommentList struct {
|
||||
// in:body
|
||||
Body []api.Comment `json:"body"`
|
||||
}
|
||||
|
||||
// Label
|
||||
// swagger:response Label
|
||||
type swaggerResponseLabel struct {
|
||||
// in:body
|
||||
Body api.Label `json:"body"`
|
||||
}
|
||||
|
||||
// LabelList
|
||||
// swagger:response LabelList
|
||||
type swaggerResponseLabelList struct {
|
||||
// in:body
|
||||
Body []api.Label `json:"body"`
|
||||
}
|
||||
|
||||
// Milestone
|
||||
// swagger:response Milestone
|
||||
type swaggerResponseMilestone struct {
|
||||
// in:body
|
||||
Body api.Milestone `json:"body"`
|
||||
}
|
||||
|
||||
// MilestoneList
|
||||
// swagger:response MilestoneList
|
||||
type swaggerResponseMilestoneList struct {
|
||||
// in:body
|
||||
Body []api.Milestone `json:"body"`
|
||||
}
|
||||
|
||||
// TrackedTime
|
||||
// swagger:response TrackedTime
|
||||
type swaggerResponseTrackedTime struct {
|
||||
// in:body
|
||||
Body api.TrackedTime `json:"body"`
|
||||
}
|
||||
|
||||
// TrackedTimeList
|
||||
// swagger:response TrackedTimeList
|
||||
type swaggerResponseTrackedTimeList struct {
|
||||
// in:body
|
||||
|
|
|
|||
|
|
@ -8,36 +8,42 @@ import (
|
|||
api "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
// PublicKey
|
||||
// swagger:response PublicKey
|
||||
type swaggerResponsePublicKey struct {
|
||||
// in:body
|
||||
Body api.PublicKey `json:"body"`
|
||||
}
|
||||
|
||||
// PublicKeyList
|
||||
// swagger:response PublicKeyList
|
||||
type swaggerResponsePublicKeyList struct {
|
||||
// in:body
|
||||
Body []api.PublicKey `json:"body"`
|
||||
}
|
||||
|
||||
// GPGKey
|
||||
// swagger:response GPGKey
|
||||
type swaggerResponseGPGKey struct {
|
||||
// in:body
|
||||
Body api.GPGKey `json:"body"`
|
||||
}
|
||||
|
||||
// GPGKeyList
|
||||
// swagger:response GPGKeyList
|
||||
type swaggerResponseGPGKeyList struct {
|
||||
// in:body
|
||||
Body []api.GPGKey `json:"body"`
|
||||
}
|
||||
|
||||
// DeployKey
|
||||
// swagger:response DeployKey
|
||||
type swaggerResponseDeployKey struct {
|
||||
// in:body
|
||||
Body api.DeployKey `json:"body"`
|
||||
}
|
||||
|
||||
// DeployKeyList
|
||||
// swagger:response DeployKeyList
|
||||
type swaggerResponseDeployKeyList struct {
|
||||
// in:body
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import (
|
|||
api "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
// ServerVersion
|
||||
// swagger:response ServerVersion
|
||||
type swaggerResponseServerVersion struct {
|
||||
// in:body
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import (
|
|||
// not actually a response, just a hack to get go-swagger to include definitions
|
||||
// of the various XYZOption structs
|
||||
|
||||
// parameterBodies
|
||||
// swagger:response parameterBodies
|
||||
type swaggerParameterBodies struct {
|
||||
AddCollaboratorOption api.AddCollaboratorOption
|
||||
|
|
|
|||
|
|
@ -8,24 +8,28 @@ import (
|
|||
api "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
// Organization
|
||||
// swagger:response Organization
|
||||
type swaggerResponseOrganization struct {
|
||||
// in:body
|
||||
Body api.Organization `json:"body"`
|
||||
}
|
||||
|
||||
// OrganizationList
|
||||
// swagger:response OrganizationList
|
||||
type swaggerResponseOrganizationList struct {
|
||||
// in:body
|
||||
Body []api.Organization `json:"body"`
|
||||
}
|
||||
|
||||
// Team
|
||||
// swagger:response Team
|
||||
type swaggerResponseTeam struct {
|
||||
// in:body
|
||||
Body api.Team `json:"body"`
|
||||
}
|
||||
|
||||
// TeamList
|
||||
// swagger:response TeamList
|
||||
type swaggerResponseTeamList struct {
|
||||
// in:body
|
||||
|
|
|
|||
|
|
@ -8,95 +8,111 @@ import (
|
|||
api "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
// Repository
|
||||
// swagger:response Repository
|
||||
type swaggerResponseRepository struct {
|
||||
// in:body
|
||||
Body api.Repository `json:"body"`
|
||||
}
|
||||
|
||||
// RepositoryList
|
||||
// swagger:response RepositoryList
|
||||
type swaggerResponseRepositoryList struct {
|
||||
// in:body
|
||||
Body []api.Repository `json:"body"`
|
||||
}
|
||||
|
||||
// Branch
|
||||
// swagger:response Branch
|
||||
type swaggerResponseBranch struct {
|
||||
// in:body
|
||||
Body api.Branch `json:"body"`
|
||||
}
|
||||
|
||||
// BranchList
|
||||
// swagger:response BranchList
|
||||
type swaggerResponseBranchList struct {
|
||||
// in:body
|
||||
Body []api.Branch `json:"body"`
|
||||
}
|
||||
|
||||
// Hook
|
||||
// swagger:response Hook
|
||||
type swaggerResponseHook struct {
|
||||
// in:body
|
||||
Body []api.Branch `json:"body"`
|
||||
}
|
||||
|
||||
// HookList
|
||||
// swagger:response HookList
|
||||
type swaggerResponseHookList struct {
|
||||
// in:body
|
||||
Body []api.Branch `json:"body"`
|
||||
}
|
||||
|
||||
// Release
|
||||
// swagger:response Release
|
||||
type swaggerResponseRelease struct {
|
||||
// in:body
|
||||
Body api.Release `json:"body"`
|
||||
}
|
||||
|
||||
// ReleaseList
|
||||
// swagger:response ReleaseList
|
||||
type swaggerResponseReleaseList struct {
|
||||
// in:body
|
||||
Body []api.Release `json:"body"`
|
||||
}
|
||||
|
||||
// PullRequest
|
||||
// swagger:response PullRequest
|
||||
type swaggerResponsePullRequest struct {
|
||||
// in:body
|
||||
Body api.PullRequest `json:"body"`
|
||||
}
|
||||
|
||||
// PullRequestList
|
||||
// swagger:response PullRequestList
|
||||
type swaggerResponsePullRequestList struct {
|
||||
// in:body
|
||||
Body []api.PullRequest `json:"body"`
|
||||
}
|
||||
|
||||
// Status
|
||||
// swagger:response Status
|
||||
type swaggerResponseStatus struct {
|
||||
// in:body
|
||||
Body api.Status `json:"body"`
|
||||
}
|
||||
|
||||
// StatusList
|
||||
// swagger:response StatusList
|
||||
type swaggerResponseStatusList struct {
|
||||
// in:body
|
||||
Body []api.Status `json:"body"`
|
||||
}
|
||||
|
||||
// WatchInfo
|
||||
// swagger:response WatchInfo
|
||||
type swaggerResponseWatchInfo struct {
|
||||
// in:body
|
||||
Body api.WatchInfo `json:"body"`
|
||||
}
|
||||
|
||||
// SearchResults
|
||||
// swagger:response SearchResults
|
||||
type swaggerResponseSearchResults struct {
|
||||
Body api.SearchResults `json:"body"`
|
||||
}
|
||||
|
||||
// AttachmentList
|
||||
// swagger:response AttachmentList
|
||||
type swaggerResponseAttachmentList struct {
|
||||
//in: body
|
||||
Body []api.Attachment `json:"body"`
|
||||
}
|
||||
|
||||
// Attachment
|
||||
// swagger:response Attachment
|
||||
type swaggerResponseAttachment struct {
|
||||
//in: body
|
||||
|
|
|
|||
|
|
@ -8,18 +8,21 @@ import (
|
|||
api "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
// User
|
||||
// swagger:response User
|
||||
type swaggerResponseUser struct {
|
||||
// in:body
|
||||
Body api.User `json:"body"`
|
||||
}
|
||||
|
||||
// UserList
|
||||
// swagger:response UserList
|
||||
type swaggerResponseUserList struct {
|
||||
// in:body
|
||||
Body []api.User `json:"body"`
|
||||
}
|
||||
|
||||
// EmailList
|
||||
// swagger:response EmailList
|
||||
type swaggerResponseEmailList struct {
|
||||
// in:body
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ func GetWatchedRepos(ctx *context.APIContext) {
|
|||
// type: string
|
||||
// in: path
|
||||
// description: username of the user
|
||||
// required: true
|
||||
// responses:
|
||||
// "200":
|
||||
// "$ref": "#/responses/RepositoryList"
|
||||
|
|
|
|||
|
|
@ -223,6 +223,10 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
|
|||
|
||||
var output bytes.Buffer
|
||||
lines := strings.Split(fileContent, "\n")
|
||||
//Remove blank line at the end of file
|
||||
if len(lines) > 0 && lines[len(lines)-1] == "" {
|
||||
lines = lines[:len(lines)-1]
|
||||
}
|
||||
for index, line := range lines {
|
||||
line = gotemplate.HTMLEscapeString(line)
|
||||
if index != len(lines)-1 {
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@
|
|||
<div class="ui top secondary stackable main menu following bar light">
|
||||
<div class="ui container" id="navbar">
|
||||
<div class="item brand" style="justify-content: space-between;">
|
||||
<a href="{{AppSubUrl}}/" href="{{AppSubUrl}}/">
|
||||
<a href="{{AppSubUrl}}/">
|
||||
<img class="ui mini image" src="{{AppSubUrl}}/img/gitea-sm.png">
|
||||
</a>
|
||||
<div class="ui basic icon button mobile-only" id="navbar-expand-toggle">
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user