mirror of
https://github.com/gogs/gogs.git
synced 2026-02-28 09:10:57 +01:00
Compare commits
1547 Commits
v0.11.4
...
latest-com
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
df467d8ff1 | ||
|
|
36d56d5525 | ||
|
|
5f17b670b3 | ||
|
|
ea682c5bbc | ||
|
|
9001a68cdd | ||
|
|
295bfba729 | ||
|
|
ac21150a53 | ||
|
|
a000f0c7a6 | ||
|
|
a976fd2f9c | ||
|
|
441c64d7bd | ||
|
|
5c67d47512 | ||
|
|
94d6e53dc2 | ||
|
|
a1fa62b270 | ||
|
|
317e28b908 | ||
|
|
069d3535d6 | ||
|
|
81ee883644 | ||
|
|
400ae7bd28 | ||
|
|
630ae0b3b0 | ||
|
|
3c358ede6d | ||
|
|
48500aa2b0 | ||
|
|
785157ba1f | ||
|
|
1c8016a27b | ||
|
|
00c36d8d8a | ||
|
|
3747cd9058 | ||
|
|
08e7cfd76c | ||
|
|
9dd3e58f7b | ||
|
|
edc1478f6b | ||
|
|
bb86d12c36 | ||
|
|
bf17cc6c69 | ||
|
|
6d56105f8f | ||
|
|
ed5d02e036 | ||
|
|
5874791a57 | ||
|
|
17ad3d3425 | ||
|
|
9b2a967e45 | ||
|
|
e80635a449 | ||
|
|
47bccf292d | ||
|
|
38def73489 | ||
|
|
6cf6422b88 | ||
|
|
8d8d66ec1d | ||
|
|
7ea2c4093f | ||
|
|
7ebfb202e4 | ||
|
|
7b8c560f15 | ||
|
|
a636dcf678 | ||
|
|
3dcb74be39 | ||
|
|
7ad425025e | ||
|
|
85abee4b9b | ||
|
|
997c3c5eab | ||
|
|
a5ddb2665e | ||
|
|
b68e6886c6 | ||
|
|
ac7ba9c8a7 | ||
|
|
dd862ee058 | ||
|
|
f94042ce6f | ||
|
|
628216d588 | ||
|
|
7306b955a9 | ||
|
|
fc6d1e2055 | ||
|
|
3b01892d85 | ||
|
|
7b7e38c880 | ||
|
|
bb68c0a042 | ||
|
|
68271e6af0 | ||
|
|
4f5b00f8c4 | ||
|
|
5d3ffd132b | ||
|
|
ee65aa89ca | ||
|
|
a1a97de76f | ||
|
|
9963268267 | ||
|
|
49a45290ae | ||
|
|
3cc8e7aa6d | ||
|
|
9f1499f3ab | ||
|
|
77dba1b5ea | ||
|
|
f70f29fdb0 | ||
|
|
ed6109d35d | ||
|
|
54e08ba678 | ||
|
|
87c8faaf08 | ||
|
|
1b226ca48d | ||
|
|
e3bb4165dc | ||
|
|
df3d945a2c | ||
|
|
ae41bab5f2 | ||
|
|
2316b09eaf | ||
|
|
3477bbac0e | ||
|
|
bb3cab921b | ||
|
|
1cdeef2ce8 | ||
|
|
a7bc1637db | ||
|
|
f1102a7a7c | ||
|
|
26ef07f60d | ||
|
|
ca59e76a53 | ||
|
|
27f1250d00 | ||
|
|
560f92ec5f | ||
|
|
1bbc36149a | ||
|
|
4ee706b2bf | ||
|
|
ae59787ff5 | ||
|
|
389ec54b2c | ||
|
|
5544212adb | ||
|
|
6e1e4cb848 | ||
|
|
8e08450182 | ||
|
|
beeeb64969 | ||
|
|
3ef71a43d9 | ||
|
|
e44284fada | ||
|
|
b7010084b7 | ||
|
|
b8ab712819 | ||
|
|
59e9fa191b | ||
|
|
553707f3fd | ||
|
|
b6030ba713 | ||
|
|
e68949dd13 | ||
|
|
f813c17565 | ||
|
|
5e7c599755 | ||
|
|
2c88cd4d9f | ||
|
|
04cc48339f | ||
|
|
3666718ec5 | ||
|
|
4cc83c498b | ||
|
|
332c0895e6 | ||
|
|
16f466d1c1 | ||
|
|
5e3f45e7f5 | ||
|
|
994b769d9d | ||
|
|
3488e22a40 | ||
|
|
d0d4de70ca | ||
|
|
79cc921892 | ||
|
|
1347c7802f | ||
|
|
89f0f86c7e | ||
|
|
6a6364bb5d | ||
|
|
35c047dc9d | ||
|
|
e4923af32d | ||
|
|
0533fb7744 | ||
|
|
28810f7db7 | ||
|
|
cfe38e0a08 | ||
|
|
110da379c1 | ||
|
|
37962fcc0b | ||
|
|
7265a7cd26 | ||
|
|
521fbe34f6 | ||
|
|
1375bc401a | ||
|
|
28f83626d4 | ||
|
|
dcf8d9340e | ||
|
|
76b5d75d79 | ||
|
|
454175ece2 | ||
|
|
d940e692ec | ||
|
|
7fc19d094c | ||
|
|
4e3bf27fe2 | ||
|
|
16b8b0974e | ||
|
|
f004b5b472 | ||
|
|
591810e405 | ||
|
|
3c2112215f | ||
|
|
9db5c30c36 | ||
|
|
49f4d4312b | ||
|
|
0cf12eccae | ||
|
|
495c38825a | ||
|
|
60b912ddda | ||
|
|
4d6a0ebaac | ||
|
|
54fa465da5 | ||
|
|
54cd8fd160 | ||
|
|
7abc81c4d2 | ||
|
|
493834861d | ||
|
|
9a539393bd | ||
|
|
139ea3ce7d | ||
|
|
4acaaac85a | ||
|
|
e93ced2163 | ||
|
|
9672b6dd6c | ||
|
|
7a12c8418e | ||
|
|
2208f17e8e | ||
|
|
46a84fdad5 | ||
|
|
9c80e6d922 | ||
|
|
3a952bd248 | ||
|
|
96d5d622b8 | ||
|
|
b59e943aa6 | ||
|
|
371a6092de | ||
|
|
e6896eb393 | ||
|
|
6c04a1ce7c | ||
|
|
6bdbb88fb8 | ||
|
|
6b4e8668a1 | ||
|
|
d8f562b6ad | ||
|
|
f1e64008fb | ||
|
|
cfde357824 | ||
|
|
3459f8df49 | ||
|
|
c0332ff856 | ||
|
|
e1042e7d47 | ||
|
|
76831d0d06 | ||
|
|
68b3c8f339 | ||
|
|
77a4a945ae | ||
|
|
b09f317aa0 | ||
|
|
009a1855aa | ||
|
|
fb7812b194 | ||
|
|
00bd6081a5 | ||
|
|
5326b4113a | ||
|
|
7adac94f1e | ||
|
|
c5dff8cdad | ||
|
|
8a39d529d0 | ||
|
|
740eba4f70 | ||
|
|
9a9388ace2 | ||
|
|
8a3b8198af | ||
|
|
c94baec9ca | ||
|
|
25a799ad63 | ||
|
|
f518abaff1 | ||
|
|
58fa30c7be | ||
|
|
a02d6a22d6 | ||
|
|
7a2dffa95a | ||
|
|
2541348408 | ||
|
|
f037c58eee | ||
|
|
e5e03cba24 | ||
|
|
07380780c6 | ||
|
|
3a8bd73901 | ||
|
|
79bd350ad6 | ||
|
|
0700cef63e | ||
|
|
e34ebac459 | ||
|
|
03d26b0482 | ||
|
|
e6d4db0b4c | ||
|
|
69d74485f0 | ||
|
|
9401784421 | ||
|
|
93aba5a6b7 | ||
|
|
9108970e45 | ||
|
|
0965db473f | ||
|
|
f1f6d3f37d | ||
|
|
8e195067df | ||
|
|
5d6bc5c9fd | ||
|
|
8869354d21 | ||
|
|
5bdf91e73c | ||
|
|
54776c776a | ||
|
|
f2ff885f33 | ||
|
|
6cb018df2f | ||
|
|
f4a78e5cfb | ||
|
|
1815fd5c36 | ||
|
|
15d64e0f23 | ||
|
|
15077b13e3 | ||
|
|
87f47166ac | ||
|
|
c8cd3e7125 | ||
|
|
ce350e768a | ||
|
|
56a1712275 | ||
|
|
f8a3e7153f | ||
|
|
6f9b63517d | ||
|
|
1eae0b2fce | ||
|
|
24f06bb088 | ||
|
|
015589cdd9 | ||
|
|
ba17b9b56b | ||
|
|
3b8c9ba7ab | ||
|
|
f915eb3a40 | ||
|
|
c036214c45 | ||
|
|
b8ed5d8d91 | ||
|
|
d9ecdcaef0 | ||
|
|
202012887a | ||
|
|
4d05804729 | ||
|
|
e1e75ed36b | ||
|
|
895e553e68 | ||
|
|
5cf0189df1 | ||
|
|
8d2386b4db | ||
|
|
dd49412edd | ||
|
|
b89f20e02d | ||
|
|
e634aa6277 | ||
|
|
3a5132b6f7 | ||
|
|
b9e41f28c3 | ||
|
|
6d77d6204d | ||
|
|
f73edbd172 | ||
|
|
fa84482d98 | ||
|
|
6c63a88ef0 | ||
|
|
35c59d2c24 | ||
|
|
6d77bcebaa | ||
|
|
605c751926 | ||
|
|
8054ffc12f | ||
|
|
917c14f2ce | ||
|
|
dfe27ad556 | ||
|
|
3616bc03c9 | ||
|
|
10cd022e08 | ||
|
|
3650b32ec5 | ||
|
|
cad79a31d8 | ||
|
|
077141d2ba | ||
|
|
cd3f132844 | ||
|
|
ff7dc29ad3 | ||
|
|
87a5ae3f61 | ||
|
|
6bd09e75fe | ||
|
|
7b06bf642a | ||
|
|
b6e4b379c1 | ||
|
|
5e96f64b83 | ||
|
|
41d473e999 | ||
|
|
25fdeaac49 | ||
|
|
0c7b45ad1f | ||
|
|
5293781c0d | ||
|
|
7a2c691c5b | ||
|
|
dfc129ee98 | ||
|
|
1c711bc8d4 | ||
|
|
31a0964e12 | ||
|
|
b644d797b4 | ||
|
|
61940ca879 | ||
|
|
16b185f97d | ||
|
|
c531da02ca | ||
|
|
bc1b5e52a9 | ||
|
|
0b5257425f | ||
|
|
7fb3dcb1eb | ||
|
|
5c3fde8531 | ||
|
|
7bffc0d0e3 | ||
|
|
748c67df8b | ||
|
|
2d9be6c06b | ||
|
|
493a56b262 | ||
|
|
3350740563 | ||
|
|
89b123f9d1 | ||
|
|
4821e89780 | ||
|
|
e989093129 | ||
|
|
018337ddfb | ||
|
|
fde10f1236 | ||
|
|
48710b9793 | ||
|
|
069f1ed9a4 | ||
|
|
1112a71ea5 | ||
|
|
9d86838fa7 | ||
|
|
f187005581 | ||
|
|
7efda8e8fc | ||
|
|
2620cc3e8d | ||
|
|
af77cbb759 | ||
|
|
65e14b18ec | ||
|
|
738ac3c03b | ||
|
|
7a0a07628d | ||
|
|
c373a92da6 | ||
|
|
23ea4863f1 | ||
|
|
8940778bb8 | ||
|
|
53c009288c | ||
|
|
3be3ae500b | ||
|
|
9ab8bd6785 | ||
|
|
9e91602b42 | ||
|
|
b13cb438d1 | ||
|
|
69802f07b7 | ||
|
|
c426e9b8ad | ||
|
|
97ccf329b1 | ||
|
|
89b759e2ed | ||
|
|
1fb33bd586 | ||
|
|
0ca017d0a8 | ||
|
|
75767078aa | ||
|
|
22bf85b6f5 | ||
|
|
b2ea82c8d8 | ||
|
|
7fae076155 | ||
|
|
ed825c6273 | ||
|
|
795cac1dd0 | ||
|
|
ad3f9ac068 | ||
|
|
0721ef2399 | ||
|
|
9ac93067f6 | ||
|
|
167cdb09e3 | ||
|
|
ada1083462 | ||
|
|
5df9668063 | ||
|
|
249668a2b9 | ||
|
|
66364d9c02 | ||
|
|
077c80d258 | ||
|
|
79bda9df35 | ||
|
|
6e5f9e8a1b | ||
|
|
7e5db4ba42 | ||
|
|
7be3ea194f | ||
|
|
d119526bde | ||
|
|
c3f1331a5e | ||
|
|
8de873be86 | ||
|
|
eeb397a0ac | ||
|
|
5432293224 | ||
|
|
5da1e62426 | ||
|
|
057ae983a0 | ||
|
|
f473643d29 | ||
|
|
b96b8eb389 | ||
|
|
70777899f8 | ||
|
|
cdde49978b | ||
|
|
0ddab94774 | ||
|
|
5483d97f73 | ||
|
|
6fa552994a | ||
|
|
bd0ab704af | ||
|
|
cd7b3cf971 | ||
|
|
fb6693f612 | ||
|
|
a98968436c | ||
|
|
540134d443 | ||
|
|
6244daa3ea | ||
|
|
689e71ff2c | ||
|
|
361a681225 | ||
|
|
73ae88badf | ||
|
|
72d51347ec | ||
|
|
dc37bf5794 | ||
|
|
9e5fa984f8 | ||
|
|
3e3d6eda12 | ||
|
|
9110059797 | ||
|
|
15d0d6a94b | ||
|
|
0f8c71d3b3 | ||
|
|
8f9895acaf | ||
|
|
2a375007ee | ||
|
|
c63448e357 | ||
|
|
5db49a8892 | ||
|
|
1a1b50d786 | ||
|
|
b34ee73497 | ||
|
|
92f66c9eac | ||
|
|
3a28168d41 | ||
|
|
ef1fe1bb3b | ||
|
|
8350daf505 | ||
|
|
133b9d9044 | ||
|
|
7c453d5b36 | ||
|
|
b6df33fa72 | ||
|
|
8d6b964099 | ||
|
|
7ff09cf359 | ||
|
|
3c43b9b21c | ||
|
|
5887bc116f | ||
|
|
6d220540c1 | ||
|
|
ed51686240 | ||
|
|
cc4d4eacad | ||
|
|
c53a1998c5 | ||
|
|
614382fec0 | ||
|
|
9df10cb8cc | ||
|
|
5c47ecfcb8 | ||
|
|
3d8004cf6f | ||
|
|
a3e2adeda2 | ||
|
|
63117f46ee | ||
|
|
cf70284de9 | ||
|
|
367f2907df | ||
|
|
16aded2743 | ||
|
|
12b46b7757 | ||
|
|
6133415f6d | ||
|
|
c53b7e9698 | ||
|
|
c5d07b8bf9 | ||
|
|
2fc1e35943 | ||
|
|
83335043e2 | ||
|
|
a5ad63a005 | ||
|
|
ae20d03aec | ||
|
|
44333afd20 | ||
|
|
13099a7e4f | ||
|
|
a7dbc970df | ||
|
|
644a3a9d78 | ||
|
|
93736cbc12 | ||
|
|
b157cc8b06 | ||
|
|
1d65c8e3ef | ||
|
|
cdf4f59cb4 | ||
|
|
5fb29db2db | ||
|
|
b5d47b9692 | ||
|
|
fd798b4197 | ||
|
|
a66c90462d | ||
|
|
3af5a424f0 | ||
|
|
a9e3fa3ce5 | ||
|
|
75ee18f87e | ||
|
|
d44978c940 | ||
|
|
516cf7d077 | ||
|
|
1905b19ee7 | ||
|
|
131be6e074 | ||
|
|
49be63abbf | ||
|
|
f2b158159c | ||
|
|
f6acc4763e | ||
|
|
3265abfbc2 | ||
|
|
d0a4a3401c | ||
|
|
c58c893621 | ||
|
|
ef0388045f | ||
|
|
b1fefcbe50 | ||
|
|
8077360cf6 | ||
|
|
2e020b1cf6 | ||
|
|
742bc36edd | ||
|
|
a7299bbb8d | ||
|
|
11edc09681 | ||
|
|
b9f5cfddc1 | ||
|
|
fd5874b07b | ||
|
|
ce25881c88 | ||
|
|
7cbd84d5b3 | ||
|
|
c502dc6ed8 | ||
|
|
260e990be7 | ||
|
|
2df4b61eb2 | ||
|
|
689991578e | ||
|
|
a9bce79c6b | ||
|
|
ac86936797 | ||
|
|
dcf9c111b6 | ||
|
|
50e5766867 | ||
|
|
8982a42d38 | ||
|
|
fb00e3e56f | ||
|
|
a0b8f5464e | ||
|
|
777fb14fc9 | ||
|
|
25d6b168c5 | ||
|
|
c9fd177998 | ||
|
|
02973f7f80 | ||
|
|
360280b0ea | ||
|
|
82e29c6bd3 | ||
|
|
cefbaa08d9 | ||
|
|
87def3de5f | ||
|
|
9ea258e97f | ||
|
|
7e6fc2603e | ||
|
|
4487890979 | ||
|
|
be775e2ffa | ||
|
|
cee6ef39ee | ||
|
|
5910265e13 | ||
|
|
a43b933c90 | ||
|
|
cfa5ddbde8 | ||
|
|
a21f0b0540 | ||
|
|
ad796b8ba5 | ||
|
|
db82024fc7 | ||
|
|
780b33c639 | ||
|
|
a5d3e1900e | ||
|
|
ab7133b35a | ||
|
|
75cc3ce172 | ||
|
|
05a6a9d6e9 | ||
|
|
25a2b716ad | ||
|
|
1d48df3fd1 | ||
|
|
b8294a460e | ||
|
|
6043bf20fe | ||
|
|
1cd501b107 | ||
|
|
0022566a3a | ||
|
|
5f3d44ec00 | ||
|
|
25b49294b2 | ||
|
|
a8e43f63a1 | ||
|
|
fb52bd6fea | ||
|
|
bc5c739047 | ||
|
|
97ccb365ec | ||
|
|
083c3ee659 | ||
|
|
9df4e3ae3c | ||
|
|
4a3dc6c774 | ||
|
|
c0db4a7f1b | ||
|
|
04fe4c86ec | ||
|
|
b772603d78 | ||
|
|
2e19f5a3c8 | ||
|
|
63cb76106a | ||
|
|
1df62fafb9 | ||
|
|
5e32058c13 | ||
|
|
75fbb82440 | ||
|
|
f837ea6346 | ||
|
|
9776bdc9b8 | ||
|
|
94059f291d | ||
|
|
318fb25761 | ||
|
|
577621d463 | ||
|
|
7229dd893f | ||
|
|
0918d8758b | ||
|
|
fe1d07f29c | ||
|
|
390fd3d283 | ||
|
|
8304574738 | ||
|
|
727d4dbbe0 | ||
|
|
d6c6b901f0 | ||
|
|
9bf748b6c4 | ||
|
|
e3706575d5 | ||
|
|
2ca014250f | ||
|
|
325904ce5a | ||
|
|
fa36765373 | ||
|
|
55a8079c83 | ||
|
|
0a92ad27ef | ||
|
|
4cc3000b07 | ||
|
|
a328e7ccc4 | ||
|
|
155cae1de8 | ||
|
|
64e09476c7 | ||
|
|
4455cc1244 | ||
|
|
38aff73251 | ||
|
|
69827490e0 | ||
|
|
75e10445ca | ||
|
|
5f0999243a | ||
|
|
09ddb8761f | ||
|
|
ccdcb1c45b | ||
|
|
5f34265db6 | ||
|
|
05cdf8616b | ||
|
|
c0941f4631 | ||
|
|
5414ae14a9 | ||
|
|
b782400b92 | ||
|
|
7885f454a4 | ||
|
|
90bc752297 | ||
|
|
519aeefbd9 | ||
|
|
649e9e7f8c | ||
|
|
d466c96229 | ||
|
|
38dbfee56c | ||
|
|
069d832a51 | ||
|
|
04d3946511 | ||
|
|
d7bda9ac0e | ||
|
|
8356dc7774 | ||
|
|
1496988ac1 | ||
|
|
d54e153fc8 | ||
|
|
e65071d3aa | ||
|
|
b4624bd468 | ||
|
|
bdff033492 | ||
|
|
e01b0ce0d1 | ||
|
|
c4b770f305 | ||
|
|
a6c53eb068 | ||
|
|
705126cac8 | ||
|
|
cdc904e49e | ||
|
|
7ca5c8ca72 | ||
|
|
e51e016834 | ||
|
|
f7802b9227 | ||
|
|
a76aff36d0 | ||
|
|
f45dbf3e76 | ||
|
|
cb35b73048 | ||
|
|
a61a4389ec | ||
|
|
f1755f5bc5 | ||
|
|
71fc57f8a0 | ||
|
|
f2c3027f50 | ||
|
|
39adf6e55a | ||
|
|
4d33a5b5a8 | ||
|
|
26fce15bcf | ||
|
|
a230b3de22 | ||
|
|
e5350b9627 | ||
|
|
a7693cbc86 | ||
|
|
69514d2fc8 | ||
|
|
0778db4228 | ||
|
|
5911b0296b | ||
|
|
8acbc2d1de | ||
|
|
f37a8d82c1 | ||
|
|
2601b40ffa | ||
|
|
5acbd7bcc3 | ||
|
|
5910f77e42 | ||
|
|
efa572162f | ||
|
|
5c4db08968 | ||
|
|
f44a693bbd | ||
|
|
3f439f15c3 | ||
|
|
6dbeb16d21 | ||
|
|
c5549b442b | ||
|
|
70c6f0a490 | ||
|
|
f37cd9672c | ||
|
|
9bce320160 | ||
|
|
22fb91cff9 | ||
|
|
3c49a6173d | ||
|
|
d66fe583d5 | ||
|
|
72c2d6ab70 | ||
|
|
70ff8d787a | ||
|
|
0300f88602 | ||
|
|
f36eeedbf8 | ||
|
|
e10ec6f3b8 | ||
|
|
d753a48a7d | ||
|
|
32c454ba5f | ||
|
|
39f64a1371 | ||
|
|
3539de754d | ||
|
|
1791665f74 | ||
|
|
def6fcc4dc | ||
|
|
d392bc6e9a | ||
|
|
714383a063 | ||
|
|
a2c6325261 | ||
|
|
aeb5e34490 | ||
|
|
775901058d | ||
|
|
3e35371754 | ||
|
|
bd12d46e79 | ||
|
|
82ee089088 | ||
|
|
61529fd780 | ||
|
|
aac91b3611 | ||
|
|
4ca87057f3 | ||
|
|
553d32ce7d | ||
|
|
940a7da9d1 | ||
|
|
242deca524 | ||
|
|
bb19f52c05 | ||
|
|
e75ee730b8 | ||
|
|
36102f1689 | ||
|
|
e452d94fc8 | ||
|
|
2466da4e82 | ||
|
|
09dbbf9a69 | ||
|
|
b7372b1f32 | ||
|
|
5afca6ca8e | ||
|
|
deec3516d5 | ||
|
|
65526f84e1 | ||
|
|
442609fa17 | ||
|
|
2d609b8b31 | ||
|
|
3acc13038d | ||
|
|
ab96a4f0d8 | ||
|
|
7c893a58da | ||
|
|
ed81fc5a01 | ||
|
|
8f6c4341f7 | ||
|
|
175e4f228d | ||
|
|
325f4f9560 | ||
|
|
c7e8c145d1 | ||
|
|
6d77712b1b | ||
|
|
8442d8530a | ||
|
|
9a164bcb45 | ||
|
|
8a1a40ce6a | ||
|
|
f6494d22ee | ||
|
|
3d24360f20 | ||
|
|
815624c88a | ||
|
|
47a996ba4b | ||
|
|
5e8444ed0f | ||
|
|
dfe8fbde84 | ||
|
|
3a5ccc18cf | ||
|
|
82e5fd018b | ||
|
|
2071eb634f | ||
|
|
e6c5633f58 | ||
|
|
6ccc1ce804 | ||
|
|
74886d95d0 | ||
|
|
acf2df3688 | ||
|
|
9ae80a6173 | ||
|
|
c8476b1c2e | ||
|
|
cbe775aee2 | ||
|
|
5e43fa92ff | ||
|
|
539e2a8b42 | ||
|
|
5f250de8ad | ||
|
|
2e625a051d | ||
|
|
3e948fd792 | ||
|
|
b52bea7503 | ||
|
|
a9be4de5a5 | ||
|
|
14481533b8 | ||
|
|
2519f28632 | ||
|
|
22caf7b659 | ||
|
|
ee9ab396dc | ||
|
|
dc07fbe753 | ||
|
|
d19af039e7 | ||
|
|
37383d9a1f | ||
|
|
165d5051b5 | ||
|
|
8d9f61c467 | ||
|
|
a72bac54d5 | ||
|
|
7878465567 | ||
|
|
c82dc04cbb | ||
|
|
69380e4934 | ||
|
|
b6ab8cd68d | ||
|
|
0d0dc67141 | ||
|
|
f0b21aff91 | ||
|
|
160a0b77cf | ||
|
|
6528bf35dc | ||
|
|
da56873d37 | ||
|
|
c6968105e5 | ||
|
|
f1f3e970b9 | ||
|
|
b827a2f342 | ||
|
|
5f4e07eb4f | ||
|
|
b1193607c2 | ||
|
|
eeef90a475 | ||
|
|
a523138e51 | ||
|
|
6ec001f944 | ||
|
|
55070da239 | ||
|
|
6f2b7fb853 | ||
|
|
899ec7ed54 | ||
|
|
8ee734b1df | ||
|
|
7867163bfd | ||
|
|
82652f0f08 | ||
|
|
d60d9cf985 | ||
|
|
63bd4bb4b1 | ||
|
|
de3161155b | ||
|
|
8938855b40 | ||
|
|
55e5a7c25a | ||
|
|
fa3d011415 | ||
|
|
b9a3626cad | ||
|
|
b3eb33be0f | ||
|
|
4a89438454 | ||
|
|
f524e4f932 | ||
|
|
156b91baff | ||
|
|
764e901689 | ||
|
|
8f6757cc7b | ||
|
|
7445dec1b4 | ||
|
|
ba8be9489e | ||
|
|
12ab7efdb0 | ||
|
|
3993b65bbf | ||
|
|
fb969f8492 | ||
|
|
8f8a27c904 | ||
|
|
d8fa08111b | ||
|
|
4077f27592 | ||
|
|
1a1a01a842 | ||
|
|
c4cf659e32 | ||
|
|
d6987ee05b | ||
|
|
509a392272 | ||
|
|
af6510fd17 | ||
|
|
cd4d79cf99 | ||
|
|
10e7c42a83 | ||
|
|
7676b59b02 | ||
|
|
0ff888c989 | ||
|
|
6b4a5b5e91 | ||
|
|
72af17bbbe | ||
|
|
c875950c43 | ||
|
|
71eeb2f0c0 | ||
|
|
99f1b9899f | ||
|
|
bee3bebb4e | ||
|
|
efcb8bbca6 | ||
|
|
cd469f7a1d | ||
|
|
c7f58ca870 | ||
|
|
b34d040c78 | ||
|
|
afaf6da405 | ||
|
|
7bef64a0d6 | ||
|
|
146960368f | ||
|
|
997ba0fef0 | ||
|
|
6f735cc2da | ||
|
|
8b35485ee5 | ||
|
|
428276d7a8 | ||
|
|
053695b63d | ||
|
|
b4bb83e68f | ||
|
|
2989a5e0f5 | ||
|
|
9844d2c96a | ||
|
|
ab16ca0580 | ||
|
|
f0a9ec21cd | ||
|
|
6c5fd05a31 | ||
|
|
1744f238e1 | ||
|
|
fd765bd88f | ||
|
|
533b6b0de2 | ||
|
|
bf3c9061a2 | ||
|
|
b60e2c65d3 | ||
|
|
e44ac3c20a | ||
|
|
2eaf1d693a | ||
|
|
a92d818aa3 | ||
|
|
ca3330cecd | ||
|
|
cf86546dff | ||
|
|
8e028c32d4 | ||
|
|
c082bf72af | ||
|
|
906c6a5ba0 | ||
|
|
a6bd00f807 | ||
|
|
7797efe1bb | ||
|
|
be86d67e81 | ||
|
|
23823e9698 | ||
|
|
7bc3ee49aa | ||
|
|
8fc4013240 | ||
|
|
211a1394b8 | ||
|
|
73e5936220 | ||
|
|
e4e46d8fbc | ||
|
|
b4abbf3ac8 | ||
|
|
83a89127fd | ||
|
|
6ed98ca8f6 | ||
|
|
3af91d7cfd | ||
|
|
b836a56e6e | ||
|
|
c56db8f2c4 | ||
|
|
dda1092e74 | ||
|
|
8b75e9a442 | ||
|
|
1da1e90d1e | ||
|
|
9a268ca7f5 | ||
|
|
d85504a9d1 | ||
|
|
8658ded190 | ||
|
|
04b11d3a07 | ||
|
|
56eac57222 | ||
|
|
594a2dc41f | ||
|
|
06193ed825 | ||
|
|
519e59b577 | ||
|
|
771d3673f5 | ||
|
|
2cb83f13fd | ||
|
|
2665b5968c | ||
|
|
7a649ada09 | ||
|
|
a533e8fb52 | ||
|
|
bb93cabd39 | ||
|
|
c4360747a3 | ||
|
|
23ff182d1f | ||
|
|
cb88caa2d2 | ||
|
|
cf216f12a1 | ||
|
|
a22fd01959 | ||
|
|
b38139a855 | ||
|
|
1a681ad022 | ||
|
|
f6d672a3cd | ||
|
|
016d9d8c88 | ||
|
|
c769f2566a | ||
|
|
423f9e6de7 | ||
|
|
bbef32b1ef | ||
|
|
92953007de | ||
|
|
4ecd588776 | ||
|
|
4e5b7c5d24 | ||
|
|
c1db31c130 | ||
|
|
a02b3e1258 | ||
|
|
afb445bb57 | ||
|
|
92c5f94fe7 | ||
|
|
a840ae9035 | ||
|
|
0a5977e951 | ||
|
|
a7fb211827 | ||
|
|
3ed8c292c2 | ||
|
|
13ae25b785 | ||
|
|
40513a117f | ||
|
|
f0761eb7ec | ||
|
|
05477f1d29 | ||
|
|
ac4a708307 | ||
|
|
720cb5fcb1 | ||
|
|
c7a10dd90d | ||
|
|
178b73fecd | ||
|
|
bc8428ca42 | ||
|
|
90b1ee1dfa | ||
|
|
7f9a4b7578 | ||
|
|
e789f82979 | ||
|
|
c6143edb44 | ||
|
|
252d0fd977 | ||
|
|
d1caae3f79 | ||
|
|
874d2fd602 | ||
|
|
32adb0f2da | ||
|
|
f3993b9cdb | ||
|
|
a961afe52b | ||
|
|
f667d139bc | ||
|
|
90904b3f42 | ||
|
|
a7afa11610 | ||
|
|
2fe4d07599 | ||
|
|
da4f5d79f5 | ||
|
|
2af4114d64 | ||
|
|
8366bd1cbe | ||
|
|
79d8aa0cb8 | ||
|
|
e62bccde9e | ||
|
|
516c7ab505 | ||
|
|
158dd33a25 | ||
|
|
7e99a6ce42 | ||
|
|
cb406bb350 | ||
|
|
9bbe029c28 | ||
|
|
280b06485f | ||
|
|
50797d8fa1 | ||
|
|
2003864615 | ||
|
|
1125bb5848 | ||
|
|
44ea9604ed | ||
|
|
d28101ee66 | ||
|
|
9fd4f5562d | ||
|
|
9bb218734c | ||
|
|
82ffca3fc9 | ||
|
|
d9f8efa9c3 | ||
|
|
f26eb2a192 | ||
|
|
dbe373af6f | ||
|
|
4e1f38ce28 | ||
|
|
60273d3d6d | ||
|
|
5a52ee75e3 | ||
|
|
c0fd6042fd | ||
|
|
fc57c921b1 | ||
|
|
7b295378e4 | ||
|
|
9d64d222a8 | ||
|
|
fa497b1633 | ||
|
|
e131a45646 | ||
|
|
28d74a9844 | ||
|
|
5637706e46 | ||
|
|
614aba6007 | ||
|
|
440b1ecbfd | ||
|
|
cdafe21661 | ||
|
|
844d2f49ce | ||
|
|
cb439a126a | ||
|
|
659acd48b1 | ||
|
|
d19287d5b7 | ||
|
|
26a2d0b2a1 | ||
|
|
ae107b2e6e | ||
|
|
41f56ad05d | ||
|
|
76bb647d24 | ||
|
|
e077ecdd9d | ||
|
|
62dda96159 | ||
|
|
5753d4cb87 | ||
|
|
e186a3d2c9 | ||
|
|
9a5b227f3e | ||
|
|
3e055e329c | ||
|
|
5b36ba66c2 | ||
|
|
e79aebb3e1 | ||
|
|
6a096811ff | ||
|
|
cac1054acb | ||
|
|
f3b05961aa | ||
|
|
4ebdcb719a | ||
|
|
571be84e26 | ||
|
|
2b3655fa11 | ||
|
|
ca2f7a7e16 | ||
|
|
ee0ea2c5fc | ||
|
|
4d7db6e1c1 | ||
|
|
559af54e66 | ||
|
|
083ecb7244 | ||
|
|
07818d5fa5 | ||
|
|
bae1d6ccd8 | ||
|
|
3a5c93eeff | ||
|
|
4aff4d66ec | ||
|
|
53b91ef306 | ||
|
|
34145c990d | ||
|
|
2bd9d0b9c8 | ||
|
|
a603c0f1fc | ||
|
|
5b8ed0add9 | ||
|
|
fd7931cd2b | ||
|
|
72111e698e | ||
|
|
dce70fe6d1 | ||
|
|
63ab497f6f | ||
|
|
afe226cd16 | ||
|
|
efa9ef78c8 | ||
|
|
b5a06618fa | ||
|
|
f0f3b8707b | ||
|
|
045e1670a4 | ||
|
|
6298e33b8b | ||
|
|
a8a6325054 | ||
|
|
4cbb43b860 | ||
|
|
933206f1fe | ||
|
|
9356231e64 | ||
|
|
a0651b62a7 | ||
|
|
470274204e | ||
|
|
af0cfe112b | ||
|
|
0b80578e62 | ||
|
|
f58ffb3fd4 | ||
|
|
a0f239495d | ||
|
|
870746791a | ||
|
|
71edd615ce | ||
|
|
a9dcf4ce74 | ||
|
|
30c047fedd | ||
|
|
bc309b3ddd | ||
|
|
a041601f1f | ||
|
|
60e93521d5 | ||
|
|
14cd16f1f8 | ||
|
|
5800d78b99 | ||
|
|
87053c5369 | ||
|
|
e14b6abf9d | ||
|
|
740f814ce0 | ||
|
|
5bcf4292b6 | ||
|
|
ad7d1d4f29 | ||
|
|
22717a1c06 | ||
|
|
82e511ddb1 | ||
|
|
5843038a08 | ||
|
|
958d8b6bb4 | ||
|
|
a43fc9ad17 | ||
|
|
c69a38652d | ||
|
|
a4de85dc80 | ||
|
|
9e9ca66467 | ||
|
|
82ff0c5852 | ||
|
|
07f71e2034 | ||
|
|
328c23c5d4 | ||
|
|
268c692efd | ||
|
|
434f1ec542 | ||
|
|
927ffef864 | ||
|
|
047bf94908 | ||
|
|
880d0ec19f | ||
|
|
2430612ad4 | ||
|
|
e87f1107ca | ||
|
|
bebaf4c112 | ||
|
|
d32add9938 | ||
|
|
975a2b3f59 | ||
|
|
6437d0180b | ||
|
|
c65b5b9f84 | ||
|
|
bf373f9da1 | ||
|
|
2064fc89c0 | ||
|
|
5a4c7c75c0 | ||
|
|
5ad2fdcf0b | ||
|
|
8d37d418e7 | ||
|
|
8df3350252 | ||
|
|
931da04dc2 | ||
|
|
7efa946b02 | ||
|
|
fe7b094b9e | ||
|
|
7382c23a17 | ||
|
|
0b86aa5d29 | ||
|
|
f04b2d4350 | ||
|
|
9c65798902 | ||
|
|
d8f56de258 | ||
|
|
18e45aab98 | ||
|
|
344b784d69 | ||
|
|
333998509f | ||
|
|
8796df8218 | ||
|
|
17ae0ed3ee | ||
|
|
d59b0f6ff7 | ||
|
|
1898201b8b | ||
|
|
40214ef109 | ||
|
|
4f70ab8e27 | ||
|
|
416f245e6c | ||
|
|
177806068d | ||
|
|
7950f2d17d | ||
|
|
cf3d55fa10 | ||
|
|
85f94676ba | ||
|
|
52ffb67b33 | ||
|
|
0d6c405ccb | ||
|
|
0c064b1b79 | ||
|
|
63e56facbf | ||
|
|
f2dc0d3115 | ||
|
|
286fbc07e9 | ||
|
|
a7e53b8134 | ||
|
|
afc2500aee | ||
|
|
c4062f495a | ||
|
|
d3ecd22dba | ||
|
|
5efbde4fe9 | ||
|
|
c4a0a40473 | ||
|
|
f59a68c531 | ||
|
|
5282699f19 | ||
|
|
648d9e253c | ||
|
|
5b14cc6f0b | ||
|
|
e575405d7b | ||
|
|
2e819a360c | ||
|
|
1c09373b4f | ||
|
|
422a206484 | ||
|
|
e545c310ee | ||
|
|
ce1ec81d6f | ||
|
|
33c6341ccd | ||
|
|
b74ecd8a75 | ||
|
|
bcc1ec65f9 | ||
|
|
e82c96dab1 | ||
|
|
ea75f01ba2 | ||
|
|
3a2b2de814 | ||
|
|
7b5b070900 | ||
|
|
8d73608672 | ||
|
|
9f7433d4f3 | ||
|
|
bbffd1b5b6 | ||
|
|
31d17de26c | ||
|
|
3797a4839d | ||
|
|
f85b17a00e | ||
|
|
33b6478cc7 | ||
|
|
317bca1008 | ||
|
|
4d83fd4238 | ||
|
|
fd14ad6ce9 | ||
|
|
31590afc5f | ||
|
|
85281d8efa | ||
|
|
7a2af4a2a2 | ||
|
|
465be9b16e | ||
|
|
19ae04da66 | ||
|
|
2e00f00ab0 | ||
|
|
e99f43f59c | ||
|
|
2637931102 | ||
|
|
54067d105b | ||
|
|
4c415aefed | ||
|
|
b28fb90851 | ||
|
|
8b7fa6627f | ||
|
|
f148b7bfc0 | ||
|
|
a0342d9527 | ||
|
|
2f4cc5480e | ||
|
|
5e6c3b9d0e | ||
|
|
0a461b829a | ||
|
|
91e9495148 | ||
|
|
873966aa86 | ||
|
|
6bd08a0b6f | ||
|
|
76b87b1bbd | ||
|
|
1b929e3afc | ||
|
|
6b9b42bbdf | ||
|
|
67cc242820 | ||
|
|
b5a85b51b6 | ||
|
|
2b5639d503 | ||
|
|
db4bf20df3 | ||
|
|
59e9a87d95 | ||
|
|
bbc12378d4 | ||
|
|
5bec61b824 | ||
|
|
7a0fbd0eb1 | ||
|
|
53d30ccde9 | ||
|
|
7d9f408d3a | ||
|
|
260c4e8503 | ||
|
|
dbc66d0405 | ||
|
|
9578a3cc31 | ||
|
|
83b480761f | ||
|
|
b40b85e006 | ||
|
|
97772f406d | ||
|
|
8c75b65475 | ||
|
|
0f81490830 | ||
|
|
7da5d83d6e | ||
|
|
1cfdd1283a | ||
|
|
762e1167c7 | ||
|
|
2d55c94c7b | ||
|
|
c9e712d07b | ||
|
|
a887bed25b | ||
|
|
3fc783617a | ||
|
|
34d9a17aad | ||
|
|
40ee8de171 | ||
|
|
feb7d57333 | ||
|
|
390b903c55 | ||
|
|
1ba27853bd | ||
|
|
de61bb6a35 | ||
|
|
01c8df01ec | ||
|
|
613139e7be | ||
|
|
fb100dbf98 | ||
|
|
ecf61be633 | ||
|
|
1619317c3b | ||
|
|
76fabe8785 | ||
|
|
1a17c2ba1f | ||
|
|
a04de87584 | ||
|
|
ffbb0f6a60 | ||
|
|
1c82c42cb3 | ||
|
|
11f79a2095 | ||
|
|
847c06d88b | ||
|
|
209569a035 | ||
|
|
0852e83eec | ||
|
|
ca084ab1a2 | ||
|
|
cab2b96871 | ||
|
|
8675dff045 | ||
|
|
ed2adc7025 | ||
|
|
ddc7a2dd4d | ||
|
|
2f0cdfd564 | ||
|
|
c154721f4a | ||
|
|
48cdae2829 | ||
|
|
9571a9b53d | ||
|
|
f1e0ebfe93 | ||
|
|
c7ba519af2 | ||
|
|
04de977855 | ||
|
|
591a05caa3 | ||
|
|
82700ea95a | ||
|
|
a36b29c25c | ||
|
|
c3af3ff1d0 | ||
|
|
1592e578ed | ||
|
|
e640683c97 | ||
|
|
e6bddd3ed2 | ||
|
|
bd0549caea | ||
|
|
08a53e5eca | ||
|
|
025972ef64 | ||
|
|
00a3e368b4 | ||
|
|
6b2465746a | ||
|
|
35e2cee5c5 | ||
|
|
d775fe7936 | ||
|
|
dc13eb6df0 | ||
|
|
798636c95b | ||
|
|
25fdf6cb16 | ||
|
|
044a45db2e | ||
|
|
0aec2df74f | ||
|
|
4f9c5b60c5 | ||
|
|
bd13df972e | ||
|
|
a971910723 | ||
|
|
b8a6fee6d6 | ||
|
|
0bfa981e70 | ||
|
|
070bdda011 | ||
|
|
e19c026083 | ||
|
|
8b383f86de | ||
|
|
9ebd62f676 | ||
|
|
2c3e2b701e | ||
|
|
16f95123cd | ||
|
|
0a176df6fb | ||
|
|
d862c43be0 | ||
|
|
a452767e34 | ||
|
|
f0aeef82a1 | ||
|
|
06b6eaba06 | ||
|
|
713a7d518d | ||
|
|
5702e4bc24 | ||
|
|
9b37b1569c | ||
|
|
5f1f1bb5ed | ||
|
|
9ff2df78f0 | ||
|
|
74f26bb667 | ||
|
|
1f11c1f71a | ||
|
|
8c8c37a66b | ||
|
|
d4f9fd7204 | ||
|
|
e70e72e025 | ||
|
|
e2ce6a0dab | ||
|
|
657ea2686f | ||
|
|
311df9c521 | ||
|
|
ff93d9dbda | ||
|
|
86ada87529 | ||
|
|
d74437af57 | ||
|
|
c82ac420fc | ||
|
|
f91cb9321e | ||
|
|
cc1a168aa0 | ||
|
|
ee82d35ed8 | ||
|
|
8bca30cfe4 | ||
|
|
fe9a5d3159 | ||
|
|
f43d21d0af | ||
|
|
8e2c3b315b | ||
|
|
9079fb6a0d | ||
|
|
db3f0048d8 | ||
|
|
d3d8284985 | ||
|
|
f545faa06d | ||
|
|
458aadbb10 | ||
|
|
f2ec0d80a8 | ||
|
|
be6bb5314e | ||
|
|
98114944fc | ||
|
|
6690023555 | ||
|
|
a7e8187a0d | ||
|
|
0c1b72616a | ||
|
|
945a378e55 | ||
|
|
29c5be47ed | ||
|
|
e0f18b2255 | ||
|
|
e755aafe29 | ||
|
|
e1b3a25008 | ||
|
|
69c1cd3f38 | ||
|
|
ce13fbb98a | ||
|
|
084d9e0009 | ||
|
|
3db9b06a6e | ||
|
|
e9be8016e6 | ||
|
|
1f9e21ebd5 | ||
|
|
a91d9054ad | ||
|
|
6c90d12a0c | ||
|
|
38e8ccac92 | ||
|
|
1d19a58424 | ||
|
|
f47f9ceade | ||
|
|
81effe674d | ||
|
|
831251bcaa | ||
|
|
f4630f9044 | ||
|
|
dae311ea9d | ||
|
|
4677b46904 | ||
|
|
a4dd2b1916 | ||
|
|
3d117b8964 | ||
|
|
6a083e9561 | ||
|
|
044d359a7e | ||
|
|
f35d4164d6 | ||
|
|
3058f8fd69 | ||
|
|
5129ed215e | ||
|
|
b93079f1c1 | ||
|
|
a1098384c0 | ||
|
|
43bca4df40 | ||
|
|
82269e4b8c | ||
|
|
14e49614e6 | ||
|
|
a221b2807f | ||
|
|
0d66b1cc1c | ||
|
|
1843354d88 | ||
|
|
bd7d1e2f16 | ||
|
|
aff0bbcc32 | ||
|
|
33e009bedb | ||
|
|
f94dc67a43 | ||
|
|
091f63fd4e | ||
|
|
3a4c981e31 | ||
|
|
0d48344f93 | ||
|
|
21ceba6cfd | ||
|
|
f8302c5470 | ||
|
|
7a7e07a57c | ||
|
|
520530dfcf | ||
|
|
31c18b4bc7 | ||
|
|
1ec365de25 | ||
|
|
99f3eabb1b | ||
|
|
32479744f6 | ||
|
|
b68de2330d | ||
|
|
68a6579852 | ||
|
|
798798f7ab | ||
|
|
54e9442a14 | ||
|
|
f7b9f35ce1 | ||
|
|
068e6ce2c9 | ||
|
|
5d4bb4d6f8 | ||
|
|
a05c19682e | ||
|
|
5caa7436d8 | ||
|
|
512a900202 | ||
|
|
ba7b2cc1f6 | ||
|
|
ac73d43444 | ||
|
|
33434a40d7 | ||
|
|
844d69143f | ||
|
|
77275a9b31 | ||
|
|
de10d9be08 | ||
|
|
3c227af508 | ||
|
|
4c1a479a60 | ||
|
|
cc95d251d6 | ||
|
|
1f247cf813 | ||
|
|
c9bb33afc3 | ||
|
|
97fb9d283f | ||
|
|
66016b8499 | ||
|
|
8bbf0293f5 | ||
|
|
87b229d280 | ||
|
|
2a86b3e31d | ||
|
|
436dd6c0a4 | ||
|
|
f6bdefe3f3 | ||
|
|
cd71077c6a | ||
|
|
029b33c650 | ||
|
|
f4f4edf276 | ||
|
|
992ea5802a | ||
|
|
376a629c9f | ||
|
|
303fa37b60 | ||
|
|
ef02414d7e | ||
|
|
bcf83ea792 | ||
|
|
86a27cf16d | ||
|
|
08ae0dd74b | ||
|
|
93f3a7f96a | ||
|
|
7856b1202d | ||
|
|
e5ddbcab7d | ||
|
|
f9bc980b0b | ||
|
|
806754b512 | ||
|
|
4d18df204a | ||
|
|
04b4431bc0 | ||
|
|
dfd494c113 | ||
|
|
57897cc8c2 | ||
|
|
459c8be94f | ||
|
|
5e158b51db | ||
|
|
fbecc18e2e | ||
|
|
b538c5345e | ||
|
|
694208865b | ||
|
|
a75c435245 | ||
|
|
53c8e4263b | ||
|
|
078549518d | ||
|
|
4c844081f3 | ||
|
|
91441c3fb2 | ||
|
|
b152cbe45a | ||
|
|
c08aab90ec | ||
|
|
8d091ec062 | ||
|
|
0376e59520 | ||
|
|
e25fe22f9d | ||
|
|
bef7f6745c | ||
|
|
775919c129 | ||
|
|
702acc06d8 | ||
|
|
b5a1daa756 | ||
|
|
5a47301dbd | ||
|
|
e33d9e77f4 | ||
|
|
aff4208244 | ||
|
|
73dbaefec5 | ||
|
|
05edcde6c9 | ||
|
|
01ccc2cc96 | ||
|
|
cd093a07a3 | ||
|
|
7e450542d9 | ||
|
|
45545e897c | ||
|
|
eccc8109c1 | ||
|
|
2fabcd0455 | ||
|
|
e3ce295215 | ||
|
|
8df59c01d5 | ||
|
|
15f9a83618 | ||
|
|
d572381a37 | ||
|
|
9127001f11 | ||
|
|
742420a5e2 | ||
|
|
f439df4441 | ||
|
|
c92e8940dc | ||
|
|
c68fc4f31a | ||
|
|
0e80e47592 | ||
|
|
54b9311344 | ||
|
|
9387b79b98 | ||
|
|
5c2de3a9ea | ||
|
|
eac5b48da0 | ||
|
|
f89d948c06 | ||
|
|
45a0988833 | ||
|
|
afbb31c05e | ||
|
|
e6af6487e1 | ||
|
|
c0b45fa36f | ||
|
|
cb47595f13 | ||
|
|
c59704a24b | ||
|
|
f2ecfdc96a | ||
|
|
717d409b72 | ||
|
|
6e207c823e | ||
|
|
b69294b6d6 | ||
|
|
6cbaa4787b | ||
|
|
8b66c433c5 | ||
|
|
3329bfa5b2 | ||
|
|
f41f5785bf | ||
|
|
55f148f499 | ||
|
|
2978bb1773 | ||
|
|
0152e12172 | ||
|
|
38d73a4be6 | ||
|
|
34bd04f925 | ||
|
|
17d789a785 | ||
|
|
63a263f542 | ||
|
|
932490d7f1 | ||
|
|
a855abf8c0 | ||
|
|
0d2398aaff | ||
|
|
c17a6ff533 | ||
|
|
c3c7944d79 | ||
|
|
75555585e8 | ||
|
|
28e0003a9a | ||
|
|
2818ce4632 | ||
|
|
52ee796d6d | ||
|
|
0f737f2999 | ||
|
|
6a185e94b9 | ||
|
|
ba0a78da2a | ||
|
|
f0bbcef3a4 | ||
|
|
d7280f82ac | ||
|
|
aa53d0978c | ||
|
|
ffdd8b3afa | ||
|
|
86d249eb16 | ||
|
|
28f74cf1c6 | ||
|
|
83655d5c00 | ||
|
|
63eaac67a6 | ||
|
|
1f7983059a | ||
|
|
51e087fd87 | ||
|
|
679147cd5d | ||
|
|
40eb652cfa | ||
|
|
f4e4ea1374 | ||
|
|
199d67581a | ||
|
|
49bd893a77 | ||
|
|
8729a60c1d | ||
|
|
e4f187cd3d | ||
|
|
f9c706e31b | ||
|
|
c5728291ba | ||
|
|
68d22e78bf | ||
|
|
0bfce7aca4 | ||
|
|
7faa2356d8 | ||
|
|
2a8a293c7c | ||
|
|
f3e8352193 | ||
|
|
ca874ba8c7 | ||
|
|
f274f76607 | ||
|
|
a8b9cefa73 | ||
|
|
b9e4a052b8 | ||
|
|
4a669f5478 | ||
|
|
ade8aab43f | ||
|
|
17d2a9c435 | ||
|
|
6f2347fc71 | ||
|
|
dd245fe8bd | ||
|
|
f12c058b78 | ||
|
|
3cba8778b2 | ||
|
|
1c33c936e6 | ||
|
|
67d67289c7 | ||
|
|
f4ab9f9932 | ||
|
|
b752fe6808 | ||
|
|
114677b747 | ||
|
|
9362b9fdfe | ||
|
|
f48921c256 | ||
|
|
51e0eef11e | ||
|
|
925c2a2ca2 | ||
|
|
f1465b6847 | ||
|
|
5260d70b19 | ||
|
|
339fd9c5a4 | ||
|
|
0f14b92bce | ||
|
|
43d6ad5fda | ||
|
|
667c40c3de | ||
|
|
3b8b8a2ee3 | ||
|
|
6f04ee879c | ||
|
|
e1e76d3f88 | ||
|
|
221aa8968a | ||
|
|
86931f546f | ||
|
|
ae40bb00b3 | ||
|
|
3dd93f5533 | ||
|
|
181dc5d75e | ||
|
|
ae4c4708ad | ||
|
|
34c2e52bd5 | ||
|
|
5cd1fdeb9e | ||
|
|
dbe6de313e | ||
|
|
77c77fbd42 | ||
|
|
9b4054f1fc | ||
|
|
af3911b833 | ||
|
|
4258bf3d54 | ||
|
|
4d1d66d906 | ||
|
|
b727e0be71 | ||
|
|
ea313d0c1e | ||
|
|
c1507eda45 | ||
|
|
ce7496aec9 | ||
|
|
b16c12f67b | ||
|
|
1b24e6ed76 | ||
|
|
52f3833811 | ||
|
|
b1100b5e34 | ||
|
|
ab2c6cb008 | ||
|
|
f2c3f4a944 | ||
|
|
6bc11c4450 | ||
|
|
643c85e9c8 | ||
|
|
ee9950ec2f | ||
|
|
dc10594d7b | ||
|
|
e02fac4968 | ||
|
|
5a88546a80 | ||
|
|
f67d6bbca3 | ||
|
|
c970c4ee41 | ||
|
|
3a6623104f | ||
|
|
b18a2bdcd3 | ||
|
|
d09eaef542 | ||
|
|
13cca8a66a | ||
|
|
8ed2330d6e | ||
|
|
261237745f | ||
|
|
c9d76a381b | ||
|
|
2961afe8fb | ||
|
|
ea03bee1b9 | ||
|
|
d1a96c2543 | ||
|
|
11b1498a6e | ||
|
|
f59500a90b | ||
|
|
3df25fadfa | ||
|
|
0e6a6bf880 | ||
|
|
e1f01305d8 | ||
|
|
23b83cb736 | ||
|
|
e16196124e | ||
|
|
ab2197bc75 | ||
|
|
a887e475e3 | ||
|
|
4400d2fdd9 | ||
|
|
6197a7639a | ||
|
|
91f65cedc8 | ||
|
|
7b85ee4954 | ||
|
|
1af01f5e30 | ||
|
|
3efc0d8681 | ||
|
|
09f2cbfb18 | ||
|
|
88791089ed | ||
|
|
089eb1a099 | ||
|
|
b40dc550ed | ||
|
|
c210984b40 | ||
|
|
455dc072ba | ||
|
|
a851b77ac9 | ||
|
|
e9a2b72ddb | ||
|
|
c0be055541 | ||
|
|
51d7f1264b | ||
|
|
3359b942b3 | ||
|
|
2155ef0208 | ||
|
|
36d6450977 | ||
|
|
02a576a6a0 | ||
|
|
2478b87432 | ||
|
|
e33c714073 | ||
|
|
f4d61ac6d2 | ||
|
|
5c10eff67f | ||
|
|
239dd978ff | ||
|
|
af4cf463f5 | ||
|
|
21c1b8d834 | ||
|
|
16913ba814 | ||
|
|
6bb9c442b2 | ||
|
|
c407921644 | ||
|
|
a1411c36de | ||
|
|
c69fa18434 | ||
|
|
4cb01fe332 | ||
|
|
612a7e76f1 | ||
|
|
bf060387af | ||
|
|
0778d7de80 | ||
|
|
9085c3b73d | ||
|
|
306ba917ea | ||
|
|
1a3a303f8d | ||
|
|
5906268917 | ||
|
|
a1d411a018 | ||
|
|
dbb7e5464b | ||
|
|
11ad64f6cb | ||
|
|
4e87e62d5c | ||
|
|
a5bd095c30 | ||
|
|
b17995a332 | ||
|
|
ce6e8ed8fe | ||
|
|
1755025e7f | ||
|
|
1a4ba4c390 | ||
|
|
0a6ceabb9b | ||
|
|
d71a8fece8 | ||
|
|
5202b7da48 | ||
|
|
1b5a418fd3 | ||
|
|
a11044f789 | ||
|
|
4b2bf41381 | ||
|
|
07d5badfed | ||
|
|
10ee2e0dad | ||
|
|
6500aafcb8 | ||
|
|
6ebdf91b32 | ||
|
|
91cd350b63 | ||
|
|
6ea9642d64 | ||
|
|
65277e47c5 | ||
|
|
9e3c83372f | ||
|
|
809db853fa | ||
|
|
62a20b8a2d | ||
|
|
d0612be402 | ||
|
|
5f8ec0dc8b | ||
|
|
fda4b1106e | ||
|
|
ac43eab51f | ||
|
|
8d0417497b | ||
|
|
90b9f7e08c | ||
|
|
2c404daca6 | ||
|
|
0e271799f2 | ||
|
|
3c0de17133 | ||
|
|
bd1f2ccaf8 | ||
|
|
ec491b023f | ||
|
|
f191bff0b9 | ||
|
|
1a04da864f | ||
|
|
c8c975c99b | ||
|
|
a617d52374 | ||
|
|
624474386a |
19
.bra.toml
19
.bra.toml
@@ -1,19 +0,0 @@
|
||||
[run]
|
||||
init_cmds = [
|
||||
["make", "build-dev"],
|
||||
["./gogs", "web"]
|
||||
]
|
||||
watch_all = true
|
||||
watch_dirs = [
|
||||
"$WORKDIR/cmd",
|
||||
"$WORKDIR/models",
|
||||
"$WORKDIR/pkg",
|
||||
"$WORKDIR/routers"
|
||||
]
|
||||
watch_exts = [".go"]
|
||||
ignore_files = [".+_test.go"]
|
||||
build_delay = 1500
|
||||
cmds = [
|
||||
["make", "build-dev"], # TAGS=sqlite cert pam tidb
|
||||
["./gogs", "web"]
|
||||
]
|
||||
13
.claude/commands/ghsa.md
Normal file
13
.claude/commands/ghsa.md
Normal file
@@ -0,0 +1,13 @@
|
||||
Analyze and help fix the GitHub Security Advisory (GHSA) at: $ARGUMENTS
|
||||
|
||||
Steps:
|
||||
1. Fetch the GHSA page using `gh api repos/gogs/gogs/security-advisories` and understand the vulnerability details (description, severity, affected versions, CWE).
|
||||
2. Verify the reported vulnerability actually exists, and why.
|
||||
3. Identify the affected code in this repository.
|
||||
4. Propose a fix with a clear explanation of the root cause and how the fix addresses it. Check for prior art in the codebase to stay consistent with existing patterns.
|
||||
5. Implement the fix. Only add tests when there is something meaningful to test at our layer.
|
||||
6. Run all the usual build and test commands.
|
||||
7. If a changelog entry is warranted (user will specify), add it to CHANGELOG.md with a placeholder for the PR link.
|
||||
8. Create a branch named after the GHSA ID, commit, and push.
|
||||
9. Create a pull request with a proper title and description, do not reveal too much detail and link the GHSA.
|
||||
10. If a changelog entry was added, update it with the PR link, then commit and push again.
|
||||
@@ -1,7 +0,0 @@
|
||||
conf/**
|
||||
docker/**
|
||||
modules/bindata/**
|
||||
packager/**
|
||||
public/**
|
||||
scripts/**
|
||||
templates/**
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"GOLANG": {
|
||||
"TOTAL_LOC": [500, 999, 1999, 9999],
|
||||
"TOO_MANY_FUNCTIONS": [50, 99, 199, 999],
|
||||
"TOO_MANY_IVARS": [20, 50, 70, 99]
|
||||
}
|
||||
}
|
||||
26
.deepsource.toml
Normal file
26
.deepsource.toml
Normal file
@@ -0,0 +1,26 @@
|
||||
version = 1
|
||||
|
||||
exclude_patterns = ["**/mocks_test.go"]
|
||||
|
||||
[[analyzers]]
|
||||
name = "docker"
|
||||
enabled = true
|
||||
|
||||
[[analyzers]]
|
||||
name = "shell"
|
||||
enabled = true
|
||||
|
||||
[[analyzers]]
|
||||
name = "go"
|
||||
enabled = true
|
||||
|
||||
[analyzers.meta]
|
||||
import_root = "github.com/gogs/gogs"
|
||||
|
||||
[[transformers]]
|
||||
name = "gofumpt"
|
||||
enabled = true
|
||||
|
||||
[[transformers]]
|
||||
name = "gofmt"
|
||||
enabled = true
|
||||
@@ -1,17 +1,15 @@
|
||||
.git
|
||||
.git/**
|
||||
packager
|
||||
packager/**
|
||||
.packager
|
||||
.packager/**
|
||||
scripts
|
||||
scripts/**
|
||||
.github/
|
||||
.github/**
|
||||
config.codekit
|
||||
.dockerignore
|
||||
*.yml
|
||||
*.md
|
||||
.bra.toml
|
||||
.editorconfig
|
||||
.gitignore
|
||||
Dockerfile*
|
||||
gogs
|
||||
|
||||
!Taskfile.yml
|
||||
|
||||
@@ -4,7 +4,6 @@ root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
@@ -16,10 +15,9 @@ indent_size = 4
|
||||
indent_style = tab
|
||||
indent_size = 2
|
||||
|
||||
[*.{less,yml}]
|
||||
[*.{less, yml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.js]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
indent_size = 2
|
||||
|
||||
18
.gitattributes
vendored
18
.gitattributes
vendored
@@ -1,10 +1,8 @@
|
||||
conf/gitignore/* linguist-vendored
|
||||
conf/license/* linguist-vendored
|
||||
public/assets/* linguist-vendored
|
||||
public/plugins/* linguist-vendored
|
||||
public/css/themes/* linguist-vendored
|
||||
public/css/github.min.css linguist-vendored
|
||||
public/css/semantic-2.2.10.min.css linguist-vendored
|
||||
public/js/libs/* linguist-vendored
|
||||
public/js/jquery-1.11.3.min.js linguist-vendored
|
||||
public/js/semantic-2.2.10.min.js linguist-vendored
|
||||
conf/gitignore/** linguist-vendored
|
||||
conf/license/** linguist-vendored
|
||||
public/assets/** linguist-vendored
|
||||
public/plugins/** linguist-vendored
|
||||
public/css/themes/** linguist-vendored
|
||||
public/css/semantic-* linguist-vendored
|
||||
public/js/libs/** linguist-vendored
|
||||
public/js/semantic-* linguist-vendored
|
||||
|
||||
2
.github/CODEOWNERS
vendored
Normal file
2
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# Default
|
||||
* @unknwon
|
||||
89
.github/CONTRIBUTING.md
vendored
89
.github/CONTRIBUTING.md
vendored
@@ -1,63 +1,78 @@
|
||||
# Contributing to Gogs
|
||||
# Welcome to Gogs contributing guide
|
||||
|
||||
> This guidelines sheet is forked from [CONTRIBUTING.md](https://github.com/drone/drone/blob/8d9c7cee56d6c2eac81dc156ce27be6716d97e68/CONTRIBUTING.md).
|
||||
Thank you for investing your time in contributing to our projects!
|
||||
|
||||
Gogs is not perfect, and it has bugs or incomplete features in rare cases. You're welcome to tell us, or to contribute some code. This document describes details about how can you contribute to Gogs project.
|
||||
Read our [Code of Conduct](https://go.dev/conduct) to keep our community approachable and respectable.
|
||||
|
||||
## Contribution guidelines
|
||||
In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR.
|
||||
|
||||
Depends on the situation, you will:
|
||||
Use the table of contents icon <img src="https://github.com/github/docs/raw/50561895328b8f369694973252127b7d93899d83/assets/images/table-of-contents.png" width="25" height="25" /> on the top left corner of this document to get to a specific section of this guide quickly.
|
||||
|
||||
- Find a bug and create an issue
|
||||
- Need more functionality and make a feature request
|
||||
- Want to contribute code and open a pull request
|
||||
- Run into issue and need help
|
||||
## New contributor guide
|
||||
|
||||
### Bug Report
|
||||
To get an overview of the project, read the [README](/README.md). Here are some resources to help you get started with open source contributions:
|
||||
|
||||
If you find something you consider a bug, please create a issue on [GitHub](https://github.com/gogits/gogs/issues). To avoid wasting time and reduce back-and-forth communication with team members, please include at least the following information in a form comfortable for you:
|
||||
- [Finding ways to contribute to open source on GitHub](https://docs.github.com/en/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github)
|
||||
- [Set up Git](https://docs.github.com/en/get-started/quickstart/set-up-git)
|
||||
- [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow)
|
||||
- [Collaborating with pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests)
|
||||
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
|
||||
- [Talk, then code](https://www.craft.do/s/kyHVs6OoE4Dj5V)
|
||||
|
||||
- Bug Description
|
||||
- Gogs Version
|
||||
- Git Version
|
||||
- System Type
|
||||
- Error Log
|
||||
- Other information
|
||||
In addition to the general guides with open source contributions, you would also need to:
|
||||
|
||||
Please take a moment to check that an issue on [GitHub](https://github.com/gogits/gogs/issues) doesn't already exist documenting your bug report or improvement proposal. If it does, it never hurts to add a quick "+1" or "I have this problem too". This will help prioritize the most common problems and requests.
|
||||
- Have basic knowledge about web applications development, database management systems and programming in [Go](https://go.dev/).
|
||||
- Have a working local development setup with a reasonable good IDE or editor like [Visual Studio Code](https://code.visualstudio.com/docs/languages/go), [GoLand](https://www.jetbrains.com/go/) or [Vim](https://github.com/fatih/vim-go).
|
||||
- [Set up your development environment](/docs/dev/local_development.md).
|
||||
|
||||
#### Bug Report Example
|
||||
## Issues
|
||||
|
||||
Gogs crashed when creating a repository with a license, using v0.5.13.0207, SQLite3, Git 1.9.0, Ubuntu 12.04.
|
||||
### Ask for help
|
||||
|
||||
Error log:
|
||||
Before opening an issue, please make sure the problem you're encountering isn't already addressed on the [Troubleshooting](https://gogs.io/asking/troubleshooting) and [FAQs](https://gogs.io/asking/faq) pages.
|
||||
|
||||
```
|
||||
2014/09/01 07:21:49 [E] nil pointer
|
||||
```
|
||||
### Create a new issue
|
||||
|
||||
### Feature Request
|
||||
- For questions, ask in [Discussions](https://github.com/gogs/gogs/discussions).
|
||||
- [Check to make sure](https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-issues-and-pull-requests#search-by-the-title-body-or-comments) someone hasn't already opened a similar [issue](https://github.com/gogs/gogs/issues).
|
||||
- If a similar issue doesn't exist, open a new issue using a relevant [issue form](https://github.com/gogs/gogs/issues/new/choose).
|
||||
- Blank issues that are not coming from maintainers will be closed without a response.
|
||||
|
||||
There is no standard form of making a feature request. Just try to describe the feature as clearly as possible, because team members may not have experience with the functionality you're talking about.
|
||||
### Pick up an issue to solve
|
||||
|
||||
### Pull Request
|
||||
- Scan through our [existing issues](https://github.com/gogs/gogs/issues) to find one that interests you.
|
||||
- The [👋 good first issue](https://github.com/gogs/gogs/issues?q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%91%8B+good+first+issue%22) is a good place to start exploring issues that are well-groomed for newcomers.
|
||||
- Do not hesitate to ask for more details or clarifying questions on the issue!
|
||||
- Communicate on the issue you are intended to pick up _before_ starting working on it.
|
||||
- Every issue that gets picked up will have an expected timeline for the implementation, the issue may be reassigned after the expected timeline. Please be responsible and proactive on the communication 🙇♂️
|
||||
|
||||
Please read detailed information on [Wiki](https://github.com/gogits/gogs/wiki/Contributing-Code).
|
||||
## Add new features or make big changes
|
||||
|
||||
### Ask For Help
|
||||
New features or big changes require proposals before we may be able to accept any contribution. Proposals should be posted to the [Discussions - Proposal](https://github.com/gogs/gogs/discussions/categories/proposal) category for review and discussions. GitHub Discussions provides sub-threading which is much more suitable than GitHub Issues for discussions to happen. Please read [Write a proposal for open source contributions](https://unknwon.io/posts/220210-write-a-proposal-for-open-source-contributions/) to begin with.
|
||||
|
||||
Before opening an issue, please make sure your problem isn't already addressed on the [Troubleshooting](https://gogs.io/docs/intro/troubleshooting.html) and [FAQs](https://gogs.io/docs/intro/faqs.html) pages.
|
||||
## Pull requests
|
||||
|
||||
## Code of conduct
|
||||
When you're finished with the changes, create a pull request, or a series of pull requests if necessary.
|
||||
|
||||
As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
|
||||
Contributing to another codebase is not as simple as code changes, it is also about contributing influence to the design. Therefore, we kindly ask you that:
|
||||
|
||||
We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, age, or religion.
|
||||
- Please acknowledge that no pull request is guaranteed to be merged.
|
||||
- Please always do a self-review before requesting reviews from others.
|
||||
- Please expect code review to be strict and may have multiple rounds.
|
||||
- Please make self-contained incremental changes, pull requests with huge diff may be rejected for review.
|
||||
- Please use English in code comments and docstring.
|
||||
- Please do not force push unless absolutely necessary. Force pushes make review much harder in multiple rounds, and we use [Squash and merge](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#squash-and-merge-your-pull-request-commits) so you don't need to worry about messy commits and just focus on the changes.
|
||||
|
||||
Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
|
||||
### Things we do not accept
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.
|
||||
1. Updates to locale files (`conf/locale_xx-XX.ini`) other than the `conf/locale_en-US.ini`. Please read the [guide for localizing Gogs](https://gogs.io/advancing/localization).
|
||||
1. Docker compose files.
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior can be reported by emailing u@gogs.io
|
||||
### Coding guidelines
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant](http:contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
|
||||
1. Please read the Sourcegraph's [Go style guide](https://github.com/sourcegraph/sourcegraph-public-snapshot/blob/main/doc/dev/background-information/languages/go.md).
|
||||
1. **NO** direct modifications to `.css` files, `.css` files are all generated by `.less` files. You can regenerate `.css` files by executing `task less`.
|
||||
|
||||
## Your PR is merged!
|
||||
|
||||
Congratulations 🎉🎉 Thanks again for taking the effort to have this journey with us 🌟
|
||||
|
||||
26
.github/ISSUE_TEMPLATE.md
vendored
26
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,26 +0,0 @@
|
||||
The issue will be closed without any reasons if it does not satisfy any of following requirements:
|
||||
|
||||
1. Please speak English, we have forum in [Chinese](https://discuss.gogs.io/c/getting-help/getting-help-chinese).
|
||||
2. Please post questions or config/deploy problems on our forum: https://discuss.gogs.io, here are bugs and feature requests only.
|
||||
3. Please take a moment to search that an issue doesn't already exist.
|
||||
4. Please give all relevant information below for bug reports; incomplete details considered invalid report.
|
||||
|
||||
**You MUST delete above content including this line before posting; too lazy to take this action considered invalid report.**
|
||||
|
||||
- Gogs version (or commit ref):
|
||||
- Git version:
|
||||
- Operating system:
|
||||
- Database (use `[x]`):
|
||||
- [ ] PostgreSQL
|
||||
- [ ] MySQL
|
||||
- [ ] MSSQL
|
||||
- [ ] SQLite
|
||||
- Can you reproduce the bug at https://try.gogs.io:
|
||||
- [ ] Yes (provide example URL)
|
||||
- [ ] No
|
||||
- [ ] Not relevant
|
||||
- Log gist (usually found in `log/gogs.log`):
|
||||
|
||||
## Description
|
||||
|
||||
...
|
||||
82
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
82
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
name: Bug report
|
||||
description: File a bug report to help us improve
|
||||
labels: ["\U0001F48A bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this bug report!
|
||||
|
||||
- Please use English :)
|
||||
- For questions, ask in [Discussions](https://github.com/gogs/gogs/discussions).
|
||||
- Before you file an issue read the [Contributing guide](https://github.com/gogs/gogs/blob/main/.github/CONTRIBUTING.md).
|
||||
- Check to make sure someone hasn't already opened a similar [issue](https://github.com/gogs/gogs/issues).
|
||||
- type: input
|
||||
attributes:
|
||||
label: Gogs version
|
||||
description: |
|
||||
Please specify the exact Gogs version you're reporting for, e.g. "0.12.3". You can find the version information in the admin dashboard (`/admin`).
|
||||
|
||||
_Note that "gogs/gogs:latest" is not a Gogs version, it does not mean anything._
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Git version
|
||||
description: |
|
||||
Please specify the exact Git version you're using of both server and client. You can find the version information by running `git version`.
|
||||
value: |
|
||||
- Server:
|
||||
- Client:
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: Operating system
|
||||
description: |
|
||||
Please specify the exact operating system name and version you're reporting for, e.g. "Windows 10", "CentOS 7", "Ubuntu 20.04".
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: Database
|
||||
description: |
|
||||
Please specify the exact database and version you're reporting for, e.g. "PostgreSQL 9.6", "MySQL 5.7", "SQLite 3".
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: A clear and concise description of what the bug is.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: To reproduce
|
||||
description: The steps to reproduce the problem described above.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: A clear and concise description of what you expected to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: |
|
||||
Links? References? Suggestions? Anything that will give us more context about the issue you are encountering!
|
||||
|
||||
Please include any error logs found in the `log/gogs.log` file. Otherwise, we probably won't be able to help you much.
|
||||
|
||||
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||
validations:
|
||||
required: false
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: By submitting this issue, you agree to follow our [Code of Conduct](https://go.dev/conduct)
|
||||
options:
|
||||
- label: I agree to follow this project's Code of Conduct
|
||||
required: true
|
||||
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Ask questions
|
||||
url: https://github.com/gogs/gogs/discussions
|
||||
about: Please ask questions in Discussions.
|
||||
- name: Make a proposal
|
||||
url: https://github.com/gogs/gogs/discussions/categories/proposal
|
||||
about: Please make proposals in Discussions.
|
||||
46
.github/ISSUE_TEMPLATE/dev_release_minor_version.md
vendored
Normal file
46
.github/ISSUE_TEMPLATE/dev_release_minor_version.md
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
name: "Dev: Release a minor version"
|
||||
about: ONLY USED BY MAINTAINERS.
|
||||
assignees: "unknwon"
|
||||
title: "Release [VERSION]"
|
||||
labels: 📸 release
|
||||
---
|
||||
|
||||
_This is generated from the [minor release template](https://github.com/gogs/gogs/blob/main/.github/ISSUE_TEMPLATE/dev_release_minor_version.md)._
|
||||
|
||||
## Before release
|
||||
|
||||
On the `main` branch:
|
||||
|
||||
- [ ] Close stale issues with the label [status: needs feedback](https://github.com/gogs/gogs/issues?q=is%3Aissue+is%3Aopen+label%3A%22status%3A+needs+feedback%22).
|
||||
- [ ] [Sync locales from Crowdin](https://github.com/gogs/gogs/blob/main/docs/dev/import_locale.md).
|
||||
- [ ] [Update CHANGELOG](https://github.com/gogs/gogs/commit/f1102a7a7c545ec221d2906f02fa19170d96f96d) to include entries for the current minor release.
|
||||
- Do not forget adding entries for GHSA patches.
|
||||
- [ ] Cut a new release branch `release/<MAJOR>.<MINOR>`, e.g. `release/0.14`.
|
||||
|
||||
## During release
|
||||
|
||||
On the release branch:
|
||||
|
||||
- [ ] [Update the hard-coded version](https://github.com/gogs/gogs/commit/f0e3cd90f8d7695960eeef2e4e54b2e717302f6c) to the current release, e.g. `0.14.0+dev` -> `0.14.0`.
|
||||
- [ ] Wait for GitHub Actions to complete and no failed jobs.
|
||||
- [ ] Publish new RC releases (e.g. `v0.14.0-rc.1`, `v0.14.0-rc.2`) ⚠️ **on the release branch** ⚠️ and ensure Docker and release workflows both succeed.
|
||||
- [ ] Pull down the Docker image and [run through application setup](https://github.com/gogs/gogs/blob/main/docker/README.md) to make sure nothing blows up.
|
||||
- [ ] Download one of the release archives and run through application setup to make sure nothing blows up.
|
||||
- [ ] Publish a new [GitHub release](https://github.com/gogs/gogs/releases) ⚠️ **on the release branch** ⚠️ with entries from [CHANGELOG](https://github.com/gogs/gogs/blob/main/CHANGELOG.md) for the current minor release.
|
||||
- [ ] [Wait for new image tags for the current release](https://github.com/gogs/gogs/actions/workflows/docker.yml?query=event%3Arelease) to be created automatically on both [Docker Hub](https://hub.docker.com/r/gogs/gogs/tags) and [GitHub Container registry](https://github.com/gogs/gogs/pkgs/container/gogs).
|
||||
- Pull down the Docker image and [run through application setup](https://github.com/gogs/gogs/blob/main/docker/README.md) to make sure nothing blows up.
|
||||
- [ ] Download all release archives and [generate SHA256 checksum](https://github.com/gogs/gogs/blob/main/docs/dev/release/sha256.sh) for all binaries to the file `checksum_sha256.txt`.
|
||||
- [ ] Upload all archives and `checksum_sha256.txt` to https://dl.gogs.io.
|
||||
|
||||
## After release
|
||||
|
||||
On the `main` branch:
|
||||
|
||||
- [ ] Update the repository mirror on [Gitee](https://gitee.com/unknwon/gogs).
|
||||
- [ ] Create a new release announcement in [Discussions](https://github.com/gogs/gogs/discussions/categories/announcements).
|
||||
- [ ] Send a tweet on the [official Twitter account](https://twitter.com/GogsHQ) for the minor release.
|
||||
- [ ] Close the milestone for the minor release.
|
||||
- [ ] [Bump the hard-coded version](https://github.com/gogs/gogs/commit/a98968436cd5841cf691bb0b80c54c81470d1676) to the new develop version, e.g. `0.14.0+dev` -> `0.15.0+dev`.
|
||||
- [ ] Run `task legacy` to identify deprecated code that is aimed to be removed in current develop version.
|
||||
- [ ] **After 14 days**, publish [GitHub security advisories](https://github.com/gogs/gogs/security) for security patches included in the release.
|
||||
49
.github/ISSUE_TEMPLATE/dev_release_patch_version.md
vendored
Normal file
49
.github/ISSUE_TEMPLATE/dev_release_patch_version.md
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
name: "Dev: Release a patch version"
|
||||
about: ONLY USED BY MAINTAINERS.
|
||||
assignees: "unknwon"
|
||||
title: "Release [VERSION]"
|
||||
labels: 📸 release
|
||||
---
|
||||
|
||||
_This is generated from the [patch release template](https://github.com/gogs/gogs/blob/main/.github/ISSUE_TEMPLATE/dev_release_patch_version.md)._
|
||||
|
||||
## Before release
|
||||
|
||||
On the release branch:
|
||||
|
||||
- [ ] Make sure all commits are cherry-picked from the `main` branch by checking the patch milestone.
|
||||
- Run `task build` for every cherry-picked commit to make sure there is no compilation error.
|
||||
- [ ] [Update CHANGELOG on the `main` branch](https://github.com/gogs/gogs/commit/f1102a7a7c545ec221d2906f02fa19170d96f96d) to include entries for the current patch release.
|
||||
|
||||
## During release
|
||||
|
||||
On the release branch:
|
||||
|
||||
- [ ] [Update the hard-coded version](https://github.com/gogs/gogs/commit/f0e3cd90f8d7695960eeef2e4e54b2e717302f6c) to the current release, e.g. `0.12.0` -> `0.12.1`.
|
||||
- [ ] Wait for GitHub Actions to complete and no failed jobs.
|
||||
- [ ] Publish new RC releases in [GitHub release](https://github.com/gogs/gogs/releases) (e.g. `v0.12.0-rc.1`, `v0.12.0-rc.2`) ⚠️ **on the release branch** ⚠️ and ensure Docker workflow succeeds.
|
||||
- [ ] Pull down the Docker image and [run through application setup](https://github.com/gogs/gogs/blob/main/docker/README.md) to make sure nothing blows up.
|
||||
- [ ] Download one of the release archives and run through application setup to make sure nothing blows up.
|
||||
- [ ] Publish a new [GitHub release](https://github.com/gogs/gogs/releases) ⚠️ **on the release branch** ⚠️ with entries from [CHANGELOG](https://github.com/gogs/gogs/blob/main/CHANGELOG.md) for the current patch release and all previous releases with same minor version.
|
||||
- [ ] Update all previous GitHub releases with same minor version with the warning:
|
||||
```
|
||||
**ℹ️ Heads up! There is a new patch release [0.12.1](https://github.com/gogs/gogs/releases/tag/v0.12.1) available, we recommend directly installing or upgrading to that version.**
|
||||
```
|
||||
- [ ] [Wait for new image tags for the current release](https://github.com/gogs/gogs/actions/workflows/docker.yml?query=event%3Arelease) to be created automatically on both [Docker Hub](https://hub.docker.com/r/gogs/gogs/tags) and [GitHub Container registry](https://github.com/gogs/gogs/pkgs/container/gogs).
|
||||
- Pull down the Docker image and [run through application setup](https://github.com/gogs/gogs/blob/main/docker/README.md) to make sure nothing blows up.
|
||||
- [ ] Download all release archives and [generate SHA256 checksum](https://github.com/gogs/gogs/blob/main/docs/dev/release/sha256.sh) for all binaries to the file `checksum_sha256.txt`.
|
||||
- [ ] Upload all archives and `checksum_sha256.txt` to https://dl.gogs.io.
|
||||
|
||||
## After release
|
||||
|
||||
On the `main` branch:
|
||||
|
||||
- [ ] Post the following message on issues that are included in the patch milestone:
|
||||
```
|
||||
The <MAJOR>.<MINOR>.<PATCH> has been released that includes the patch of the reported issue.
|
||||
```
|
||||
- [ ] Create a new release announcement in [Discussions](https://github.com/gogs/gogs/discussions/categories/announcements).
|
||||
- [ ] Send a tweet on the [official Twitter account](https://twitter.com/GogsHQ) for the patch release.
|
||||
- [ ] Close the milestone for the patch release.
|
||||
- [ ] **After 14 days**, publish [GitHub security advisories](https://github.com/gogs/gogs/security) for security patches included in the release.
|
||||
32
.github/ISSUE_TEMPLATE/documentation.yml
vendored
Normal file
32
.github/ISSUE_TEMPLATE/documentation.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
name: Improve documentation
|
||||
description: Suggest an idea or a patch for documentation
|
||||
labels: ["📖 documentation"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this form!
|
||||
|
||||
- Please use English :)
|
||||
- For questions, ask in [Discussions](https://github.com/gogs/gogs/discussions).
|
||||
- Before you file an issue read the [Contributing guide](https://github.com/gogs/gogs/blob/main/.github/CONTRIBUTING.md).
|
||||
- Check to make sure someone hasn't already opened a similar [issue](https://github.com/gogs/gogs/issues).
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What needs to be improved? Please describe
|
||||
description: A clear and concise description of what is wrong or missing.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Why do you think it is important?
|
||||
description: A clear and concise explanation of the rationale.
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: By submitting this issue, you agree to follow our [Code of Conduct](https://go.dev/conduct)
|
||||
options:
|
||||
- label: I agree to follow this project's Code of Conduct
|
||||
required: true
|
||||
47
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
47
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
name: Feature request
|
||||
description: Suggest an idea for this project
|
||||
labels: ["\U0001F3AF feature"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this form!
|
||||
|
||||
- Please use English :)
|
||||
- For questions, ask in [Discussions](https://github.com/gogs/gogs/discussions).
|
||||
- Before you file an issue read the [Contributing guide](https://github.com/gogs/gogs/blob/main/.github/CONTRIBUTING.md).
|
||||
- Check to make sure someone hasn't already opened a similar [issue](https://github.com/gogs/gogs/issues).
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the feature
|
||||
description: A clear and concise description of what the feature is, e.g. I think it is reasonable to have [...]
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the solution you'd like
|
||||
description: A clear and concise description of what you want to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe alternatives you've considered
|
||||
description: A clear and concise description of any alternative solutions or features you've considered.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: |
|
||||
Links? References? Suggestions? Anything that will give us more context about the feature you are requesting!
|
||||
|
||||
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||
validations:
|
||||
required: false
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: By submitting this issue, you agree to follow our [Code of Conduct](https://go.dev/conduct)
|
||||
options:
|
||||
- label: I agree to follow this project's Code of Conduct
|
||||
required: true
|
||||
9
.github/PULL_REQUEST_TEMPLATE.md
vendored
9
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,9 +0,0 @@
|
||||
The pull request will be closed without any reasons if it does not satisfy any of following requirements:
|
||||
|
||||
1. Please make sure you are targeting the `develop` branch.
|
||||
2. Please read contributing guidelines:
|
||||
https://github.com/gogits/gogs/wiki/Contributing-Code
|
||||
3. Please describe what your pull request does and which issue you're targeting
|
||||
4. ... if it is not related to any particular issues, explain why we should not reject your pull request.
|
||||
|
||||
**You MUST delete above content including this line before posting; too lazy to take this action considered invalid pull request.**
|
||||
9
.github/dependabot.yml
vendored
Normal file
9
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
# Docs: https://git.io/JCUAY
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "gomod"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
commit-message:
|
||||
prefix: "mod:"
|
||||
16
.github/pull_request_template.md
vendored
Normal file
16
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
## Describe the pull request
|
||||
|
||||
A clear and concise description of what the pull request is about, i.e. what problem should be fixed?
|
||||
|
||||
Link to the issue: <!-- paste the issue link here, or put "n/a" if not applicable -->
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] I agree to follow the [Code of Conduct](https://go.dev/conduct) by submitting this pull request.
|
||||
- [ ] I have read and acknowledge the [Contributing guide](https://github.com/gogs/gogs/blob/main/.github/CONTRIBUTING.md).
|
||||
- [ ] I have added test cases to cover the new code or have provided the test plan. (if applicable)
|
||||
- [ ] I have added an entry to [CHANGELOG](https://github.com/gogs/gogs/blob/main/CHANGELOG.md). (if applicable)
|
||||
|
||||
## Test plan
|
||||
|
||||
<!-- Please provide concrete but concise steps to proof things are working as stated, see an example in https://github.com/gogs/gogs/pull/7345 -->
|
||||
75
.github/workflows/codeql.yml
vendored
Normal file
75
.github/workflows/codeql.yml
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/codeql.yml'
|
||||
schedule:
|
||||
- cron: '0 19 * * 0'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'go' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@fdbfb4d2750291e159f0156def62b853c2798ca2 # v3.28.3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@fdbfb4d2750291e159f0156def62b853c2798ca2 # v3.28.3
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@fdbfb4d2750291e159f0156def62b853c2798ca2 # v3.28.3
|
||||
26
.github/workflows/digitalocean_gc.yml
vendored
Normal file
26
.github/workflows/digitalocean_gc.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
name: DigitalOcean
|
||||
on:
|
||||
workflow_dispatch:
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
garbage-collection:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Install doctl
|
||||
uses: digitalocean/action-doctl@5727c67aa3c2c34ae9462d5a0ecfea8a1b31e5ce # v2
|
||||
with:
|
||||
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
|
||||
- name: Run garbage collection
|
||||
run: |
|
||||
# --force: Required for CI to skip confirmation prompts
|
||||
# --include-untagged-manifests: Deletes unreferenced manifests to maximize space
|
||||
doctl registry garbage-collection start --force --include-untagged-manifests
|
||||
- name: Send email on failure
|
||||
uses: unknwon/send-email-on-failure@89339a1bc93f4ad1d30f3b7e4911fcba985c9adb # v1
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
smtp_username: ${{ secrets.SMTP_USERNAME }}
|
||||
smtp_password: ${{ secrets.SMTP_PASSWORD }}
|
||||
402
.github/workflows/docker.yml
vendored
Normal file
402
.github/workflows/docker.yml
vendored
Normal file
@@ -0,0 +1,402 @@
|
||||
name: Docker
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
paths:
|
||||
- '.trivy.yaml'
|
||||
- 'Dockerfile'
|
||||
- 'Dockerfile.next'
|
||||
- 'docker/**'
|
||||
- 'docker-next/**'
|
||||
- '.github/workflows/docker.yml'
|
||||
release:
|
||||
types: [ published ]
|
||||
|
||||
jobs:
|
||||
buildx:
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository == 'gogs/gogs' }}
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
packages: write
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
|
||||
- name: Inspect builder
|
||||
run: |
|
||||
echo "Name: ${{ steps.buildx.outputs.name }}"
|
||||
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
|
||||
echo "Status: ${{ steps.buildx.outputs.status }}"
|
||||
echo "Flags: ${{ steps.buildx.outputs.flags }}"
|
||||
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Login to GitHub Container registry
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push images
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
push: true
|
||||
tags: |
|
||||
gogs/gogs:latest
|
||||
ghcr.io/gogs/gogs:latest
|
||||
- name: Scan for container vulnerabilities
|
||||
uses: aquasecurity/trivy-action@b6643a29fecd7f34b3597bc6acb0a98b03d33ff8 # 0.33.1
|
||||
with:
|
||||
image-ref: gogs/gogs:latest
|
||||
exit-code: '1'
|
||||
- name: Send email on failure
|
||||
uses: unknwon/send-email-on-failure@89339a1bc93f4ad1d30f3b7e4911fcba985c9adb # v1
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
smtp_username: ${{ secrets.SMTP_USERNAME }}
|
||||
smtp_password: ${{ secrets.SMTP_PASSWORD }}
|
||||
|
||||
buildx-next:
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository == 'gogs/gogs' }}
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-next-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
packages: write
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
|
||||
- name: Inspect builder
|
||||
run: |
|
||||
echo "Name: ${{ steps.buildx.outputs.name }}"
|
||||
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
|
||||
echo "Status: ${{ steps.buildx.outputs.status }}"
|
||||
echo "Flags: ${{ steps.buildx.outputs.flags }}"
|
||||
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Login to GitHub Container registry
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Login to DigitalOcean Container registry
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
registry: registry.digitalocean.com
|
||||
username: ${{ secrets.DIGITALOCEAN_USERNAME }}
|
||||
password: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
|
||||
- name: Build and push next-gen images
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||
with:
|
||||
context: .
|
||||
file: Dockerfile.next
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
push: true
|
||||
tags: |
|
||||
gogs/gogs:next-latest
|
||||
ghcr.io/gogs/gogs:next-latest
|
||||
registry.digitalocean.com/gogs/gogs:next-latest
|
||||
- name: Scan for container vulnerabilities
|
||||
uses: aquasecurity/trivy-action@b6643a29fecd7f34b3597bc6acb0a98b03d33ff8 # 0.33.1
|
||||
with:
|
||||
image-ref: gogs/gogs:next-latest
|
||||
exit-code: '1'
|
||||
- name: Send email on failure
|
||||
uses: unknwon/send-email-on-failure@89339a1bc93f4ad1d30f3b7e4911fcba985c9adb # v1
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
smtp_username: ${{ secrets.SMTP_USERNAME }}
|
||||
smtp_password: ${{ secrets.SMTP_PASSWORD }}
|
||||
|
||||
deploy-demo:
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository == 'gogs/gogs' }}
|
||||
needs: buildx-next
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Configure kubectl
|
||||
run: |
|
||||
mkdir -p ~/.kube
|
||||
echo "${KUBECONFIG}" | base64 -d > ~/.kube/config
|
||||
env:
|
||||
KUBECONFIG: ${{ secrets.DIGITALOCEAN_K8S_CLUSTER_KUBECONFIG }}
|
||||
- name: Restart gogs-demo deployment
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
set -ex
|
||||
kubectl rollout restart deployment gogs-demo -n gogs
|
||||
kubectl rollout status deployment gogs-demo -n gogs
|
||||
- name: Send email on failure
|
||||
uses: unknwon/send-email-on-failure@89339a1bc93f4ad1d30f3b7e4911fcba985c9adb # v1
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
smtp_username: ${{ secrets.SMTP_USERNAME }}
|
||||
smtp_password: ${{ secrets.SMTP_PASSWORD }}
|
||||
|
||||
buildx-pull-request:
|
||||
if: ${{ github.event_name == 'pull_request'}}
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
|
||||
with:
|
||||
config-inline: |
|
||||
[worker.oci]
|
||||
max-parallelism = 2
|
||||
- name: Inspect builder
|
||||
run: |
|
||||
echo "Name: ${{ steps.buildx.outputs.name }}"
|
||||
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
|
||||
echo "Status: ${{ steps.buildx.outputs.status }}"
|
||||
echo "Flags: ${{ steps.buildx.outputs.flags }}"
|
||||
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
|
||||
- name: Compute short commit SHA
|
||||
id: short-sha
|
||||
uses: benjlevesque/short-sha@599815c8ee942a9616c92bcfb4f947a3b670ab0b # v3.0
|
||||
- name: Build and push images
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64
|
||||
push: true
|
||||
tags: |
|
||||
ttl.sh/gogs/gogs-${{ steps.short-sha.outputs.sha }}:7d
|
||||
- name: Scan for container vulnerabilities
|
||||
uses: aquasecurity/trivy-action@b6643a29fecd7f34b3597bc6acb0a98b03d33ff8 # 0.33.1
|
||||
with:
|
||||
image-ref: ttl.sh/gogs/gogs-${{ steps.short-sha.outputs.sha }}:7d
|
||||
exit-code: '1'
|
||||
|
||||
buildx-next-pull-request:
|
||||
if: ${{ github.event_name == 'pull_request'}}
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
|
||||
with:
|
||||
config-inline: |
|
||||
[worker.oci]
|
||||
max-parallelism = 2
|
||||
- name: Inspect builder
|
||||
run: |
|
||||
echo "Name: ${{ steps.buildx.outputs.name }}"
|
||||
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
|
||||
echo "Status: ${{ steps.buildx.outputs.status }}"
|
||||
echo "Flags: ${{ steps.buildx.outputs.flags }}"
|
||||
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
|
||||
- name: Compute short commit SHA
|
||||
id: short-sha
|
||||
uses: benjlevesque/short-sha@599815c8ee942a9616c92bcfb4f947a3b670ab0b # v3.0
|
||||
- name: Build and push next-gen images
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||
with:
|
||||
context: .
|
||||
file: Dockerfile.next
|
||||
platforms: linux/amd64
|
||||
push: true
|
||||
tags: |
|
||||
ttl.sh/gogs/gogs-next-${{ steps.short-sha.outputs.sha }}:7d
|
||||
- name: Scan for container vulnerabilities
|
||||
uses: aquasecurity/trivy-action@b6643a29fecd7f34b3597bc6acb0a98b03d33ff8 # 0.33.1
|
||||
with:
|
||||
image-ref: ttl.sh/gogs/gogs-next-${{ steps.short-sha.outputs.sha }}:7d
|
||||
exit-code: '1'
|
||||
|
||||
# Updates to the following section needs to be synced to all release branches within their lifecycles.
|
||||
buildx-release:
|
||||
if: ${{ github.event_name == 'release' }}
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
packages: write
|
||||
steps:
|
||||
- name: Compute image tags
|
||||
run: |
|
||||
IMAGE_TAG=$(echo $GITHUB_REF_NAME | cut -c 2-)
|
||||
echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV
|
||||
|
||||
TAGS="gogs/gogs:$IMAGE_TAG
|
||||
ghcr.io/gogs/gogs:$IMAGE_TAG"
|
||||
|
||||
# Add minor version tag for stable releases (no prerelease suffix per semver).
|
||||
if [[ ! "$IMAGE_TAG" =~ - ]]; then
|
||||
MINOR_TAG=$(echo "$IMAGE_TAG" | cut -d. -f1,2)
|
||||
TAGS="$TAGS
|
||||
gogs/gogs:$MINOR_TAG
|
||||
ghcr.io/gogs/gogs:$MINOR_TAG"
|
||||
fi
|
||||
|
||||
echo "TAGS<<EOF" >> $GITHUB_ENV
|
||||
echo "$TAGS" >> $GITHUB_ENV
|
||||
echo "EOF" >> $GITHUB_ENV
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
|
||||
- name: Inspect builder
|
||||
run: |
|
||||
echo "Name: ${{ steps.buildx.outputs.name }}"
|
||||
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
|
||||
echo "Status: ${{ steps.buildx.outputs.status }}"
|
||||
echo "Flags: ${{ steps.buildx.outputs.flags }}"
|
||||
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Login to GitHub Container registry
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push images
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
push: true
|
||||
tags: ${{ env.TAGS }}
|
||||
- name: Send email on failure
|
||||
uses: unknwon/send-email-on-failure@89339a1bc93f4ad1d30f3b7e4911fcba985c9adb # v1
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
smtp_username: ${{ secrets.SMTP_USERNAME }}
|
||||
smtp_password: ${{ secrets.SMTP_PASSWORD }}
|
||||
|
||||
# Updates to the following section needs to be synced to all release branches within their lifecycles.
|
||||
buildx-next-release:
|
||||
if: ${{ github.event_name == 'release' }}
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
packages: write
|
||||
steps:
|
||||
- name: Compute image tags
|
||||
run: |
|
||||
IMAGE_TAG=$(echo $GITHUB_REF_NAME | cut -c 2-)
|
||||
echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV
|
||||
|
||||
TAGS="gogs/gogs:next-$IMAGE_TAG
|
||||
ghcr.io/gogs/gogs:next-$IMAGE_TAG"
|
||||
|
||||
# Add minor version tag for stable releases (no prerelease suffix per semver).
|
||||
if [[ ! "$IMAGE_TAG" =~ - ]]; then
|
||||
MINOR_TAG=$(echo "$IMAGE_TAG" | cut -d. -f1,2)
|
||||
TAGS="$TAGS
|
||||
gogs/gogs:next-$MINOR_TAG
|
||||
ghcr.io/gogs/gogs:next-$MINOR_TAG"
|
||||
fi
|
||||
|
||||
echo "TAGS<<EOF" >> $GITHUB_ENV
|
||||
echo "$TAGS" >> $GITHUB_ENV
|
||||
echo "EOF" >> $GITHUB_ENV
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
|
||||
- name: Inspect builder
|
||||
run: |
|
||||
echo "Name: ${{ steps.buildx.outputs.name }}"
|
||||
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
|
||||
echo "Status: ${{ steps.buildx.outputs.status }}"
|
||||
echo "Flags: ${{ steps.buildx.outputs.flags }}"
|
||||
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Login to GitHub Container registry
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push next-gen images
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||
with:
|
||||
context: .
|
||||
file: Dockerfile.next
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
push: true
|
||||
tags: ${{ env.TAGS }}
|
||||
- name: Send email on failure
|
||||
uses: unknwon/send-email-on-failure@89339a1bc93f4ad1d30f3b7e4911fcba985c9adb # v1
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
smtp_username: ${{ secrets.SMTP_USERNAME }}
|
||||
smtp_password: ${{ secrets.SMTP_PASSWORD }}
|
||||
|
||||
digitalocean-gc:
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository == 'gogs/gogs' }}
|
||||
needs: buildx-next
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/digitalocean_gc.yml
|
||||
secrets: inherit
|
||||
|
||||
digitalocean-gc-pull-request:
|
||||
if: ${{ github.event_name == 'pull_request' && github.repository == 'gogs/gogs' }}
|
||||
needs: buildx-next-pull-request
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/digitalocean_gc.yml
|
||||
secrets: inherit
|
||||
176
.github/workflows/go.yml
vendored
Normal file
176
.github/workflows/go.yml
vendored
Normal file
@@ -0,0 +1,176 @@
|
||||
name: Go
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- 'release/**'
|
||||
paths:
|
||||
- '**.go'
|
||||
- 'go.mod'
|
||||
- '.golangci.yml'
|
||||
- '.github/workflows/go.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- '**.go'
|
||||
- 'go.mod'
|
||||
- '.golangci.yml'
|
||||
- '.github/workflows/go.yml'
|
||||
env:
|
||||
GOPROXY: "https://proxy.golang.org"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
permissions:
|
||||
contents: read # for actions/checkout to fetch code
|
||||
pull-requests: read # for golangci/golangci-lint-action to fetch pull requests
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
||||
with:
|
||||
go-version: 1.26.x
|
||||
- name: Install Task
|
||||
uses: arduino/setup-task@b91d5d2c96a56797b48ac1e0e89220bf64044611 # v2.0.0
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Check Go module tidiness and generated files
|
||||
shell: bash
|
||||
run: |
|
||||
go mod tidy
|
||||
task generate
|
||||
STATUS=$(git status --porcelain)
|
||||
if [ ! -z "$STATUS" ]; then
|
||||
echo "Unstaged files:"
|
||||
echo $STATUS
|
||||
echo "Run 'go mod tidy' or 'task generate' commit them"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run golangci-lint
|
||||
uses: golangci/golangci-lint-action@9fae48acfc02a90574d7c304a1758ef9895495fa # v7.0.1
|
||||
with:
|
||||
version: latest
|
||||
args: --timeout=30m
|
||||
|
||||
test:
|
||||
name: Test
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [ 1.26.x ]
|
||||
platform: [ ubuntu-latest, macos-latest ]
|
||||
runs-on: ${{ matrix.platform }}
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
- name: Run tests with coverage
|
||||
run: |
|
||||
go test -shuffle=on -v -race -coverprofile=coverage -covermode=atomic -json ./... > test-report.json
|
||||
go install github.com/mfridman/tparse@latest
|
||||
tparse -all -file=test-report.json
|
||||
- name: Send email on failure
|
||||
uses: unknwon/send-email-on-failure@89339a1bc93f4ad1d30f3b7e4911fcba985c9adb # v1
|
||||
if: ${{ failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' }}
|
||||
with:
|
||||
smtp_username: ${{ secrets.SMTP_USERNAME }}
|
||||
smtp_password: ${{ secrets.SMTP_PASSWORD }}
|
||||
|
||||
# Running tests with race detection consumes too much memory on Windows,
|
||||
# see https://github.com/golang/go/issues/46099 for details.
|
||||
test-windows:
|
||||
name: Test Windows
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [ 1.26.x ]
|
||||
platform: [ windows-latest ]
|
||||
runs-on: ${{ matrix.platform }}
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
- name: Run tests with coverage
|
||||
run: go test -shuffle=on -v -coverprofile=coverage -covermode=atomic ./...
|
||||
- name: Send email on failure
|
||||
uses: unknwon/send-email-on-failure@89339a1bc93f4ad1d30f3b7e4911fcba985c9adb # v1
|
||||
if: ${{ failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' }}
|
||||
with:
|
||||
smtp_username: ${{ secrets.SMTP_USERNAME }}
|
||||
smtp_password: ${{ secrets.SMTP_PASSWORD }}
|
||||
|
||||
postgres:
|
||||
name: Postgres
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [ 1.26.x ]
|
||||
platform: [ ubuntu-latest ]
|
||||
runs-on: ${{ matrix.platform }}
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:9.6
|
||||
env:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
options: >-
|
||||
--health-cmd pg_isready
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
ports:
|
||||
- 5432:5432
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
- name: Run tests with coverage
|
||||
run: |
|
||||
go test -shuffle=on -v -race -coverprofile=coverage -covermode=atomic -json ./internal/database/... > test-report.json
|
||||
go install github.com/mfridman/tparse@latest
|
||||
tparse -all -file=test-report.json
|
||||
env:
|
||||
GOGS_DATABASE_TYPE: postgres
|
||||
PGPORT: 5432
|
||||
PGHOST: localhost
|
||||
PGUSER: postgres
|
||||
PGPASSWORD: postgres
|
||||
PGSSLMODE: disable
|
||||
|
||||
mysql:
|
||||
name: MySQL
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [ 1.26.x ]
|
||||
platform: [ ubuntu-22.04 ] # Use the lowest version possible for backwards compatibility
|
||||
runs-on: ${{ matrix.platform }}
|
||||
steps:
|
||||
- name: Start MySQL server
|
||||
run: sudo systemctl start mysql
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
- name: Run tests with coverage
|
||||
run: |
|
||||
go test -shuffle=on -v -race -coverprofile=coverage -covermode=atomic -json ./internal/database/... > test-report.json
|
||||
go install github.com/mfridman/tparse@latest
|
||||
tparse -all -file=test-report.json
|
||||
env:
|
||||
GOGS_DATABASE_TYPE: mysql
|
||||
MYSQL_USER: root
|
||||
MYSQL_PASSWORD: root
|
||||
MYSQL_HOST: localhost
|
||||
MYSQL_PORT: 3306
|
||||
25
.github/workflows/lock.yml
vendored
Normal file
25
.github/workflows/lock.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: 'Lock Threads'
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
concurrency:
|
||||
group: lock
|
||||
|
||||
jobs:
|
||||
action:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: dessant/lock-threads@1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771 # v5.0.1
|
||||
with:
|
||||
github-token: ${{ github.token }}
|
||||
issue-inactive-days: '90'
|
||||
issue-lock-reason: 'resolved'
|
||||
pr-inactive-days: '365'
|
||||
pr-lock-reason: 'resolved'
|
||||
146
.github/workflows/release.yml
vendored
Normal file
146
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,146 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/release.yml'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
GOPROXY: "https://proxy.golang.org"
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build ${{ matrix.goos }}/${{ matrix.goarch }}${{ matrix.suffix }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- {goos: linux, goarch: amd64}
|
||||
- {goos: linux, goarch: arm64}
|
||||
- {goos: linux, goarch: "386"}
|
||||
- {goos: darwin, goarch: amd64}
|
||||
- {goos: darwin, goarch: arm64}
|
||||
- {goos: windows, goarch: amd64}
|
||||
- {goos: windows, goarch: arm64}
|
||||
- {goos: windows, goarch: "386"}
|
||||
- {goos: windows, goarch: amd64, suffix: "_mws", tags: minwinsvc}
|
||||
- {goos: windows, goarch: arm64, suffix: "_mws", tags: minwinsvc}
|
||||
- {goos: windows, goarch: "386", suffix: "_mws", tags: minwinsvc}
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
||||
with:
|
||||
go-version: 1.26.x
|
||||
- name: Determine version
|
||||
id: version
|
||||
run: |
|
||||
if [ "${{ github.event_name }}" = "release" ]; then
|
||||
echo "version=${{ github.event.release.tag_name }}" | sed 's/version=v/version=/' >> "$GITHUB_OUTPUT"
|
||||
echo "release_tag=${{ github.event.release.tag_name }}" >> "$GITHUB_OUTPUT"
|
||||
elif [ "${{ github.event_name }}" = "push" ] && [ "${{ github.ref }}" = "refs/heads/main" ]; then
|
||||
echo "version=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
|
||||
echo "release_tag=latest-commit-build" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "version=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
|
||||
echo "release_tag=release-archive-testing" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
- name: Build binary
|
||||
env:
|
||||
GOOS: ${{ matrix.goos }}
|
||||
GOARCH: ${{ matrix.goarch }}
|
||||
CGO_ENABLED: "0"
|
||||
run: |
|
||||
BINARY_NAME="gogs"
|
||||
if [ "${{ matrix.goos }}" = "windows" ]; then
|
||||
BINARY_NAME="gogs.exe"
|
||||
fi
|
||||
|
||||
TAGS_FLAG=""
|
||||
if [ -n "${{ matrix.tags }}" ]; then
|
||||
TAGS_FLAG="-tags ${{ matrix.tags }}"
|
||||
fi
|
||||
|
||||
go build -v \
|
||||
-ldflags "
|
||||
-X \"gogs.io/gogs/internal/conf.BuildTime=$(date -u '+%Y-%m-%d %I:%M:%S %Z')\"
|
||||
-X \"gogs.io/gogs/internal/conf.BuildCommit=$(git rev-parse HEAD)\"
|
||||
" \
|
||||
$TAGS_FLAG \
|
||||
-trimpath -o "$BINARY_NAME" ./cmd/gogs
|
||||
- name: Prepare archive contents
|
||||
run: |
|
||||
mkdir -p dist/gogs
|
||||
BINARY_NAME="gogs"
|
||||
if [ "${{ matrix.goos }}" = "windows" ]; then
|
||||
BINARY_NAME="gogs.exe"
|
||||
fi
|
||||
cp "$BINARY_NAME" dist/gogs/
|
||||
cp LICENSE README.md dist/gogs/
|
||||
cp -r scripts dist/gogs/
|
||||
- name: Create archives
|
||||
working-directory: dist
|
||||
run: |
|
||||
VERSION="${{ steps.version.outputs.version }}"
|
||||
ARCHIVE_BASE="gogs_${VERSION}_${{ matrix.goos }}_${{ matrix.goarch }}${{ matrix.suffix }}"
|
||||
|
||||
zip -r "${ARCHIVE_BASE}.zip" gogs
|
||||
|
||||
if [ "${{ matrix.goos }}" = "linux" ]; then
|
||||
tar -czvf "${ARCHIVE_BASE}.tar.gz" gogs
|
||||
fi
|
||||
- name: Upload to release
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
RELEASE_TAG="${{ steps.version.outputs.release_tag }}"
|
||||
|
||||
if [ "${{ github.event_name }}" != "release" ]; then
|
||||
git tag -f "$RELEASE_TAG"
|
||||
git push origin "$RELEASE_TAG" --force || true
|
||||
|
||||
RELEASE_TITLE="Release Archive Testing"
|
||||
RELEASE_NOTES="Automated testing release for workflow development."
|
||||
if [ "$RELEASE_TAG" = "latest-commit-build" ]; then
|
||||
RELEASE_TITLE="Latest Commit Build"
|
||||
RELEASE_NOTES="Automated build from the latest commit on main branch. This release is updated automatically with every push to main."
|
||||
fi
|
||||
|
||||
gh release view "$RELEASE_TAG" || gh release create "$RELEASE_TAG" --title "$RELEASE_TITLE" --notes "$RELEASE_NOTES" --prerelease
|
||||
fi
|
||||
|
||||
PATTERN="_${{ matrix.goos }}_${{ matrix.goarch }}${{ matrix.suffix }}\."
|
||||
gh release view "$RELEASE_TAG" --json assets --jq ".assets[].name" | grep "$PATTERN" | while read -r asset; do
|
||||
gh release delete-asset "$RELEASE_TAG" "$asset" --yes || true
|
||||
done
|
||||
|
||||
gh release upload "$RELEASE_TAG" dist/gogs_*.zip --clobber
|
||||
if [ "${{ matrix.goos }}" = "linux" ]; then
|
||||
gh release upload "$RELEASE_TAG" dist/gogs_*.tar.gz --clobber
|
||||
fi
|
||||
|
||||
notify-failure:
|
||||
name: Notify on failure
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build]
|
||||
if: ${{ failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- name: Send email on failure
|
||||
uses: unknwon/send-email-on-failure@89339a1bc93f4ad1d30f3b7e4911fcba985c9adb # v1
|
||||
with:
|
||||
smtp_username: ${{ secrets.SMTP_USERNAME }}
|
||||
smtp_password: ${{ secrets.SMTP_PASSWORD }}
|
||||
17
.github/workflows/shell.yml
vendored
Normal file
17
.github/workflows/shell.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
name: Shell
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
shellcheck:
|
||||
name: Shellcheck
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||
- name: Run ShellCheck
|
||||
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # 2.0.0
|
||||
27
.gitignore
vendored
27
.gitignore
vendored
@@ -1,19 +1,16 @@
|
||||
.DS_Store
|
||||
*.db
|
||||
*.log
|
||||
# Build artifacts
|
||||
.bin/
|
||||
dist/
|
||||
|
||||
# Runtime data
|
||||
log/
|
||||
custom/
|
||||
data/
|
||||
.vendor/
|
||||
|
||||
# Configuration and application files
|
||||
.idea/
|
||||
*.iml
|
||||
public/img/avatar/
|
||||
*.exe
|
||||
*.exe~
|
||||
/gogs
|
||||
profile/
|
||||
*.pem
|
||||
output*
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
/release
|
||||
.task/
|
||||
.envrc
|
||||
|
||||
# System junk
|
||||
.DS_Store
|
||||
|
||||
42
.golangci.yml
Normal file
42
.golangci.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
version: "2"
|
||||
linters:
|
||||
enable:
|
||||
- nakedret
|
||||
- rowserrcheck
|
||||
- unconvert
|
||||
- unparam
|
||||
settings:
|
||||
govet:
|
||||
disable:
|
||||
# printf: non-constant format string in call to fmt.Errorf (govet)
|
||||
# showing up since golangci-lint version 1.60.1
|
||||
- printf
|
||||
staticcheck:
|
||||
checks:
|
||||
- all
|
||||
- "-SA1019" # This project is under active refactoring and not all code is up to date.
|
||||
- "-QF1001" # I'm a math noob
|
||||
- "-ST1016" # Some legit code uses this pattern
|
||||
nakedret:
|
||||
max-func-lines: 0 # Disallow any unnamed return statement
|
||||
exclusions:
|
||||
generated: lax
|
||||
presets:
|
||||
- comments
|
||||
- common-false-positives
|
||||
- legacy
|
||||
- std-error-handling
|
||||
paths:
|
||||
- third_party$
|
||||
- builtin$
|
||||
- examples$
|
||||
formatters:
|
||||
enable:
|
||||
- gofmt
|
||||
- goimports
|
||||
exclusions:
|
||||
generated: lax
|
||||
paths:
|
||||
- third_party$
|
||||
- builtin$
|
||||
- examples$
|
||||
64
.gopmfile
64
.gopmfile
@@ -1,64 +0,0 @@
|
||||
[target]
|
||||
path = github.com/gogits/gogs
|
||||
|
||||
[deps]
|
||||
github.com/bradfitz/gomemcache = commit:2fafb84
|
||||
github.com/urfave/cli = commit:347a988
|
||||
github.com/go-macaron/binding = commit:4892016
|
||||
github.com/go-macaron/cache = commit:5617353
|
||||
github.com/go-macaron/captcha = commit:8aa5919
|
||||
github.com/go-macaron/csrf = commit:6a9a7df
|
||||
github.com/go-macaron/gzip = commit:cad1c65
|
||||
github.com/go-macaron/i18n = commit:ef57533
|
||||
github.com/go-macaron/inject = commit:d8a0b86
|
||||
github.com/go-macaron/session = commit:66031fc
|
||||
github.com/go-macaron/toolbox = commit:82b5115
|
||||
github.com/go-sql-driver/mysql = commit:2e00b5c
|
||||
github.com/go-xorm/builder = commit:9c35786
|
||||
github.com/go-xorm/core = commit:7daacb2
|
||||
github.com/go-xorm/xorm = commit:19f6dfc
|
||||
github.com/gogits/chardet = commit:2404f77
|
||||
github.com/gogits/cron = commit:2fc07a4
|
||||
github.com/gogits/git-module = commit:1b9552b
|
||||
github.com/gogits/go-gogs-client = commit:264a3d5
|
||||
github.com/gogits/go-libravatar = commit:cd1abbd
|
||||
github.com/issue9/identicon = commit:d36b545
|
||||
github.com/jaytaylor/html2text = commit:d16d412
|
||||
github.com/kardianos/minwinsvc = commit:cad6b2b
|
||||
github.com/klauspost/compress = commit:461e8fd
|
||||
github.com/klauspost/cpuid = commit:09cded8
|
||||
github.com/klauspost/crc32 = commit:cb6bfca
|
||||
github.com/lib/pq = commit:67c3f2a
|
||||
github.com/mattn/go-colorable = commit:d228849
|
||||
github.com/mattn/go-isatty = commit:30a891c
|
||||
github.com/mattn/go-sqlite3 = commit:ce9149a
|
||||
github.com/mcuadros/go-version = commit:257f7b9
|
||||
github.com/microcosm-cc/bluemonday = commit:e797637
|
||||
github.com/msteinert/pam = commit:02ccfbf
|
||||
github.com/nfnt/resize = commit:891127d
|
||||
github.com/russross/blackfriday = commit:5f33e7b
|
||||
github.com/satori/go.uuid = commit:b061729
|
||||
github.com/sergi/go-diff = commit:24e2351
|
||||
github.com/shurcooL/sanitized_anchor_name = commit:1dba4b3
|
||||
github.com/Unknwon/cae = commit:c6aac99
|
||||
github.com/Unknwon/com = commit:28b053d
|
||||
github.com/Unknwon/i18n = commit:e0eb0ce
|
||||
github.com/Unknwon/paginater = commit:701c23f
|
||||
github.com/fatih/color = commit:42c364b
|
||||
golang.org/x/crypto = commit:dc137be
|
||||
golang.org/x/net = commit:f249948
|
||||
golang.org/x/sys = commit:d75a526
|
||||
golang.org/x/text = commit:ece019d
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 = commit:2caba25
|
||||
gopkg.in/asn1-ber.v1 = commit:4e86f43
|
||||
gopkg.in/bufio.v1 = commit:567b2bf
|
||||
gopkg.in/clog.v1 = commit:bf4bf4a
|
||||
gopkg.in/editorconfig/editorconfig-core-go.v1 = commit:a872f05
|
||||
gopkg.in/gomail.v2 = commit:81ebce5
|
||||
gopkg.in/ini.v1 = commit:e3c2d47
|
||||
gopkg.in/ldap.v2 = commit:8168ee0
|
||||
gopkg.in/macaron.v1 = commit:8be5635
|
||||
gopkg.in/redis.v2 = commit:e617904
|
||||
|
||||
[res]
|
||||
include = public|scripts|templates
|
||||
6
.mailmap
6
.mailmap
@@ -1,2 +1,4 @@
|
||||
Unknwon <u@gogs.io> <joe2010xtmf@163.com>
|
||||
Unknwon <u@gogs.io> 无闻 <u@gogs.io>
|
||||
Joe Chen <jc@unknwon.io> Unknwon <u@gogs.io>
|
||||
Joe Chen <jc@unknwon.io> 无闻 <u@gogs.io>
|
||||
Joe Chen <jc@unknwon.io> ᴜɴᴋɴᴡᴏɴ <u@gogs.io>
|
||||
Joe Chen <jc@unknwon.io> ᴜɴᴋɴᴡᴏɴ <jc@unknwon.io>
|
||||
|
||||
@@ -8,10 +8,10 @@ APP_USER=$(${CLI} config:get APP_USER)
|
||||
APP_GROUP=$(${CLI} config:get APP_GROUP)
|
||||
APP_CONFIG="/etc/${APP_NAME}/conf/app.ini"
|
||||
|
||||
mkdir -p $(dirname ${APP_CONFIG})
|
||||
chown ${APP_USER}.${APP_GROUP} $(dirname ${APP_CONFIG})
|
||||
mkdir -p "$(dirname ${APP_CONFIG})"
|
||||
chown "${APP_USER}"."${APP_GROUP}" "$(dirname ${APP_CONFIG})"
|
||||
[ -f ${APP_CONFIG} ] || ${CLI} run cp conf/app.ini ${APP_CONFIG}
|
||||
${CLI} config:set USER=${APP_USER}
|
||||
${CLI} config:set USER="${APP_USER}"
|
||||
sed -i "s|RUN_USER = git|RUN_USER = ${APP_USER}|" ${APP_CONFIG}
|
||||
sed -i "s|RUN_MODE = dev|RUN_MODE = prod|" ${APP_CONFIG}
|
||||
|
||||
31
.pkgr.yml
31
.pkgr.yml
@@ -1,34 +1,35 @@
|
||||
targets:
|
||||
debian-7: &debian
|
||||
debian-11: &debian
|
||||
build_dependencies:
|
||||
- libpam0g-dev
|
||||
dependencies:
|
||||
- libpam0g
|
||||
- git
|
||||
debian-8:
|
||||
debian-12:
|
||||
<<: *debian
|
||||
ubuntu-12.04:
|
||||
debian-13:
|
||||
<<: *debian
|
||||
ubuntu-14.04:
|
||||
debian-14:
|
||||
<<: *debian
|
||||
ubuntu-16.04:
|
||||
ubuntu-18.04:
|
||||
<<: *debian
|
||||
build_dependencies:
|
||||
- bzr
|
||||
- mercurial
|
||||
centos-6: &el
|
||||
ubuntu-20.04:
|
||||
<<: *debian
|
||||
ubuntu-22.04:
|
||||
<<: *debian
|
||||
ubuntu-24.04:
|
||||
<<: *debian
|
||||
centos-9:
|
||||
build_dependencies:
|
||||
- pam-devel
|
||||
# required for go buildpack
|
||||
# required for Go buildpack
|
||||
- perl-Digest-SHA
|
||||
dependencies:
|
||||
- pam
|
||||
- git
|
||||
centos-7:
|
||||
<<: *el
|
||||
before:
|
||||
- mv packager/Procfile .
|
||||
- mv .packager/Procfile .
|
||||
after:
|
||||
- mv bin/gogs gogs
|
||||
after_install: ./packager/hooks/postinst
|
||||
buildpack: https://github.com/heroku/heroku-buildpack-go.git#v62
|
||||
after_install: ./.packager/hooks/postinst
|
||||
buildpack: https://github.com/heroku/heroku-buildpack-go.git#main
|
||||
|
||||
18
.travis.yml
18
.travis.yml
@@ -1,18 +0,0 @@
|
||||
language: go
|
||||
go:
|
||||
- 1.5.x
|
||||
- 1.6.x
|
||||
- 1.7.x
|
||||
- 1.8.x
|
||||
- master
|
||||
|
||||
before_install:
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -y libpam-dev
|
||||
|
||||
env:
|
||||
- GO15VENDOREXPERIMENT=1
|
||||
|
||||
script:
|
||||
- go build -v -tags "pam"
|
||||
- go test -v -cover -race ./...
|
||||
33
AGENTS.md
Normal file
33
AGENTS.md
Normal file
@@ -0,0 +1,33 @@
|
||||
## Core principles
|
||||
|
||||
- Stop telling me "You're right", it just shows how incompetent you are. Do it right on your first try, fact-check and review after changes. If you are not sure, ask for help.
|
||||
- When you see changes made outside your knowledge, use the current version as your new starting point. Do not blindly overwrite those changes or you suck. Even if you have to update the code, always respect the pattern in the surrounding context!
|
||||
|
||||
## Style and mechanics
|
||||
|
||||
This applies to all texts, including but not limited to UI, documentation, code comments.
|
||||
|
||||
- Use sentence case. Preserve original casing for brand names.
|
||||
- End with a period for a full sentence.
|
||||
- Do not add comments that repeat what the code is doing, always prefer more descriptive names. Do add comments for intentions that aren't obvious via reading the code alone. This rule takes precedence over matching existing patterns.
|
||||
|
||||
## Coding guidelines
|
||||
|
||||
- Use `github.com/cockroachdb/errors` for error handling.
|
||||
- Use `github.com/stretchr/testify` for assertions in tests. Be mindful about the choice of `require` and `assert`, the former should be used when the test cannot proceed meaningfully after a failed assertion.
|
||||
|
||||
## Build instructions
|
||||
|
||||
- Prefer `task` command over vanilla `go` command when available. Use `--force` flag when necessary.
|
||||
- Run `task lint` after every time you finish changing code, and fix all linter errors.
|
||||
- Run `go mod tidy` after every time you change `go.mod`, do not manually edit `go.sum` file.
|
||||
|
||||
## Tool-use guidance
|
||||
|
||||
- Use `gh` CLI to access information on github.com that is not publicly available.
|
||||
|
||||
## Source code control
|
||||
|
||||
- When pushing changes to a pull request from a fork, use SSH address and do not add remote.
|
||||
- Never commit on the `main` branch directly unless being explicitly asked to do so. A single ask only grants a single commit action on the `main` branch.
|
||||
- Never amend commits unless being explicitly asked to do so.
|
||||
311
CHANGELOG.md
Normal file
311
CHANGELOG.md
Normal file
@@ -0,0 +1,311 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to Gogs are documented in this file.
|
||||
|
||||
## 0.15.0+dev (`main`)
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ Cross-repository LFS object overwrite via missing content hash verification. [#8166](https://github.com/gogs/gogs/pull/8166) - [GHSA-gmf8-978x-2fg2](https://github.com/gogs/gogs/security/advisories/GHSA-gmf8-978x-2fg2)
|
||||
- _Security:_ DOM-based XSS via issue meta selection on the issue page. [#8178](https://github.com/gogs/gogs/pull/8178) - [GHSA-vgjm-2cpf-4g7c](https://github.com/gogs/gogs/security/advisories/GHSA-vgjm-2cpf-4g7c)
|
||||
- Unable to update files via web editor and API. [#8184](https://github.com/gogs/gogs/pull/8184)
|
||||
|
||||
### Removed
|
||||
|
||||
- Support for passing API access tokens via URL query parameters (`token`, `access_token`). Use the `Authorization` header instead. [#8177](https://github.com/gogs/gogs/pull/8177) - [GHSA-x9p5-w45c-7ffc](https://github.com/gogs/gogs/security/advisories/GHSA-x9p5-w45c-7ffc)
|
||||
- The `gogs cert` subcommand. [#8153](https://github.com/gogs/gogs/pull/8153)
|
||||
- The `[email] DISABLE_HELO` configuration option. HELO/EHLO is now always sent during SMTP handshake. [#8164](https://github.com/gogs/gogs/pull/8164)
|
||||
- Support for MSSQL as a database backend. Stay on 0.14 for continued usage. [#8173](https://github.com/gogs/gogs/pull/8173)
|
||||
|
||||
## 0.14.1
|
||||
|
||||
### Added
|
||||
|
||||
- Support comparing tags in addition to branches. [#6141](https://github.com/gogs/gogs/issues/6141)
|
||||
- Show file name in browser tab title when viewing files. [#5896](https://github.com/gogs/gogs/pull/5896)
|
||||
- Support using TLS for Redis session provider using `[session] PROVIDER_CONFIG = ...,tls=true`. [#7860](https://github.com/gogs/gogs/pull/7860)
|
||||
- Support expanading values in `app.ini` from environment variables, e.g. `[database] PASSWORD = ${DATABASE_PASSWORD}`. [#8057](https://github.com/gogs/gogs/pull/8057)
|
||||
- Support custom logout URL that users get redirected to after sign out using `[auth] CUSTOM_LOGOUT_URL`. [#8089](https://github.com/gogs/gogs/pull/8089)
|
||||
- Start publishing next-generation, security-focused Docker image via `gogs/gogs:next-latest`, which will become the default image distribution (`gogs/gogs:latest`) starting 0.16.0. While not all container options support have been added in the next-generation image, the use of current legacy Docker image is deprecated, it will be published as `gogs/gogs:legacy-latest` starting 0.16.0, and be completely removed no earlier than 0.17.0. [#8061](https://github.com/gogs/gogs/pull/8061)
|
||||
|
||||
### Changed
|
||||
|
||||
- The required Go version to compile source code changed to 1.25.
|
||||
- The build tag `cert` has been removed, and the `gogs cert` subcommand is now always available. [#7883](https://github.com/gogs/gogs/pull/7883)
|
||||
- Switched to pure-Go SQLite driver, CGO is no longer required to compile Gogs. [#7882](https://github.com/gogs/gogs/issues/7882)
|
||||
- Updated Mermaid JS to 11.9.0. [#8009](https://github.com/gogs/gogs/pull/8009)
|
||||
- Halt the repository creation and leave the directory untouched if the repository root already exists. [#8091](https://github.com/gogs/gogs/pull/8091)
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ Unauthenticated file upload. [#8128](https://github.com/gogs/gogs/pull/8128) - [GHSA-fc3h-92p8-h36f](https://github.com/gogs/gogs/security/advisories/GHSA-fc3h-92p8-h36f)
|
||||
- _Security:_ Protected branch bypass in web UI. [#8124](https://github.com/gogs/gogs/pull/8124) - [GHSA-2c6v-8r3v-gh6p](https://github.com/gogs/gogs/security/advisories/GHSA-2c6v-8r3v-gh6p)
|
||||
- _Security:_ Authorization bypass allows cross-repository label modification. [#8123](https://github.com/gogs/gogs/pull/8123) - [GHSA-cv22-72px-f4gh](https://github.com/gogs/gogs/security/advisories/GHSA-cv22-72px-f4gh)
|
||||
- _Security:_ Cross-repository comment deletion. [#8119](https://github.com/gogs/gogs/pull/8119) - [GHSA-jj5m-h57j-5gv7](https://github.com/gogs/gogs/security/advisories/GHSA-jj5m-h57j-5gv7)
|
||||
- 500 error on repository watchers and stargazers pages when using MSSQL. [#5482](https://github.com/gogs/gogs/issues/5482)
|
||||
- Submodules using `ssh://` protocol and a port number are not rendered correctly. [#4941](https://github.com/gogs/gogs/issues/4941)
|
||||
- Missing link to user profile on the first commit in commits history page. [#7404](https://github.com/gogs/gogs/issues/7404)
|
||||
- Unable to delete or display files with special characters in their names. [#7596](https://github.com/gogs/gogs/issues/7596)
|
||||
- Docker healthcheck fails when `HTTP_PROXY` or `HTTPS_PROXY` environment variables are set. [#7529](https://github.com/gogs/gogs/issues/7529)
|
||||
|
||||
## 0.13.4
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ DoS in repository mirror sync. [#8065](https://github.com/gogs/gogs/pull/8065) - [GHSA-cr88-6mqm-4g57](https://github.com/gogs/gogs/security/advisories/GHSA-cr88-6mqm-4g57)
|
||||
- _Security:_ RCE in repository put contents API. [#8082](https://github.com/gogs/gogs/pull/8082) - [GHSA-gg64-xxr9-qhjp](https://github.com/gogs/gogs/security/advisories/GHSA-gg64-xxr9-qhjp)
|
||||
- _Security:_ Arbitrary file deletion via path traversal in wiki page update. [#8099](https://github.com/gogs/gogs/pull/8099) - [GHSA-jp7c-wj6q-3qf2](https://github.com/gogs/gogs/security/advisories/GHSA-jp7c-wj6q-3qf2)
|
||||
- _Security:_ 2FA bypass via recovery code. [#8100](https://github.com/gogs/gogs/pull/8100) - [GHSA-p6x6-9mx6-26wj](https://github.com/gogs/gogs/security/advisories/GHSA-p6x6-9mx6-26wj)
|
||||
- _Security:_ Authorization bypass in repository deletion API. [#8101](https://github.com/gogs/gogs/pull/8101) - [GHSA-rjv5-9px2-fqw6](https://github.com/gogs/gogs/security/advisories/GHSA-rjv5-9px2-fqw6)
|
||||
- _Security:_ Update repository content via API with read-only permission. [#8102](https://github.com/gogs/gogs/pull/8102) - [GHSA-5qhx-gwfj-6jqr](https://github.com/gogs/gogs/security/advisories/GHSA-5qhx-gwfj-6jqr)
|
||||
- _Security:_ Arbitrary file read/write via path traversal in Git hook editing. [#8103](https://github.com/gogs/gogs/pull/8103) - [GHSA-mrph-w4hh-gx3g](https://github.com/gogs/gogs/security/advisories/GHSA-mrph-w4hh-gx3g)
|
||||
- _Security:_ Stored XSS via Mermaid diagrams. [`2c88cd4`](https://github.com/gogs/gogs/commit/2c88cd4d9fdc346d8e06d82f5368d657c10e79c2) - [GHSA-26gq-grmh-6xm6](https://github.com/gogs/gogs/security/advisories/GHSA-26gq-grmh-6xm6)
|
||||
- Route `GET /api/v1/user/repos` responses 500 when accessible repositories contain forks. [#8069](https://github.com/gogs/gogs/pull/8069)
|
||||
- Newer Git versions that uses default branch `main` cause wiki initialization to fail. [#8094](https://github.com/gogs/gogs/pull/8094)
|
||||
|
||||
## 0.13.3
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ Stored XSS in PDF renderer. [GHSA-xh32-cx6c-cp4v](https://github.com/gogs/gogs/security/advisories/GHSA-xh32-cx6c-cp4v)
|
||||
- _Security:_ Path Traversal in file editing UI. [GHSA-wj44-9vcg-wjq7](https://github.com/gogs/gogs/security/advisories/GHSA-wj44-9vcg-wjq7)
|
||||
- Randomly timeout on repository file uploads. [#7890](https://github.com/gogs/gogs/pull/7890)
|
||||
- Unable to override email templates in custom directory. [#7905](https://github.com/gogs/gogs/pull/7905)
|
||||
|
||||
## 0.13.2
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ Path Traversal in file editing UI. [GHSA-r7j8-5h9c-f6fx](https://github.com/gogs/gogs/security/advisories/GHSA-r7j8-5h9c-f6fx)
|
||||
- _Security:_ Path Traversal in file update API. [GHSA-qf5v-rp47-55gg](https://github.com/gogs/gogs/security/advisories/GHSA-qf5v-rp47-55gg)
|
||||
- _Security:_ Argument Injection in the built-in SSH server. [GHSA-vm62-9jw3-c8w3](https://github.com/gogs/gogs/security/advisories/GHSA-vm62-9jw3-c8w3)
|
||||
- _Security:_ Deletion of internal files. [GHSA-ccqv-43vm-4f3w](https://github.com/gogs/gogs/security/advisories/GHSA-ccqv-43vm-4f3w)
|
||||
- _Security:_ Argument Injection during changes preview. [GHSA-9pp6-wq8c-3w2c](https://github.com/gogs/gogs/security/advisories/GHSA-9pp6-wq8c-3w2c)
|
||||
- _Security:_ Argument Injection when tagging new releases. [GHSA-m27m-h5gj-wwmg](https://github.com/gogs/gogs/security/advisories/GHSA-m27m-h5gj-wwmg)
|
||||
- Use the non-deprecated section name `[email]` during installation for email settings. [#7704](https://github.com/gogs/gogs/pull/7704)
|
||||
- Use the non-deprecated section name `[email] PASSWORD` during installation for email password. [#7807](https://github.com/gogs/gogs/pull/7807)
|
||||
- Make purple template label color to actually use the hexcode of purple. [#7722](https://github.com/gogs/gogs/pull/7722)
|
||||
|
||||
## 0.13.0
|
||||
|
||||
### Added
|
||||
|
||||
- Support using personal access token in the password field. [#3866](https://github.com/gogs/gogs/issues/3866)
|
||||
- An unlisted option is added when create or migrate a repository. Unlisted repositories are public but not being listed for users without direct access in the UI. [#5733](https://github.com/gogs/gogs/issues/5733)
|
||||
- New API endpoint `PUT /repos/:owner/:repo/contents/:path` for creating and update repository contents. [#5967](https://github.com/gogs/gogs/issues/5967)
|
||||
- New configuration option `[git.timeout] DIFF` for customizing operation timeout of `git diff`. [#6315](https://github.com/gogs/gogs/issues/6315)
|
||||
- New configuration option `[server] SSH_SERVER_MACS` for setting list of accepted MACs for connections to builtin SSH server. [#6434](https://github.com/gogs/gogs/issues/6434)
|
||||
- New configuration option `[repository] DEFAULT_BRANCH` for setting default branch name for new repositories. [#7291](https://github.com/gogs/gogs/issues/7291)
|
||||
- New configuration option `[server] SSH_SERVER_ALGORITHMS` for specifying the list of accepted key exchange algorithms for connections to builtin SSH server. [#7345](https://github.com/gogs/gogs/pull/7345)
|
||||
- Support specifying custom schema for PostgreSQL. [#6695](https://github.com/gogs/gogs/pull/6695)
|
||||
- Support rendering Mermaid diagrams in Markdown. [#6776](https://github.com/gogs/gogs/pull/6776)
|
||||
- Docker: Allow passing extra arguments to the `backup` command. [#7060](https://github.com/gogs/gogs/pull/7060)
|
||||
- New languages support: Mongolian, Romanian. [#6510](https://github.com/gogs/gogs/pull/6510) [#7082](https://github.com/gogs/gogs/pull/7082)
|
||||
|
||||
### Changed
|
||||
|
||||
- The default branch has been changed to `main`. [#6285](https://github.com/gogs/gogs/pull/6285)
|
||||
- MSSQL as database backend is deprecated, installation page no longer shows it as an option. Existing installations and manually craft configuration file continue to work. [#6295](https://github.com/gogs/gogs/pull/6295)
|
||||
- Use [Task](https://github.com/go-task/task) as the build tool. [#6297](https://github.com/gogs/gogs/pull/6297)
|
||||
- The required Go version to compile source code changed to 1.18.
|
||||
- Access tokens are now stored using their SHA256 hashes instead of raw values. [#7008](https://github.com/gogs/gogs/pull/7008)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Unable to use LDAP authentication on ARM machines. [#6761](https://github.com/gogs/gogs/issues/6761)
|
||||
- Unable to choose "Lookup Avatar by mail" in user settings without deleting custom avatar. [#7267](https://github.com/gogs/gogs/pull/7267)
|
||||
- Mistakenly include the "data" directory under the custom directory in the Docker setup. [#7343](https://github.com/gogs/gogs/pull/7343)
|
||||
- Unable to start after data recovery with an outdated migration version. [#7125](https://github.com/gogs/gogs/issues/7125)
|
||||
|
||||
### Removed
|
||||
|
||||
- ⚠️ Migrations before 0.12 are removed, installations not on 0.12 should upgrade to it to run the migrations and then upgrade to 0.13.
|
||||
- Configuration section `[mailer]` is no longer used, please use `[email]`.
|
||||
- Configuration section `[service]` is no longer used, please use `[auth]`.
|
||||
- Configuration option `APP_NAME` is no longer used, please use `BRAND_NAME`.
|
||||
- Configuration option `[security] REVERSE_PROXY_AUTHENTICATION_USER` is no longer used, please use `[auth] REVERSE_PROXY_AUTHENTICATION_HEADER`.
|
||||
- Configuration option `[auth] ACTIVE_CODE_LIVE_MINUTES` is no longer used, please use `[auth] ACTIVATE_CODE_LIVES`.
|
||||
- Configuration option `[auth] RESET_PASSWD_CODE_LIVE_MINUTES` is no longer used, please use `[auth] RESET_PASSWORD_CODE_LIVES`.
|
||||
- Configuration option `[auth] ENABLE_CAPTCHA` is no longer used, please use `[auth] ENABLE_REGISTRATION_CAPTCHA`.
|
||||
- Configuration option `[auth] ENABLE_NOTIFY_MAIL` is no longer used, please use `[user] ENABLE_EMAIL_NOTIFICATION`.
|
||||
- Configuration option `[auth] REGISTER_EMAIL_CONFIRM` is no longer used, please use `[auth] REQUIRE_EMAIL_CONFIRMATION`.
|
||||
- Configuration option `[session] GC_INTERVAL_TIME` is no longer used, please use `[session] GC_INTERVAL`.
|
||||
- Configuration option `[session] SESSION_LIFE_TIME` is no longer used, please use `[session] MAX_LIFE_TIME`.
|
||||
- Configuration option `[server] ROOT_URL` is no longer used, please use `[server] EXTERNAL_URL`.
|
||||
- Configuration option `[server] LANDING_PAGE` is no longer used, please use `[server] LANDING_URL`.
|
||||
- Configuration option `[database] DB_TYPE` is no longer used, please use `[database] TYPE`.
|
||||
- Configuration option `[database] PASSWD` is no longer used, please use `[database] PASSWORD`.
|
||||
- Remove option to use Makefile as the build tool. [#6980](https://github.com/gogs/gogs/pull/6980)
|
||||
|
||||
## 0.12.11
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ Stored XSS for issue assignees. [#7145](https://github.com/gogs/gogs/issues/7145)
|
||||
- _Security:_ OS Command Injection in repo editor on case-insensitive file systems. [#7030](https://github.com/gogs/gogs/issues/7030)
|
||||
- Unable to render repository pages with implicit submodules (e.g. `get submodule "REDACTED": revision does not exist`). [#6436](https://github.com/gogs/gogs/issues/6436)
|
||||
|
||||
## 0.12.10
|
||||
|
||||
### Changed
|
||||
|
||||
- Support using `[security] LOCAL_NETWORK_ALLOWLIST = *` to allow all hostnames. [#7111](https://github.com/gogs/gogs/pull/7111)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Unable to send webhooks to local network addresses after configured `[security] LOCAL_NETWORK_ALLOWLIST`. [#7074](https://github.com/gogs/gogs/issues/7074)
|
||||
|
||||
## 0.12.9
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ OS Command Injection in file editor. [#7000](https://github.com/gogs/gogs/issues/7000)
|
||||
- _Security:_ Sanitize `DisplayName` in repository issue list. [#7009](https://github.com/gogs/gogs/pull/7009)
|
||||
- _Security:_ Path Traversal in file editor on Windows. [#7001](https://github.com/gogs/gogs/issues/7001)
|
||||
- _Security:_ Path Traversal in Git HTTP endpoints. [#7002](https://github.com/gogs/gogs/issues/7002)
|
||||
- Unable to init repository during creation on Windows. [#6967](https://github.com/gogs/gogs/issues/6967)
|
||||
- Mysterious panic on `Value not found for type *repo.HTTPContext`. [#6963](https://github.com/gogs/gogs/issues/6963)
|
||||
|
||||
## 0.12.8
|
||||
|
||||
### Changed
|
||||
|
||||
- All users (including admins) need to use the configuration option `[security] LOCAL_NETWORK_ALLOWLIST` to allow repository migration and webhooks to be able to access local network addresses, which is a comma separated list of hostnames. [#6988](https://github.com/gogs/gogs/pull/6988)
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ SSRF in webhook. [#6901](https://github.com/gogs/gogs/issues/6901)
|
||||
- _Security:_ XSS in cookies. [#6953](https://github.com/gogs/gogs/issues/6953)
|
||||
- _Security:_ OS Command Injection in file uploading. [#6968](https://github.com/gogs/gogs/issues/6968)
|
||||
- _Security:_ Remote Command Execution in file editing. [#6555](https://github.com/gogs/gogs/issues/6555)
|
||||
|
||||
## 0.12.7
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ Stored XSS in issues. [#6919](https://github.com/gogs/gogs/issues/6919)
|
||||
- Invalid character in `Access-Control-Allow-Credentials` response header. [#4983](https://github.com/gogs/gogs/issues/4983)
|
||||
- Mysterious `ssh: overflow reading version string` errors from builtin SSH server. [#6882](https://github.com/gogs/gogs/issues/6882)
|
||||
|
||||
## 0.12.6
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ Remote command execution in file uploading. [#6833](https://github.com/gogs/gogs/issues/6833)
|
||||
- _Regression:_ Unable to migrate repository from other local Git hosting. Added a new configuration option `[security] LOCAL_NETWORK_ALLOWLIST`, which is a comma separated list of hostnames that are explicitly allowed to be accessed within the local network. [#6841](https://github.com/gogs/gogs/issues/6841)
|
||||
- Slow start of Docker containers using NAS devices. [#6554](https://github.com/gogs/gogs/issues/6554)
|
||||
|
||||
## 0.12.5
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ Potential SSRF in repository migration. [#6754](https://github.com/gogs/gogs/issues/6754)
|
||||
- _Security:_ Improper PAM authorization handling. [#6810](https://github.com/gogs/gogs/issues/6810)
|
||||
|
||||
## 0.12.4
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Security:_ Potential SSRF attack by CRLF injection via repository migration. [#6413](https://github.com/gogs/gogs/issues/6413)
|
||||
- _Regression:_ Fixed smart links for issues stops rendering. [#6506](https://github.com/gogs/gogs/issues/6506)
|
||||
- Added `X-Frame-Options` header to prevent Clickjacking. [#6409](https://github.com/gogs/gogs/issues/6409)
|
||||
|
||||
## 0.12.3
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Regression:_ When running Gogs on Windows, push commits no longer fail on a daily basis with the error "pre-receive hook declined". [#6316](https://github.com/gogs/gogs/issues/6316)
|
||||
- Auto-linked commit SHAs now have correct links. [#6300](https://github.com/gogs/gogs/issues/6300)
|
||||
- Git LFS client (with version >= 2.5.0) wasn't able to upload files with known format (e.g. PNG, JPEG), and the server is expecting the HTTP Header `Content-Type` to be `application/octet-stream`. The server now tells the LFS client to always use `Content-Type: application/octet-stream` when upload files.
|
||||
|
||||
## 0.12.2
|
||||
|
||||
### Fixed
|
||||
|
||||
- _Regression:_ Pages are correctly rendered when requesting `?go-get=1` for subdirectories. [#6314](https://github.com/gogs/gogs/issues/6314)
|
||||
- _Regression:_ Submodule with a relative path is linked correctly. [#6319](https://github.com/gogs/gogs/issues/6319)
|
||||
- Backup can be processed when `--target` is specified on Windows. [#6339](https://github.com/gogs/gogs/issues/6339)
|
||||
- Commit message contains keywords look like an issue reference no longer fails the push entirely. [#6289](https://github.com/gogs/gogs/issues/6289)
|
||||
|
||||
## 0.12.1
|
||||
|
||||
### Fixed
|
||||
|
||||
- The `updated_at` field is now correctly updated when updates an issue. [#6209](https://github.com/gogs/gogs/issues/6209)
|
||||
- Fixed a regression which created `login_source.cfg` column to have `VARCHAR(255)` instead of `TEXT` in MySQL. [#6280](https://github.com/gogs/gogs/issues/6280)
|
||||
|
||||
## 0.12.0
|
||||
|
||||
### Added
|
||||
|
||||
- Support for Git LFS, you can read documentation for both [user](https://github.com/gogs/gogs/blob/main/docs/user/lfs.md) and [admin](https://github.com/gogs/gogs/blob/main/docs/admin/lfs.md). [#1322](https://github.com/gogs/gogs/issues/1322)
|
||||
- Allow admin to remove observers from the repository. [#5803](https://github.com/gogs/gogs/pull/5803)
|
||||
- Use `Last-Modified` HTTP header for raw files. [#5811](https://github.com/gogs/gogs/issues/5811)
|
||||
- Support syntax highlighting for SAS code files (i.e. `.r`, `.sas`, `.tex`, `.yaml`). [#5856](https://github.com/gogs/gogs/pull/5856)
|
||||
- Able to fill in pull request title with a template. [#5901](https://github.com/gogs/gogs/pull/5901)
|
||||
- Able to override static files under `public/` directory, please refer to [documentation](https://gogs.io/docs/features/custom_template) for usage. [#5920](https://github.com/gogs/gogs/pull/5920)
|
||||
- New API endpoint `GET /admin/teams/:teamid/members` to list members of a team. [#5877](https://github.com/gogs/gogs/issues/5877)
|
||||
- Support backup with retention policy for Docker deployments. [#6140](https://github.com/gogs/gogs/pull/6140)
|
||||
|
||||
### Changed
|
||||
|
||||
- The organization profile page has changed to display at most 12 members. [#5506](https://github.com/gogs/gogs/issues/5506)
|
||||
- The required Go version to compile source code changed to 1.14.
|
||||
- All assets are now embedded into binary and served from memory by default. Set `[server] LOAD_ASSETS_FROM_DISK = true` to load them from disk. [#5920](https://github.com/gogs/gogs/pull/5920)
|
||||
- Application and Go versions are removed from page footer and only show in the admin dashboard.
|
||||
- Build tag for running as Windows Service has been changed from `miniwinsvc` to `minwinsvc`.
|
||||
- Configuration option `APP_NAME` is deprecated and will end support in 0.13.0, please start using `BRAND_NAME`.
|
||||
- Configuration option `[server] ROOT_URL` is deprecated and will end support in 0.13.0, please start using `[server] EXTERNAL_URL`.
|
||||
- Configuration option `[server] LANDING_PAGE` is deprecated and will end support in 0.13.0, please start using `[server] LANDING_URL`.
|
||||
- Configuration option `[database] DB_TYPE` is deprecated and will end support in 0.13.0, please start using `[database] TYPE`.
|
||||
- Configuration option `[database] PASSWD` is deprecated and will end support in 0.13.0, please start using `[database] PASSWORD`.
|
||||
- Configuration option `[security] REVERSE_PROXY_AUTHENTICATION_USER` is deprecated and will end support in 0.13.0, please start using `[auth] REVERSE_PROXY_AUTHENTICATION_HEADER`.
|
||||
- Configuration section `[mailer]` is deprecated and will end support in 0.13.0, please start using `[email]`.
|
||||
- Configuration section `[service]` is deprecated and will end support in 0.13.0, please start using `[auth]`.
|
||||
- Configuration option `[auth] ACTIVE_CODE_LIVE_MINUTES` is deprecated and will end support in 0.13.0, please start using `[auth] ACTIVATE_CODE_LIVES`.
|
||||
- Configuration option `[auth] RESET_PASSWD_CODE_LIVE_MINUTES` is deprecated and will end support in 0.13.0, please start using `[auth] RESET_PASSWORD_CODE_LIVES`.
|
||||
- Configuration option `[auth] REGISTER_EMAIL_CONFIRM` is deprecated and will end support in 0.13.0, please start using `[auth] REQUIRE_EMAIL_CONFIRMATION`.
|
||||
- Configuration option `[auth] ENABLE_CAPTCHA` is deprecated and will end support in 0.13.0, please start using `[auth] ENABLE_REGISTRATION_CAPTCHA`.
|
||||
- Configuration option `[auth] ENABLE_NOTIFY_MAIL` is deprecated and will end support in 0.13.0, please start using `[user] ENABLE_EMAIL_NOTIFICATION`.
|
||||
- Configuration option `[session] GC_INTERVAL_TIME` is deprecated and will end support in 0.13.0, please start using `[session] GC_INTERVAL`.
|
||||
- Configuration option `[session] SESSION_LIFE_TIME` is deprecated and will end support in 0.13.0, please start using `[session] MAX_LIFE_TIME`.
|
||||
- The name `-` is reserved and cannot be used for users or organizations.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Security] Potential open redirection with i18n.
|
||||
- [Security] Potential ability to delete files outside a repository.
|
||||
- [Security] Potential ability to set primary email on others' behalf from their verified emails.
|
||||
- [Security] Potential XSS attack via `.ipynb`. [#5170](https://github.com/gogs/gogs/issues/5170)
|
||||
- [Security] Potential SSRF attack via webhooks. [#5366](https://github.com/gogs/gogs/issues/5366)
|
||||
- [Security] Potential CSRF attack in admin panel. [#5367](https://github.com/gogs/gogs/issues/5367)
|
||||
- [Security] Potential stored XSS attack in some browsers. [#5397](https://github.com/gogs/gogs/issues/5397)
|
||||
- [Security] Potential RCE on mirror repositories. [#5767](https://github.com/gogs/gogs/issues/5767)
|
||||
- [Security] Potential XSS attack with raw markdown API. [#5907](https://github.com/gogs/gogs/pull/5907)
|
||||
- File both modified and renamed within a commit treated as separate files. [#5056](https://github.com/gogs/gogs/issues/5056)
|
||||
- Unable to restore the database backup to MySQL 8.0 with syntax error. [#5602](https://github.com/gogs/gogs/issues/5602)
|
||||
- Open/close milestone redirects to a 404 page. [#5677](https://github.com/gogs/gogs/issues/5677)
|
||||
- Disallow multiple tokens with same name. [#5587](https://github.com/gogs/gogs/issues/5587) [#5820](https://github.com/gogs/gogs/pull/5820)
|
||||
- Enable Federated Avatar Lookup could cause server to crash. [#5848](https://github.com/gogs/gogs/issues/5848)
|
||||
- Private repositories are hidden in the organization's view. [#5869](https://github.com/gogs/gogs/issues/5869)
|
||||
- Users have access to base repository cannot view commits in forks. [#5878](https://github.com/gogs/gogs/issues/5878)
|
||||
- Server error when changing email address in user settings page. [#5899](https://github.com/gogs/gogs/issues/5899)
|
||||
- Fall back to use RFC 3339 as time layout when misconfigured. [#6098](https://github.com/gogs/gogs/issues/6098)
|
||||
- Unable to update team with server error. [#6185](https://github.com/gogs/gogs/issues/6185)
|
||||
- Webhooks are not fired after push when `[service] REQUIRE_SIGNIN_VIEW = true`.
|
||||
- Files with identical content are randomly displayed one of them.
|
||||
|
||||
### Removed
|
||||
|
||||
- Configuration option `[other] SHOW_FOOTER_VERSION`
|
||||
- Configuration option `[server] STATIC_ROOT_PATH`
|
||||
- Configuration option `[repository] MIRROR_QUEUE_LENGTH`
|
||||
- Configuration option `[repository] PULL_REQUEST_QUEUE_LENGTH`
|
||||
- Configuration option `[session] ENABLE_SET_COOKIE`
|
||||
- Configuration option `[release.attachment] PATH`
|
||||
- Configuration option `[webhook] QUEUE_LENGTH`
|
||||
- Build tag `sqlite`, which means CGO is now required.
|
||||
|
||||
---
|
||||
|
||||
**Older change logs can be found on [GitHub](https://github.com/gogs/gogs/releases?after=v0.12.0).**
|
||||
2
CODEOWNERS
Normal file
2
CODEOWNERS
Normal file
@@ -0,0 +1,2 @@
|
||||
# Default
|
||||
* @gogs/core
|
||||
50
Dockerfile
50
Dockerfile
@@ -1,24 +1,44 @@
|
||||
FROM alpine:3.5
|
||||
FROM golang:1.26-alpine3.23 AS binarybuilder
|
||||
RUN apk --no-cache --no-progress add --virtual \
|
||||
build-deps \
|
||||
build-base \
|
||||
git \
|
||||
linux-pam-dev
|
||||
|
||||
# Install system utils & Gogs runtime dependencies
|
||||
ADD https://github.com/tianon/gosu/releases/download/1.9/gosu-amd64 /usr/sbin/gosu
|
||||
RUN chmod +x /usr/sbin/gosu \
|
||||
&& apk --no-cache --no-progress add ca-certificates bash git linux-pam s6 curl openssh socat tzdata
|
||||
WORKDIR /gogs.io/gogs
|
||||
COPY . .
|
||||
|
||||
ENV GOGS_CUSTOM /data/gogs
|
||||
RUN ./docker/build/install-task.sh
|
||||
RUN TAGS="cert pam" task build
|
||||
|
||||
COPY . /app/gogs/build
|
||||
WORKDIR /app/gogs/build
|
||||
FROM alpine:3.23
|
||||
RUN apk --no-cache --no-progress add \
|
||||
bash \
|
||||
ca-certificates \
|
||||
curl \
|
||||
git \
|
||||
linux-pam \
|
||||
openssh \
|
||||
s6 \
|
||||
shadow \
|
||||
socat \
|
||||
tzdata \
|
||||
rsync
|
||||
|
||||
RUN ./docker/build-go.sh \
|
||||
&& ./docker/build.sh \
|
||||
&& ./docker/finalize.sh
|
||||
ENV GOGS_CUSTOM=/data/gogs
|
||||
|
||||
# Configure LibC Name Service
|
||||
# Configure LibC Name Service
|
||||
COPY docker/nsswitch.conf /etc/nsswitch.conf
|
||||
|
||||
# Configure Docker Container
|
||||
VOLUME ["/data"]
|
||||
WORKDIR /app/gogs
|
||||
COPY docker ./docker
|
||||
COPY --from=binarybuilder /gogs.io/gogs/.bin/gogs .
|
||||
|
||||
RUN ./docker/build/finalize.sh
|
||||
|
||||
# Configure Docker Container
|
||||
VOLUME ["/data", "/backup"]
|
||||
EXPOSE 22 3000
|
||||
HEALTHCHECK CMD (curl --noproxy localhost -o /dev/null -sS http://localhost:3000/healthcheck) || exit 1
|
||||
ENTRYPOINT ["/app/gogs/docker/start.sh"]
|
||||
CMD ["/bin/s6-svscan", "/app/gogs/docker/s6/"]
|
||||
CMD ["/usr/bin/s6-svscan", "/app/gogs/docker/s6/"]
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
FROM aarch64/alpine:3.5
|
||||
|
||||
# Install system utils & Gogs runtime dependencies
|
||||
ADD https://github.com/tianon/gosu/releases/download/1.9/gosu-arm64 /usr/sbin/gosu
|
||||
RUN chmod +x /usr/sbin/gosu \
|
||||
&& apk --no-cache --no-progress add ca-certificates bash git linux-pam s6 curl openssh socat tzdata
|
||||
|
||||
ENV GOGS_CUSTOM /data/gogs
|
||||
|
||||
COPY . /app/gogs/build
|
||||
WORKDIR /app/gogs/build
|
||||
|
||||
RUN ./docker/build-go.sh \
|
||||
&& ./docker/build.sh \
|
||||
&& ./docker/finalize.sh
|
||||
|
||||
# Configure LibC Name Service
|
||||
COPY docker/nsswitch.conf /etc/nsswitch.conf
|
||||
|
||||
# Configure Docker Container
|
||||
VOLUME ["/data"]
|
||||
EXPOSE 22 3000
|
||||
ENTRYPOINT ["/app/gogs/docker/start.sh"]
|
||||
CMD ["/bin/s6-svscan", "/app/gogs/docker/s6/"]
|
||||
50
Dockerfile.next
Normal file
50
Dockerfile.next
Normal file
@@ -0,0 +1,50 @@
|
||||
FROM golang:1.26-alpine3.23 AS binarybuilder
|
||||
RUN apk --no-cache --no-progress add --virtual \
|
||||
build-deps \
|
||||
build-base \
|
||||
git \
|
||||
linux-pam-dev
|
||||
|
||||
WORKDIR /gogs.io/gogs
|
||||
COPY . .
|
||||
|
||||
RUN ./docker/build/install-task.sh
|
||||
RUN TAGS="cert pam" task build
|
||||
|
||||
FROM alpine:3.23
|
||||
|
||||
# Create git user and group with fixed UID/GID at build time for better K8s security context support.
|
||||
# Using 1000:1000 as it's a common non-root UID/GID that works well with most volume permission setups.
|
||||
ARG GOGS_UID=1000
|
||||
ARG GOGS_GID=1000
|
||||
RUN addgroup -g ${GOGS_GID} -S git && \
|
||||
adduser -u ${GOGS_UID} -G git -H -D -g 'Gogs Git User' -h /data/git -s /bin/sh git
|
||||
|
||||
RUN apk --no-cache --no-progress add \
|
||||
bash \
|
||||
ca-certificates \
|
||||
curl \
|
||||
git \
|
||||
linux-pam \
|
||||
openssh-keygen
|
||||
|
||||
ENV GOGS_CUSTOM=/data/gogs
|
||||
|
||||
WORKDIR /app/gogs
|
||||
COPY --from=binarybuilder /gogs.io/gogs/.bin/gogs .
|
||||
COPY docker-next/start.sh .
|
||||
RUN chmod +x start.sh && \
|
||||
mkdir -p /data && \
|
||||
ln -s /data/git /home/git && \
|
||||
chown -R git:git /app/gogs /data
|
||||
|
||||
# Configure Docker Container
|
||||
VOLUME ["/data", "/backup"]
|
||||
EXPOSE 22 3000
|
||||
HEALTHCHECK CMD (curl --noproxy localhost -o /dev/null -sS http://localhost:3000/healthcheck) || exit 1
|
||||
|
||||
# Run as non-root user by default for better K8s security context support.
|
||||
USER git:git
|
||||
|
||||
ENTRYPOINT ["/app/gogs/start.sh"]
|
||||
CMD ["/app/gogs/gogs", "web"]
|
||||
@@ -1,24 +0,0 @@
|
||||
FROM armhf/alpine:3.5
|
||||
|
||||
# Install system utils & Gogs runtime dependencies
|
||||
ADD https://github.com/tianon/gosu/releases/download/1.9/gosu-armhf /usr/sbin/gosu
|
||||
RUN chmod +x /usr/sbin/gosu \
|
||||
&& apk --no-cache --no-progress add ca-certificates bash git linux-pam s6 curl openssh socat tzdata
|
||||
|
||||
ENV GOGS_CUSTOM /data/gogs
|
||||
|
||||
COPY . /app/gogs/build
|
||||
WORKDIR /app/gogs/build
|
||||
|
||||
RUN ./docker/build-go.sh \
|
||||
&& ./docker/build.sh \
|
||||
&& ./docker/finalize.sh
|
||||
|
||||
# Configure LibC Name Service
|
||||
COPY docker/nsswitch.conf /etc/nsswitch.conf
|
||||
|
||||
# Configure Docker Container
|
||||
VOLUME ["/data"]
|
||||
EXPOSE 22 3000
|
||||
ENTRYPOINT ["/app/gogs/docker/start.sh"]
|
||||
CMD ["/bin/s6-svscan", "/app/gogs/docker/s6/"]
|
||||
80
Makefile
80
Makefile
@@ -1,80 +0,0 @@
|
||||
LDFLAGS += -X "github.com/gogits/gogs/pkg/setting.BuildTime=$(shell date -u '+%Y-%m-%d %I:%M:%S %Z')"
|
||||
LDFLAGS += -X "github.com/gogits/gogs/pkg/setting.BuildGitHash=$(shell git rev-parse HEAD)"
|
||||
|
||||
DATA_FILES := $(shell find conf | sed 's/ /\\ /g')
|
||||
LESS_FILES := $(wildcard public/less/gogs.less public/less/_*.less)
|
||||
GENERATED := pkg/bindata/bindata.go public/css/gogs.css
|
||||
|
||||
OS := $(shell uname)
|
||||
|
||||
TAGS = ""
|
||||
BUILD_FLAGS = "-v"
|
||||
|
||||
RELEASE_ROOT = "release"
|
||||
RELEASE_GOGS = "release/gogs"
|
||||
NOW = $(shell date -u '+%Y%m%d%I%M%S')
|
||||
GOVET = go tool vet -composites=false -methods=false -structtags=false
|
||||
|
||||
.PHONY: build pack release bindata clean
|
||||
|
||||
.IGNORE: public/css/gogs.css
|
||||
|
||||
all: build
|
||||
|
||||
check: test
|
||||
|
||||
dist: release
|
||||
|
||||
govet:
|
||||
$(GOVET) gogs.go
|
||||
$(GOVET) models pkg routers
|
||||
|
||||
build: $(GENERATED)
|
||||
go install $(BUILD_FLAGS) -ldflags '$(LDFLAGS)' -tags '$(TAGS)'
|
||||
cp '$(GOPATH)/bin/gogs' .
|
||||
|
||||
build-dev: $(GENERATED) govet
|
||||
go install $(BUILD_FLAGS) -tags '$(TAGS)'
|
||||
cp '$(GOPATH)/bin/gogs' .
|
||||
|
||||
build-dev-race: $(GENERATED) govet
|
||||
go install $(BUILD_FLAGS) -race -tags '$(TAGS)'
|
||||
cp '$(GOPATH)/bin/gogs' .
|
||||
|
||||
pack:
|
||||
rm -rf $(RELEASE_GOGS)
|
||||
mkdir -p $(RELEASE_GOGS)
|
||||
cp -r gogs LICENSE README.md README_ZH.md templates public scripts $(RELEASE_GOGS)
|
||||
rm -rf $(RELEASE_GOGS)/public/config.codekit $(RELEASE_GOGS)/public/less
|
||||
cd $(RELEASE_ROOT) && zip -r gogs.$(NOW).zip "gogs"
|
||||
|
||||
release: build pack
|
||||
|
||||
bindata: pkg/bindata/bindata.go
|
||||
|
||||
pkg/bindata/bindata.go: $(DATA_FILES)
|
||||
go-bindata -o=$@ -ignore="\\.DS_Store|README.md|TRANSLATORS" -pkg=bindata conf/...
|
||||
|
||||
less: public/css/gogs.css
|
||||
|
||||
public/css/gogs.css: $(LESS_FILES)
|
||||
lessc $< $@
|
||||
|
||||
clean:
|
||||
go clean -i ./...
|
||||
|
||||
clean-mac: clean
|
||||
find . -name ".DS_Store" -print0 | xargs -0 rm
|
||||
|
||||
test:
|
||||
go test -cover -race ./...
|
||||
|
||||
fixme:
|
||||
grep -rnw "FIXME" cmd routers models pkg
|
||||
|
||||
todo:
|
||||
grep -rnw "TODO" cmd routers models pkg
|
||||
|
||||
# Legacy code should be remove by the time of release
|
||||
legacy:
|
||||
grep -rnw "LEGACY" cmd routers models pkg
|
||||
160
README.md
160
README.md
@@ -1,136 +1,100 @@
|
||||
Gogs [](https://travis-ci.org/gogits/gogs) [](https://ci.appveyor.com/project/Unknwon/gogs/branch/master) [](https://crowdin.com/project/gogs) [](https://sourcegraph.com/github.com/gogits/gogs?badge) [](https://gitter.im/gogits/gogs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
=====================
|
||||

|
||||
|
||||

|
||||
[](https://github.com/gogs/gogs/actions?query=branch%3Amain) [](https://sourcegraph.com/github.com/gogs/gogs)
|
||||
|
||||
##### Current tip version: [`.VERSION`](templates/.VERSION) (see [Releases](https://github.com/gogits/gogs/releases) for binary versions)
|
||||
👉 Deploy on DigitalOcean and [get $200 in free credits](https://m.do.co/c/5aeb02268b55)!
|
||||
|
||||
| Web | UI | Preview |
|
||||
|:-------------:|:-------:|:-------:|
|
||||
||||
|
||||
||||
|
||||
||||
|
||||
## 🔮 Vision
|
||||
|
||||
### Important Notes
|
||||
The Gogs (`/gɑgz/`) project aims to build a simple, stable and extensible self-hosted Git service that can be set up in the most painless way. With Go, this can be done with an independent binary distribution across all platforms that Go supports, including Linux, macOS, Windows and ARM-based systems.
|
||||
|
||||
1. **YOU MUST READ [Contributing Code](https://github.com/gogits/gogs/wiki/Contributing-Code) BEFORE STARTING TO WORK ON A PULL REQUEST**.
|
||||
2. Due to testing purpose, data of [try.gogs.io](https://try.gogs.io) was reset in **Jan 28, 2015** and will reset multiple times after. Please do **NOT** put your important data on the site.
|
||||
3. The demo site [try.gogs.io](https://try.gogs.io) is running under `develop` branch.
|
||||
4. If you think there are vulnerabilities in the project, please talk privately to **u@gogs.io**, and the name you want to be credited as. Thanks!
|
||||
5. If you're interested in using APIs, we have experimental support with [documentation](https://github.com/gogits/go-gogs-client/wiki).
|
||||
6. If your team/company is using Gogs and would like to put your logo on [our website](https://gogs.io), contact us by any means.
|
||||
## 📡 Overview
|
||||
|
||||
[简体中文](README_ZH.md)
|
||||
|
||||
## Purpose
|
||||
|
||||
The goal of this project is to make the easiest, fastest, and most painless way of setting up a self-hosted Git service. With Go, this can be done with an independent binary distribution across **ALL platforms** that Go supports, including Linux, Mac OS X, Windows and ARM.
|
||||
|
||||
## Overview
|
||||
|
||||
- Please see the [Documentation](https://gogs.io/docs/intro) for common usages and change log.
|
||||
- Please visit [our home page](https://gogs.io) for user documentation.
|
||||
- Please refer to [CHANGELOG.md](CHANGELOG.md) for list of changes in each releases.
|
||||
- Want to try it before doing anything else? Do it [online](https://try.gogs.io/gogs/gogs)!
|
||||
- Having trouble? Get help with [Troubleshooting](https://gogs.io/docs/intro/troubleshooting.html) or [User Forum](https://discuss.gogs.io/).
|
||||
- Want to help with localization? Check out the [guide](https://gogs.io/docs/features/i18n.html)!
|
||||
- Having trouble? Help yourself with [troubleshooting](https://gogs.io/asking/troubleshooting) or ask questions in [Discussions](https://github.com/gogs/gogs/discussions).
|
||||
- Want to help with localization? Check out the [localization documentation](https://gogs.io/advancing/localization).
|
||||
- Ready to get hands dirty? Read our [contributing guide](.github/CONTRIBUTING.md).
|
||||
- Hmm... What about APIs? We have experimental support with [documentation](https://gogs.io/api-reference).
|
||||
|
||||
## Features
|
||||
## 💌 Features
|
||||
|
||||
- Activity timeline
|
||||
- SSH and HTTP/HTTPS protocols
|
||||
- SMTP/LDAP/Reverse proxy authentication
|
||||
- Reverse proxy with sub-path
|
||||
- Account/Organization/Repository management
|
||||
- Add/Remove repository collaborators
|
||||
- Repository/Organization webhooks (including Slack and Discord)
|
||||
- Repository Git hooks/deploy keys
|
||||
- Repository issues, pull requests, wiki and protected branches
|
||||
- Migrate and mirror repository and its wiki
|
||||
- Web editor for repository files and wiki
|
||||
- Jupyter Notebook
|
||||
- Gravatar and Federated avatar with custom source
|
||||
- Mail service
|
||||
- Administration panel
|
||||
- Supports MySQL, PostgreSQL, SQLite3, MSSQL and [TiDB](https://github.com/pingcap/tidb) (via MySQL protocol)
|
||||
- Multi-language support ([23 languages](https://crowdin.com/project/gogs))
|
||||
- User dashboard, user profile and activity timeline.
|
||||
- Access repositories via SSH, HTTP and HTTPS protocols.
|
||||
- User, organization and repository management.
|
||||
- Repository and organization webhooks, including Slack, Discord and Dingtalk.
|
||||
- Repository Git hooks, deploy keys and Git LFS.
|
||||
- Repository issues, pull requests, wiki, protected branches and collaboration.
|
||||
- Migrate and mirror repositories with wiki from other code hosts.
|
||||
- Web editor for quick editing repository files and wiki.
|
||||
- Jupyter Notebook and PDF rendering.
|
||||
- Authentication via SMTP, LDAP, reverse proxy, GitHub.com and GitHub Enterprise with 2FA.
|
||||
- Customize HTML templates, static files and many others.
|
||||
- Rich database backend support, including PostgreSQL, MySQL, SQLite3 or any database backend that speaks one of those protocols.
|
||||
- Have localization over [31 languages](https://crowdin.com/project/gogs).
|
||||
|
||||
## Hardware Requirements
|
||||
## 💾 Hardware requirements
|
||||
|
||||
- A Raspberry Pi or $5 Digital Ocean Droplet is more than enough to get you started. Some even use 64MB RAM Docker [CaaS](https://blog.docker.com/2016/02/containers-as-a-service-caas/).
|
||||
- A Raspberry Pi or $5 Digital Ocean Droplet is more than enough to get you started. Some even use 64MB RAM Docker [CaaS](https://www.docker.com/blog/containers-as-a-service-caas/).
|
||||
- 2 CPU cores and 512MB RAM would be the baseline for teamwork.
|
||||
- Increase CPU cores when your team size gets significantly larger, memory footprint remains low.
|
||||
|
||||
## Browser Support
|
||||
## 💻 Browser support
|
||||
|
||||
- Please see [Semantic UI](https://github.com/Semantic-Org/Semantic-UI#browser-support) for specific versions of supported browsers.
|
||||
- The smallest resolution officially supported is **1024*768**, however the UI may still look right in smaller resolutions, but no promises or fixes.
|
||||
|
||||
## Installation
|
||||
## 📜 Installation
|
||||
|
||||
Make sure you install the [prerequisites](https://gogs.io/docs/installation) first.
|
||||
Please follow [the guide in our documentation](https://gogs.io/getting-started/installation).
|
||||
|
||||
There are 5 ways to install Gogs:
|
||||
### Deploy to cloud
|
||||
|
||||
- [Install from binary](https://gogs.io/docs/installation/install_from_binary.html)
|
||||
- [Install from source](https://gogs.io/docs/installation/install_from_source.html)
|
||||
- [Install from packages](https://gogs.io/docs/installation/install_from_packages.html)
|
||||
- [Ship with Docker](https://github.com/gogits/gogs/tree/master/docker)
|
||||
- [Install with Vagrant](https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs)
|
||||
- [Cloudron](https://www.cloudron.io/store/io.gogs.cloudronapp.html)
|
||||
- [YunoHost](https://github.com/YunoHost-Apps/gogs_ynh)
|
||||
- [alwaysdata](https://www.alwaysdata.com/en/marketplace/gogs/)
|
||||
|
||||
### Tutorials
|
||||
|
||||
- [Private Git Web Portal in Raspberry PI With Gogs](https://peppe8o.com/private-git-web-portal-in-raspberry-pi-with-gogs/)
|
||||
- [How To Set Up Gogs on Ubuntu 14.04](https://www.digitalocean.com/community/tutorials/how-to-set-up-gogs-on-ubuntu-14-04)
|
||||
- [Run your own GitHub-like service with the help of Docker](http://blog.hypriot.com/post/run-your-own-github-like-service-with-docker/)
|
||||
- [Dockerized Gogs git server and alpine postgres in 20 minutes or less](http://garthwaite.org/docker-gogs.html)
|
||||
- [Run your own GitHub-like service with the help of Docker](https://blog.hypriot.com/post/run-your-own-github-like-service-with-docker/)
|
||||
- [Dockerized Gogs git server and alpine postgres in 20 minutes or less](https://garthwaite.org/docker-gogs.html)
|
||||
- [Host Your Own Private GitHub with Gogs](https://eladnava.com/host-your-own-private-github-with-gogs-io/)
|
||||
- [使用 Gogs 搭建自己的 Git 服务器](https://mynook.info/blog/post/host-your-own-git-server-using-gogs) (Chinese)
|
||||
- [阿里云上 Ubuntu 14.04 64 位安装 Gogs](http://my.oschina.net/luyao/blog/375654) (Chinese)
|
||||
- [使用 Gogs 搭建自己的 Git 服务器](https://blog.mynook.info/post/host-your-own-git-server-using-gogs/) (Chinese)
|
||||
- [阿里云上 Ubuntu 14.04 64 位安装 Gogs](https://my.oschina.net/luyao/blog/375654) (Chinese)
|
||||
- [Installing Gogs on FreeBSD](https://www.codejam.info/2015/03/installing-gogs-on-freebsd.html)
|
||||
- [Gogs on Raspberry Pi](http://blog.meinside.pe.kr/Gogs-on-Raspberry-Pi/)
|
||||
- [Cloudflare Full SSL with Gogs using NGINX](http://www.listekconsulting.com/articles/cloudflare-full-ssl-with-gogs-go-git-service-using-nginx/)
|
||||
|
||||
### Screencasts
|
||||
|
||||
- [How to install Gogs on a Linux Server (DigitalOcean)](https://www.youtube.com/watch?v=deSfX0gqefE)
|
||||
- [Instalando Gogs no Ubuntu](https://www.youtube.com/watch?v=4UkHAR1F7ZA) (Português)
|
||||
|
||||
### Deploy to Cloud
|
||||
|
||||
- [OpenShift](https://github.com/tkisme/gogs-openshift)
|
||||
- [Cloudron](https://cloudron.io/appstore.html#io.gogs.cloudronapp)
|
||||
- [Scaleway](https://www.scaleway.com/imagehub/gogs/)
|
||||
- [Sandstorm](https://github.com/cem/gogs-sandstorm)
|
||||
- [sloppy.io](https://github.com/sloppyio/quickstarters/tree/master/gogs)
|
||||
- [YunoHost](https://github.com/YunoHost-Apps/gogs_ynh)
|
||||
- [DPlatform](https://github.com/j8r/DPlatform)
|
||||
|
||||
## Software and Service Support
|
||||
|
||||
- [Drone](https://github.com/drone/drone) (CI)
|
||||
- [Jenkins](https://wiki.jenkins-ci.org/display/JENKINS/Gogs+Webhook+Plugin) (CI)
|
||||
- [Fabric8](http://fabric8.io/) (DevOps)
|
||||
- [Taiga](https://taiga.io/) (Project Management)
|
||||
- [Puppet](https://forge.puppetlabs.com/Siteminds/gogs) (IT)
|
||||
- [Kanboard](http://kanboard.net/plugin/gogs-webhook) (Project Management)
|
||||
- [BearyChat](https://bearychat.com/) (Team Communication)
|
||||
- [HiWork](http://www.hiwork.cc/) (Team Communication)
|
||||
|
||||
### Product Support
|
||||
## 📦 Software, service and product support
|
||||
|
||||
- [Jenkins](https://plugins.jenkins.io/gogs-webhook/) (CI)
|
||||
- [Puppet](https://forge.puppet.com/modules/Siteminds/gogs) (IT)
|
||||
- [Synology](https://www.synology.com) (Docker)
|
||||
- [One Space](http://www.onespace.cc) (App Store)
|
||||
- [Syncloud](https://syncloud.org/) (App Store)
|
||||
|
||||
## Acknowledgments
|
||||
## 🙇♂️ Acknowledgments
|
||||
|
||||
- Thanks [Egon Elbre](https://twitter.com/egonelbre) for designing logo.
|
||||
- Thanks [Crowdin](https://crowdin.com/project/gogs) for providing open source translation plan.
|
||||
- Thanks [DigitalOcean](https://www.digitalocean.com) for hosting home and demo sites.
|
||||
- Thanks [KeyCDN](https://www.keycdn.com/) and [QiNiu](http://www.qiniu.com/) for providing CDN service.
|
||||
<p>This project is proudly supported by:</p>
|
||||
<p>
|
||||
<a href="https://m.do.co/c/5aeb02268b55">
|
||||
<img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" width="201px">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## Contributors
|
||||
Other acknowledgments:
|
||||
|
||||
- See [contributors page](https://github.com/gogits/gogs/graphs/contributors) for top 100 contributors.
|
||||
- Thanks [Egon Elbre](https://twitter.com/egonelbre) for designing the original version of the logo.
|
||||
- Thanks [Mintlify](https://mintlify.com) for sponsoring open source documentation plan.
|
||||
- Thanks [Crowdin](https://crowdin.com) for sponsoring open source translation plan.
|
||||
- Thanks [Buildkite](https://buildkite.com) for sponsoring open source CI/CD plan.
|
||||
|
||||
## 👋 Contributors
|
||||
|
||||
- See [contributors page](https://github.com/gogs/gogs/graphs/contributors) for top 100 contributors.
|
||||
- See [TRANSLATORS](conf/locale/TRANSLATORS) for public list of translators.
|
||||
|
||||
## License
|
||||
## ⚖️ License
|
||||
|
||||
This project is under the MIT License. See the [LICENSE](https://github.com/gogits/gogs/blob/master/LICENSE) file for the full license text.
|
||||
This project is under the MIT License. See the [LICENSE](https://github.com/gogs/gogs/blob/main/LICENSE) file for the full license text.
|
||||
|
||||
105
README_ZH.md
105
README_ZH.md
@@ -1,105 +0,0 @@
|
||||
Gogs [](https://travis-ci.org/gogits/gogs) [](https://ci.appveyor.com/project/Unknwon/gogs/branch/master)
|
||||
=====================
|
||||
|
||||
Gogs 是一款极易搭建的自助 Git 服务。
|
||||
|
||||
## 开发目的
|
||||
|
||||
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 **所有平台**,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
|
||||
|
||||
## 项目概览
|
||||
|
||||
- 有关基本用法和变更日志,请通过 [使用手册](https://gogs.io/docs/intro) 查看。
|
||||
- 想要先睹为快?直接去 [在线体验](https://try.gogs.io/gogs/gogs) 。
|
||||
- 使用过程中遇到问题?尝试从 [故障排查](https://gogs.io/docs/intro/troubleshooting.html) 页面或 [用户论坛](https://discuss.gogs.io/) 获取帮助。
|
||||
- 希望帮助多国语言界面的翻译吗?请立即访问 [详情页面](https://gogs.io/docs/features/i18n.html)!
|
||||
|
||||
## 功能特性
|
||||
|
||||
- 支持活动时间线
|
||||
- 支持 SSH 以及 HTTP/HTTPS 协议
|
||||
- 支持 SMTP、LDAP 和反向代理的用户认证
|
||||
- 支持反向代理子路径
|
||||
- 支持用户、组织和仓库管理系统
|
||||
- 支持添加和删除仓库协作者
|
||||
- 支持仓库和组织级别 Web 钩子(包括 Slack 和 Discord 集成)
|
||||
- 支持仓库 Git 钩子和部署密钥
|
||||
- 支持仓库工单(Issue)、合并请求(Pull Request)、Wiki 和保护分支
|
||||
- 支持迁移和镜像仓库以及它的 Wiki
|
||||
- 支持在线编辑仓库文件和 Wiki
|
||||
- 支持自定义源的 Gravatar 和 Federated Avatar
|
||||
- 支持 Jupyter Notebook
|
||||
- 支持邮件服务
|
||||
- 支持后台管理面板
|
||||
- 支持 MySQL、PostgreSQL、SQLite3、MSSQL 和 [TiDB](https://github.com/pingcap/tidb)(通过 MySQL 协议)数据库
|
||||
- 支持多语言本地化([23 种语言]([more](https://crowdin.com/project/gogs)))
|
||||
|
||||
## 硬件要求
|
||||
|
||||
- 最低的系统硬件要求为一个廉价的树莓派
|
||||
- 如果用于团队项目管理,建议使用 2 核 CPU 及 512MB 内存
|
||||
- 当团队成员大量增加时,可以考虑添加 CPU 核数,内存占用保持不变
|
||||
|
||||
## 浏览器支持
|
||||
|
||||
- 请根据 [Semantic UI](https://github.com/Semantic-Org/Semantic-UI#browser-support) 查看具体支持的浏览器版本。
|
||||
- 官方支持的最小 UI 尺寸为 **1024*768**,UI 不一定会在更小尺寸的设备上被破坏,但我们无法保证且不会修复。
|
||||
|
||||
## 安装部署
|
||||
|
||||
在安装 Gogs 之前,您需要先安装 [基本环境](https://gogs.io/docs/installation)。
|
||||
|
||||
然后,您可以通过以下 5 种方式来安装 Gogs:
|
||||
|
||||
- [二进制安装](https://gogs.io/docs/installation/install_from_binary.html)
|
||||
- [源码安装](https://gogs.io/docs/installation/install_from_source.html)
|
||||
- [包管理安装](https://gogs.io/docs/installation/install_from_packages.html)
|
||||
- [采用 Docker 部署](https://github.com/gogits/gogs/tree/master/docker)
|
||||
- [通过 Vagrant 安装](https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs)
|
||||
|
||||
### 使用教程
|
||||
|
||||
- [使用 Gogs 搭建自己的 Git 服务器](https://mynook.info/blog/post/host-your-own-git-server-using-gogs)
|
||||
- [阿里云上 Ubuntu 14.04 64 位安装 Gogs](http://my.oschina.net/luyao/blog/375654)
|
||||
|
||||
### 云端部署
|
||||
|
||||
- [OpenShift](https://github.com/tkisme/gogs-openshift)
|
||||
- [Cloudron](https://cloudron.io/appstore.html#io.gogs.cloudronapp)
|
||||
- [Scaleway](https://www.scaleway.com/imagehub/gogs/)
|
||||
- [Sandstorm](https://github.com/cem/gogs-sandstorm)
|
||||
- [sloppy.io](https://github.com/sloppyio/quickstarters/tree/master/gogs)
|
||||
- [YunoHost](https://github.com/mbugeia/gogs_ynh)
|
||||
- [DPlatform](https://github.com/j8r/DPlatform)
|
||||
|
||||
## 软件及服务支持
|
||||
|
||||
- [Drone](https://github.com/drone/drone)(CI)
|
||||
- [Jenkins](https://wiki.jenkins-ci.org/display/JENKINS/Gogs+Webhook+Plugin)(CI)
|
||||
- [Fabric8](http://fabric8.io/)(DevOps)
|
||||
- [Taiga](https://taiga.io/)(项目管理)
|
||||
- [Puppet](https://forge.puppetlabs.com/Siteminds/gogs)(IT)
|
||||
- [Kanboard](http://kanboard.net/plugin/gogs-webhook)(项目管理)
|
||||
- [BearyChat](https://bearychat.com/)(团队交流)
|
||||
- [HiWork](http://www.hiwork.cc/)(团队交流)
|
||||
|
||||
### 产品支持
|
||||
|
||||
- [Synology](https://www.synology.com)(Docker)
|
||||
- [One Space](http://www.onespace.cc)(应用商店)
|
||||
|
||||
## 特别鸣谢
|
||||
|
||||
- 感谢 [Egon Elbre](https://twitter.com/egonelbre) 设计的 Logo。
|
||||
- 感谢 [Crowdin](https://crowdin.com/project/gogs) 提供免费的开源项目本地化支持。
|
||||
- 感谢 [DigitalOcean](https://www.digitalocean.com) 提供主站和体验站点的服务器赞助。
|
||||
- 感谢 [KeyCDN](https://www.keycdn.com/) 和 [七牛云存储](http://www.qiniu.com/) 提供 CDN 服务赞助。
|
||||
|
||||
## 贡献成员
|
||||
|
||||
- 您可以通过查看 [贡献者页面](https://github.com/gogits/gogs/graphs/contributors) 获取 TOP 100 的贡献者列表。
|
||||
- 您可以通过查看 [TRANSLATORS](conf/locale/TRANSLATORS) 文件获取公开的翻译人员列表。
|
||||
|
||||
## 授权许可
|
||||
|
||||
本项目采用 MIT 开源授权许可证,完整的授权说明已放置在 [LICENSE](https://github.com/gogits/gogs/blob/master/LICENSE) 文件中。
|
||||
27
SECURITY.md
Normal file
27
SECURITY.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Security policy
|
||||
|
||||
## Supported versions
|
||||
|
||||
Only the latest minor version releases are supported (e.g., 0.14) for patching vulnerabilities. You can find the latest minor version in the [GitHub releases](https://github.com/gogs/gogs/releases) page.
|
||||
|
||||
Existing vulnerability reports are being tracked in [GitHub Security Advisories](https://github.com/gogs/gogs/security/advisories). Not all accepted GHSA are published.
|
||||
|
||||
## Vulnerability lifecycle
|
||||
|
||||
> [!important]
|
||||
> Starting **Nov 9, 2023 00:00 UTC**, only security vulnerabilities reported through [GitHub Security Advisories](https://github.com/gogs/gogs/security/advisories/new) are accepted.
|
||||
> Pre-existing vulnerability reported through https://huntr.dev/ or email (`security@gogs.io`) will continue to be worked through.
|
||||
|
||||
1. Report an advisory for the vulnerability.
|
||||
- Please be aware that **only advisories reported in plain English** will be reviewed.
|
||||
- We DO NOT accept vulnerabilities cannot be reproduced on the latest `main` commit.
|
||||
1. Project maintainers review the advisory:
|
||||
- Ask clarifying questions
|
||||
- Make sure there was no prior advisory exists for the same vulnerability
|
||||
- Confirm or deny the vulnerability
|
||||
1. Once the advisory is accepted, the reporter may submit a patch or wait for project maintainers to patch.
|
||||
- The latter is usually significantly slower.
|
||||
1. Patch releases will be made for the supported versions.
|
||||
1. After 14 days of the release, publish the corresponding advisory on [GitHub Security Advisories](https://github.com/gogs/gogs/security/advisories).
|
||||
|
||||
Thank you for making open source community a better place!
|
||||
99
Taskfile.yml
Normal file
99
Taskfile.yml
Normal file
@@ -0,0 +1,99 @@
|
||||
version: '3'
|
||||
|
||||
vars:
|
||||
BINARY_EXT:
|
||||
sh: echo '{{if eq OS "windows"}}.exe{{end}}'
|
||||
|
||||
tasks:
|
||||
default:
|
||||
deps: [build]
|
||||
web:
|
||||
desc: Build the binary and start the web server
|
||||
deps: [build]
|
||||
cmds:
|
||||
- .bin/gogs web
|
||||
|
||||
build:
|
||||
desc: Build the binary
|
||||
cmds:
|
||||
- go build -v
|
||||
-ldflags '
|
||||
-X "{{.PKG_PATH}}.BuildTime={{.BUILD_TIME}}"
|
||||
-X "{{.PKG_PATH}}.BuildCommit={{.BUILD_COMMIT}}"
|
||||
'
|
||||
-tags '{{.TAGS}}'
|
||||
-trimpath -o .bin/gogs{{.BINARY_EXT}} ./cmd/gogs
|
||||
vars:
|
||||
PKG_PATH: gogs.io/gogs/internal/conf
|
||||
BUILD_TIME:
|
||||
sh: date -u '+%Y-%m-%d %I:%M:%S %Z'
|
||||
BUILD_COMMIT:
|
||||
sh: git rev-parse HEAD
|
||||
sources:
|
||||
- go.mod
|
||||
- cmd/gogs/*.go
|
||||
- internal/**/*.go
|
||||
- conf/**/*
|
||||
- public/**/*
|
||||
- templates/**/*
|
||||
- custom/**/*
|
||||
method: timestamp
|
||||
|
||||
generate-schemadoc:
|
||||
desc: Generate database schema documentation
|
||||
cmds:
|
||||
- go generate ./internal/database/schemadoc
|
||||
|
||||
generate:
|
||||
desc: Run all go:generate commands
|
||||
cmds:
|
||||
- go generate ./...
|
||||
|
||||
test:
|
||||
desc: Run all tests.
|
||||
cmds:
|
||||
- go test -cover -race ./...
|
||||
|
||||
clean:
|
||||
desc: Cleans up system meta files
|
||||
cmds:
|
||||
- find . -name "*.DS_Store" -type f -delete
|
||||
|
||||
less:
|
||||
desc: Generate CSS from LESS files
|
||||
cmds:
|
||||
- lessc --clean-css --source-map "public/less/gogs.less" public/css/gogs.min.css
|
||||
|
||||
fixme:
|
||||
desc: Show all occurrences of "FIXME"
|
||||
cmds:
|
||||
- grep -rnw "FIXME" internal
|
||||
|
||||
todo:
|
||||
desc: Show all occurrences of "TODO"
|
||||
cmds:
|
||||
- grep -rnw "TODO" internal
|
||||
|
||||
legacy:
|
||||
desc: Identify legacy and deprecated lines
|
||||
cmds:
|
||||
- grep -rnw "\(LEGACY\|Deprecated\)" internal
|
||||
|
||||
drop-test-db:
|
||||
desc: Drop the test database
|
||||
cmds:
|
||||
- |
|
||||
for dbname in $(psql -Xc "copy (select datname from pg_database where datname like 'gogs-%') to stdout"); do
|
||||
dropdb "$dbname"
|
||||
echo "dropped $dbname"
|
||||
done
|
||||
|
||||
lint:
|
||||
desc: Run all linters
|
||||
cmds:
|
||||
- golangci-lint run
|
||||
|
||||
docs:
|
||||
desc: Start docs server
|
||||
cmds:
|
||||
- cd docs && mint dev --port 3333
|
||||
20
appveyor.yml
20
appveyor.yml
@@ -1,20 +0,0 @@
|
||||
version: "{build}"
|
||||
skip_tags: true
|
||||
clone_folder: c:\gopath\src\github.com\gogits\gogs
|
||||
clone_depth: 1
|
||||
|
||||
environment:
|
||||
GOPATH: c:\gopath
|
||||
GOVERSION: 1.7
|
||||
|
||||
build: false
|
||||
deploy: false
|
||||
|
||||
install:
|
||||
- go build -v
|
||||
|
||||
notifications:
|
||||
- provider: Email
|
||||
to:
|
||||
- u@gogs.io
|
||||
on_build_success: false
|
||||
70
cmd/admin.go
70
cmd/admin.go
@@ -1,70 +0,0 @@
|
||||
// Copyright 2016 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/urfave/cli"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
var (
|
||||
Admin = cli.Command{
|
||||
Name: "admin",
|
||||
Usage: "Preform admin operations on command line",
|
||||
Description: `Allow using internal logic of Gogs without hacking into the source code
|
||||
to make automatic initialization process more smoothly`,
|
||||
Subcommands: []cli.Command{
|
||||
subcmdCreateUser,
|
||||
},
|
||||
}
|
||||
|
||||
subcmdCreateUser = cli.Command{
|
||||
Name: "create-user",
|
||||
Usage: "Create a new user in database",
|
||||
Action: runCreateUser,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("name", "", "Username"),
|
||||
stringFlag("password", "", "User password"),
|
||||
stringFlag("email", "", "User email address"),
|
||||
boolFlag("admin", "User is an admin"),
|
||||
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func runCreateUser(c *cli.Context) error {
|
||||
if !c.IsSet("name") {
|
||||
return fmt.Errorf("Username is not specified")
|
||||
} else if !c.IsSet("password") {
|
||||
return fmt.Errorf("Password is not specified")
|
||||
} else if !c.IsSet("email") {
|
||||
return fmt.Errorf("Email is not specified")
|
||||
}
|
||||
|
||||
if c.IsSet("config") {
|
||||
setting.CustomConf = c.String("config")
|
||||
}
|
||||
|
||||
setting.NewContext()
|
||||
models.LoadConfigs()
|
||||
models.SetEngine()
|
||||
|
||||
if err := models.CreateUser(&models.User{
|
||||
Name: c.String("name"),
|
||||
Email: c.String("email"),
|
||||
Passwd: c.String("password"),
|
||||
IsActive: true,
|
||||
IsAdmin: c.Bool("admin"),
|
||||
}); err != nil {
|
||||
return fmt.Errorf("CreateUser: %v", err)
|
||||
}
|
||||
|
||||
fmt.Printf("New user '%s' has been successfully created!\n", c.String("name"))
|
||||
return nil
|
||||
}
|
||||
136
cmd/backup.go
136
cmd/backup.go
@@ -1,136 +0,0 @@
|
||||
// Copyright 2017 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
"time"
|
||||
|
||||
"github.com/Unknwon/cae/zip"
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/urfave/cli"
|
||||
log "gopkg.in/clog.v1"
|
||||
"gopkg.in/ini.v1"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
var Backup = cli.Command{
|
||||
Name: "backup",
|
||||
Usage: "Backup files and database",
|
||||
Description: `Backup dumps and compresses all related files and database into zip file,
|
||||
which can be used for migrating Gogs to another server. The output format is meant to be
|
||||
portable among all supported database engines.`,
|
||||
Action: runBackup,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
|
||||
boolFlag("verbose, v", "Show process details"),
|
||||
stringFlag("tempdir, t", os.TempDir(), "Temporary directory path"),
|
||||
stringFlag("target", "./", "Target directory path to save backup archive"),
|
||||
stringFlag("archive-name", fmt.Sprintf("gogs-backup-%d.zip", time.Now().Unix()), "Name of backup archive"),
|
||||
boolFlag("database-only", "Only dump database"),
|
||||
boolFlag("exclude-repos", "Exclude repositories"),
|
||||
},
|
||||
}
|
||||
|
||||
const _ARCHIVE_ROOT_DIR = "gogs-backup"
|
||||
|
||||
func runBackup(c *cli.Context) error {
|
||||
zip.Verbose = c.Bool("verbose")
|
||||
if c.IsSet("config") {
|
||||
setting.CustomConf = c.String("config")
|
||||
}
|
||||
setting.NewContext()
|
||||
models.LoadConfigs()
|
||||
models.SetEngine()
|
||||
|
||||
tmpDir := c.String("tempdir")
|
||||
if !com.IsExist(tmpDir) {
|
||||
log.Fatal(0, "'--tempdir' does not exist: %s", tmpDir)
|
||||
}
|
||||
rootDir, err := ioutil.TempDir(tmpDir, "gogs-backup-")
|
||||
if err != nil {
|
||||
log.Fatal(0, "Fail to create backup root directory '%s': %v", rootDir, err)
|
||||
}
|
||||
log.Info("Backup root directory: %s", rootDir)
|
||||
|
||||
// Metadata
|
||||
metaFile := path.Join(rootDir, "metadata.ini")
|
||||
metadata := ini.Empty()
|
||||
metadata.Section("").Key("VERSION").SetValue("1")
|
||||
metadata.Section("").Key("DATE_TIME").SetValue(time.Now().String())
|
||||
metadata.Section("").Key("GOGS_VERSION").SetValue(setting.AppVer)
|
||||
if err = metadata.SaveTo(metaFile); err != nil {
|
||||
log.Fatal(0, "Fail to save metadata '%s': %v", metaFile, err)
|
||||
}
|
||||
|
||||
archiveName := path.Join(c.String("target"), c.String("archive-name"))
|
||||
log.Info("Packing backup files to: %s", archiveName)
|
||||
|
||||
z, err := zip.Create(archiveName)
|
||||
if err != nil {
|
||||
log.Fatal(0, "Fail to create backup archive '%s': %v", archiveName, err)
|
||||
}
|
||||
if err = z.AddFile(_ARCHIVE_ROOT_DIR+"/metadata.ini", metaFile); err != nil {
|
||||
log.Fatal(0, "Fail to include 'metadata.ini': %v", err)
|
||||
}
|
||||
|
||||
// Database
|
||||
dbDir := path.Join(rootDir, "db")
|
||||
if err = models.DumpDatabase(dbDir); err != nil {
|
||||
log.Fatal(0, "Fail to dump database: %v", err)
|
||||
}
|
||||
if err = z.AddDir(_ARCHIVE_ROOT_DIR+"/db", dbDir); err != nil {
|
||||
log.Fatal(0, "Fail to include 'db': %v", err)
|
||||
}
|
||||
|
||||
// Custom files
|
||||
if !c.Bool("database-only") {
|
||||
if err = z.AddDir(_ARCHIVE_ROOT_DIR+"/custom", setting.CustomPath); err != nil {
|
||||
log.Fatal(0, "Fail to include 'custom': %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Data files
|
||||
if !c.Bool("database-only") {
|
||||
for _, dir := range []string{"attachments", "avatars"} {
|
||||
dirPath := path.Join(setting.AppDataPath, dir)
|
||||
if !com.IsDir(dirPath) {
|
||||
continue
|
||||
}
|
||||
|
||||
if err = z.AddDir(path.Join(_ARCHIVE_ROOT_DIR+"/data", dir), dirPath); err != nil {
|
||||
log.Fatal(0, "Fail to include 'data': %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Repositories
|
||||
if !c.Bool("exclude-repos") && !c.Bool("database-only") {
|
||||
reposDump := path.Join(rootDir, "repositories.zip")
|
||||
log.Info("Dumping repositories in '%s'", setting.RepoRootPath)
|
||||
if err = zip.PackTo(setting.RepoRootPath, reposDump, true); err != nil {
|
||||
log.Fatal(0, "Fail to dump repositories: %v", err)
|
||||
}
|
||||
log.Info("Repositories dumped to: %s", reposDump)
|
||||
|
||||
if err = z.AddFile(_ARCHIVE_ROOT_DIR+"/repositories.zip", reposDump); err != nil {
|
||||
log.Fatal(0, "Fail to include 'repositories.zip': %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
if err = z.Close(); err != nil {
|
||||
log.Fatal(0, "Fail to save backup archive '%s': %v", archiveName, err)
|
||||
}
|
||||
|
||||
os.RemoveAll(rootDir)
|
||||
log.Info("Backup succeed! Archive is located at: %s", archiveName)
|
||||
log.Shutdown()
|
||||
return nil
|
||||
}
|
||||
163
cmd/cert.go
163
cmd/cert.go
@@ -1,163 +0,0 @@
|
||||
// +build cert
|
||||
|
||||
// Copyright 2009 The Go Authors. All rights reserved.
|
||||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"crypto/ecdsa"
|
||||
"crypto/elliptic"
|
||||
"crypto/rand"
|
||||
"crypto/rsa"
|
||||
"crypto/x509"
|
||||
"crypto/x509/pkix"
|
||||
"encoding/pem"
|
||||
"log"
|
||||
"math/big"
|
||||
"net"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
var Cert = cli.Command{
|
||||
Name: "cert",
|
||||
Usage: "Generate self-signed certificate",
|
||||
Description: `Generate a self-signed X.509 certificate for a TLS server.
|
||||
Outputs to 'cert.pem' and 'key.pem' and will overwrite existing files.`,
|
||||
Action: runCert,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("host", "", "Comma-separated hostnames and IPs to generate a certificate for"),
|
||||
stringFlag("ecdsa-curve", "", "ECDSA curve to use to generate a key. Valid values are P224, P256, P384, P521"),
|
||||
intFlag("rsa-bits", 2048, "Size of RSA key to generate. Ignored if --ecdsa-curve is set"),
|
||||
stringFlag("start-date", "", "Creation date formatted as Jan 1 15:04:05 2011"),
|
||||
durationFlag("duration", 365*24*time.Hour, "Duration that certificate is valid for"),
|
||||
boolFlag("ca", "whether this cert should be its own Certificate Authority"),
|
||||
},
|
||||
}
|
||||
|
||||
func publicKey(priv interface{}) interface{} {
|
||||
switch k := priv.(type) {
|
||||
case *rsa.PrivateKey:
|
||||
return &k.PublicKey
|
||||
case *ecdsa.PrivateKey:
|
||||
return &k.PublicKey
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func pemBlockForKey(priv interface{}) *pem.Block {
|
||||
switch k := priv.(type) {
|
||||
case *rsa.PrivateKey:
|
||||
return &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(k)}
|
||||
case *ecdsa.PrivateKey:
|
||||
b, err := x509.MarshalECPrivateKey(k)
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to marshal ECDSA private key: %v\n", err)
|
||||
}
|
||||
return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func runCert(ctx *cli.Context) error {
|
||||
if len(ctx.String("host")) == 0 {
|
||||
log.Fatal("Missing required --host parameter")
|
||||
}
|
||||
|
||||
var priv interface{}
|
||||
var err error
|
||||
switch ctx.String("ecdsa-curve") {
|
||||
case "":
|
||||
priv, err = rsa.GenerateKey(rand.Reader, ctx.Int("rsa-bits"))
|
||||
case "P224":
|
||||
priv, err = ecdsa.GenerateKey(elliptic.P224(), rand.Reader)
|
||||
case "P256":
|
||||
priv, err = ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
|
||||
case "P384":
|
||||
priv, err = ecdsa.GenerateKey(elliptic.P384(), rand.Reader)
|
||||
case "P521":
|
||||
priv, err = ecdsa.GenerateKey(elliptic.P521(), rand.Reader)
|
||||
default:
|
||||
log.Fatalf("Unrecognized elliptic curve: %q", ctx.String("ecdsa-curve"))
|
||||
}
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to generate private key: %s", err)
|
||||
}
|
||||
|
||||
var notBefore time.Time
|
||||
if len(ctx.String("start-date")) == 0 {
|
||||
notBefore = time.Now()
|
||||
} else {
|
||||
notBefore, err = time.Parse("Jan 2 15:04:05 2006", ctx.String("start-date"))
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to parse creation date: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
notAfter := notBefore.Add(ctx.Duration("duration"))
|
||||
|
||||
serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
|
||||
serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to generate serial number: %s", err)
|
||||
}
|
||||
|
||||
template := x509.Certificate{
|
||||
SerialNumber: serialNumber,
|
||||
Subject: pkix.Name{
|
||||
Organization: []string{"Acme Co"},
|
||||
CommonName: "Gogs",
|
||||
},
|
||||
NotBefore: notBefore,
|
||||
NotAfter: notAfter,
|
||||
|
||||
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
|
||||
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
|
||||
BasicConstraintsValid: true,
|
||||
}
|
||||
|
||||
hosts := strings.Split(ctx.String("host"), ",")
|
||||
for _, h := range hosts {
|
||||
if ip := net.ParseIP(h); ip != nil {
|
||||
template.IPAddresses = append(template.IPAddresses, ip)
|
||||
} else {
|
||||
template.DNSNames = append(template.DNSNames, h)
|
||||
}
|
||||
}
|
||||
|
||||
if ctx.Bool("ca") {
|
||||
template.IsCA = true
|
||||
template.KeyUsage |= x509.KeyUsageCertSign
|
||||
}
|
||||
|
||||
derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to create certificate: %s", err)
|
||||
}
|
||||
|
||||
certOut, err := os.Create("cert.pem")
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to open cert.pem for writing: %s", err)
|
||||
}
|
||||
pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes})
|
||||
certOut.Close()
|
||||
log.Println("Written cert.pem")
|
||||
|
||||
keyOut, err := os.OpenFile("key.pem", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to open key.pem for writing: %v\n", err)
|
||||
}
|
||||
pem.Encode(keyOut, pemBlockForKey(priv))
|
||||
keyOut.Close()
|
||||
log.Println("Written key.pem")
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
// +build !cert
|
||||
|
||||
// Copyright 2009 The Go Authors. All rights reserved.
|
||||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
var Cert = cli.Command{
|
||||
Name: "cert",
|
||||
Usage: "Generate self-signed certificate",
|
||||
Description: `Please use build tags "cert" to rebuild Gogs in order to have this ability`,
|
||||
Action: runCert,
|
||||
}
|
||||
|
||||
func runCert(ctx *cli.Context) error {
|
||||
fmt.Println("Command cert not available, please use build tags 'cert' to rebuild.")
|
||||
os.Exit(1)
|
||||
|
||||
return nil
|
||||
}
|
||||
42
cmd/cmd.go
42
cmd/cmd.go
@@ -1,42 +0,0 @@
|
||||
// Copyright 2015 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
func stringFlag(name, value, usage string) cli.StringFlag {
|
||||
return cli.StringFlag{
|
||||
Name: name,
|
||||
Value: value,
|
||||
Usage: usage,
|
||||
}
|
||||
}
|
||||
|
||||
func boolFlag(name, usage string) cli.BoolFlag {
|
||||
return cli.BoolFlag{
|
||||
Name: name,
|
||||
Usage: usage,
|
||||
}
|
||||
}
|
||||
|
||||
func intFlag(name string, value int, usage string) cli.IntFlag {
|
||||
return cli.IntFlag{
|
||||
Name: name,
|
||||
Value: value,
|
||||
Usage: usage,
|
||||
}
|
||||
}
|
||||
|
||||
func durationFlag(name string, value time.Duration, usage string) cli.DurationFlag {
|
||||
return cli.DurationFlag{
|
||||
Name: name,
|
||||
Value: value,
|
||||
Usage: usage,
|
||||
}
|
||||
}
|
||||
189
cmd/gogs/admin.go
Normal file
189
cmd/gogs/admin.go
Normal file
@@ -0,0 +1,189 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"runtime"
|
||||
|
||||
"github.com/cockroachdb/errors"
|
||||
"github.com/urfave/cli/v3"
|
||||
|
||||
"gogs.io/gogs/internal/conf"
|
||||
"gogs.io/gogs/internal/database"
|
||||
)
|
||||
|
||||
var (
|
||||
adminCommand = cli.Command{
|
||||
Name: "admin",
|
||||
Usage: "Perform admin operations on command line",
|
||||
Description: `Allow using internal logic of Gogs without hacking into the source code
|
||||
to make automatic initialization process more smoothly`,
|
||||
Commands: []*cli.Command{
|
||||
&subcmdCreateUser,
|
||||
&subcmdDeleteInactivateUsers,
|
||||
&subcmdDeleteRepositoryArchives,
|
||||
&subcmdDeleteMissingRepositories,
|
||||
&subcmdGitGcRepos,
|
||||
&subcmdRewriteAuthorizedKeys,
|
||||
&subcmdSyncRepositoryHooks,
|
||||
&subcmdReinitMissingRepositories,
|
||||
},
|
||||
}
|
||||
|
||||
subcmdCreateUser = cli.Command{
|
||||
Name: "create-user",
|
||||
Usage: "Create a new user in database",
|
||||
Action: runCreateUser,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("name", "", "Username"),
|
||||
stringFlag("password", "", "User password"),
|
||||
stringFlag("email", "", "User email address"),
|
||||
boolFlag("admin", "User is an admin"),
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
subcmdDeleteInactivateUsers = cli.Command{
|
||||
Name: "delete-inactive-users",
|
||||
Usage: "Delete all inactive accounts",
|
||||
Action: adminDashboardOperation(
|
||||
func() error { return database.Handle.Users().DeleteInactivated() },
|
||||
"All inactivated accounts have been deleted successfully",
|
||||
),
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
subcmdDeleteRepositoryArchives = cli.Command{
|
||||
Name: "delete-repository-archives",
|
||||
Usage: "Delete all repositories archives",
|
||||
Action: adminDashboardOperation(
|
||||
database.DeleteRepositoryArchives,
|
||||
"All repositories archives have been deleted successfully",
|
||||
),
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
subcmdDeleteMissingRepositories = cli.Command{
|
||||
Name: "delete-missing-repositories",
|
||||
Usage: "Delete all repository records that lost Git files",
|
||||
Action: adminDashboardOperation(
|
||||
database.DeleteMissingRepositories,
|
||||
"All repositories archives have been deleted successfully",
|
||||
),
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
subcmdGitGcRepos = cli.Command{
|
||||
Name: "collect-garbage",
|
||||
Usage: "Do garbage collection on repositories",
|
||||
Action: adminDashboardOperation(
|
||||
database.GitGcRepos,
|
||||
"All repositories have done garbage collection successfully",
|
||||
),
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
subcmdRewriteAuthorizedKeys = cli.Command{
|
||||
Name: "rewrite-authorized-keys",
|
||||
Usage: "Rewrite '.ssh/authorized_keys' file (caution: non-Gogs keys will be lost)",
|
||||
Action: adminDashboardOperation(
|
||||
database.RewriteAuthorizedKeys,
|
||||
"All public keys have been rewritten successfully",
|
||||
),
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
subcmdSyncRepositoryHooks = cli.Command{
|
||||
Name: "resync-hooks",
|
||||
Usage: "Resync pre-receive, update and post-receive hooks",
|
||||
Action: adminDashboardOperation(
|
||||
database.SyncRepositoryHooks,
|
||||
"All repositories' pre-receive, update and post-receive hooks have been resynced successfully",
|
||||
),
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
subcmdReinitMissingRepositories = cli.Command{
|
||||
Name: "reinit-missing-repositories",
|
||||
Usage: "Reinitialize all repository records that lost Git files",
|
||||
Action: adminDashboardOperation(
|
||||
database.ReinitMissingRepositories,
|
||||
"All repository records that lost Git files have been reinitialized successfully",
|
||||
),
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func runCreateUser(ctx context.Context, cmd *cli.Command) error {
|
||||
if !cmd.IsSet("name") {
|
||||
return errors.New("Username is not specified")
|
||||
} else if !cmd.IsSet("password") {
|
||||
return errors.New("Password is not specified")
|
||||
} else if !cmd.IsSet("email") {
|
||||
return errors.New("Email is not specified")
|
||||
}
|
||||
|
||||
err := conf.Init(configFromLineage(cmd))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "init configuration")
|
||||
}
|
||||
conf.InitLogging(true)
|
||||
|
||||
if _, err = database.SetEngine(); err != nil {
|
||||
return errors.Wrap(err, "set engine")
|
||||
}
|
||||
|
||||
user, err := database.Handle.Users().Create(
|
||||
ctx,
|
||||
cmd.String("name"),
|
||||
cmd.String("email"),
|
||||
database.CreateUserOptions{
|
||||
Password: cmd.String("password"),
|
||||
Activated: true,
|
||||
Admin: cmd.Bool("admin"),
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "create user")
|
||||
}
|
||||
|
||||
fmt.Printf("New user %q has been successfully created!\n", user.Name)
|
||||
return nil
|
||||
}
|
||||
|
||||
func adminDashboardOperation(operation func() error, successMessage string) func(context.Context, *cli.Command) error {
|
||||
return func(_ context.Context, cmd *cli.Command) error {
|
||||
err := conf.Init(configFromLineage(cmd))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "init configuration")
|
||||
}
|
||||
conf.InitLogging(true)
|
||||
|
||||
if _, err = database.SetEngine(); err != nil {
|
||||
return errors.Wrap(err, "set engine")
|
||||
}
|
||||
|
||||
if err := operation(); err != nil {
|
||||
functionName := runtime.FuncForPC(reflect.ValueOf(operation).Pointer()).Name()
|
||||
return errors.Newf("%s: %v", functionName, err)
|
||||
}
|
||||
|
||||
fmt.Printf("%s\n", successMessage)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
194
cmd/gogs/backup.go
Normal file
194
cmd/gogs/backup.go
Normal file
@@ -0,0 +1,194 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/cockroachdb/errors"
|
||||
"github.com/unknwon/cae/zip"
|
||||
"github.com/urfave/cli/v3"
|
||||
"gopkg.in/ini.v1"
|
||||
log "unknwon.dev/clog/v2"
|
||||
|
||||
"gogs.io/gogs/internal/conf"
|
||||
"gogs.io/gogs/internal/database"
|
||||
"gogs.io/gogs/internal/osx"
|
||||
)
|
||||
|
||||
var backupCommand = cli.Command{
|
||||
Name: "backup",
|
||||
Usage: "Backup files and database",
|
||||
Description: `Backup dumps and compresses all related files and database into zip file,
|
||||
which can be used for migrating Gogs to another server. The output format is meant to be
|
||||
portable among all supported database engines.`,
|
||||
Action: runBackup,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
boolFlag("verbose, v", "Show process details"),
|
||||
stringFlag("tempdir, t", os.TempDir(), "Temporary directory path"),
|
||||
stringFlag("target", "./", "Target directory path to save backup archive"),
|
||||
stringFlag("archive-name", fmt.Sprintf("gogs-backup-%s.zip", time.Now().Format("20060102150405")), "Name of backup archive"),
|
||||
boolFlag("database-only", "Only dump database"),
|
||||
boolFlag("exclude-mirror-repos", "Exclude mirror repositories"),
|
||||
boolFlag("exclude-repos", "Exclude repositories"),
|
||||
},
|
||||
}
|
||||
|
||||
const (
|
||||
currentBackupFormatVersion = 1
|
||||
archiveRootDir = "gogs-backup"
|
||||
)
|
||||
|
||||
func runBackup(ctx context.Context, cmd *cli.Command) error {
|
||||
zip.Verbose = cmd.Bool("verbose")
|
||||
|
||||
err := conf.Init(configFromLineage(cmd))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "init configuration")
|
||||
}
|
||||
conf.InitLogging(true)
|
||||
|
||||
conn, err := database.SetEngine()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "set engine")
|
||||
}
|
||||
|
||||
tmpDir := cmd.String("tempdir")
|
||||
if !osx.Exist(tmpDir) {
|
||||
log.Fatal("'--tempdir' does not exist: %s", tmpDir)
|
||||
}
|
||||
rootDir, err := os.MkdirTemp(tmpDir, "gogs-backup-")
|
||||
if err != nil {
|
||||
log.Fatal("Failed to create backup root directory '%s': %v", rootDir, err)
|
||||
}
|
||||
log.Info("Backup root directory: %s", rootDir)
|
||||
|
||||
// Metadata
|
||||
metaFile := path.Join(rootDir, "metadata.ini")
|
||||
metadata := ini.Empty()
|
||||
metadata.Section("").Key("VERSION").SetValue(strconv.Itoa(currentBackupFormatVersion))
|
||||
metadata.Section("").Key("DATE_TIME").SetValue(time.Now().String())
|
||||
metadata.Section("").Key("GOGS_VERSION").SetValue(conf.App.Version)
|
||||
if err = metadata.SaveTo(metaFile); err != nil {
|
||||
log.Fatal("Failed to save metadata '%s': %v", metaFile, err)
|
||||
}
|
||||
|
||||
archiveName := filepath.Join(cmd.String("target"), cmd.String("archive-name"))
|
||||
log.Info("Packing backup files to: %s", archiveName)
|
||||
|
||||
z, err := zip.Create(archiveName)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to create backup archive '%s': %v", archiveName, err)
|
||||
}
|
||||
if err = z.AddFile(archiveRootDir+"/metadata.ini", metaFile); err != nil {
|
||||
log.Fatal("Failed to include 'metadata.ini': %v", err)
|
||||
}
|
||||
|
||||
// Database
|
||||
dbDir := filepath.Join(rootDir, "db")
|
||||
if err = database.DumpDatabase(ctx, conn, dbDir, cmd.Bool("verbose")); err != nil {
|
||||
log.Fatal("Failed to dump database: %v", err)
|
||||
}
|
||||
if err = z.AddDir(archiveRootDir+"/db", dbDir); err != nil {
|
||||
log.Fatal("Failed to include 'db': %v", err)
|
||||
}
|
||||
|
||||
if !cmd.Bool("database-only") {
|
||||
// Custom files
|
||||
err = addCustomDirToBackup(z)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to add custom directory to backup: %v", err)
|
||||
}
|
||||
|
||||
// Data files
|
||||
for _, dir := range []string{"ssh", "attachments", "avatars", "repo-avatars"} {
|
||||
dirPath := filepath.Join(conf.Server.AppDataPath, dir)
|
||||
if !osx.IsDir(dirPath) {
|
||||
continue
|
||||
}
|
||||
|
||||
if err = z.AddDir(path.Join(archiveRootDir+"/data", dir), dirPath); err != nil {
|
||||
log.Fatal("Failed to include 'data': %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Repositories
|
||||
if !cmd.Bool("exclude-repos") && !cmd.Bool("database-only") {
|
||||
reposDump := filepath.Join(rootDir, "repositories.zip")
|
||||
log.Info("Dumping repositories in %q", conf.Repository.Root)
|
||||
if cmd.Bool("exclude-mirror-repos") {
|
||||
repos, err := database.GetNonMirrorRepositories()
|
||||
if err != nil {
|
||||
log.Fatal("Failed to get non-mirror repositories: %v", err)
|
||||
}
|
||||
reposZip, err := zip.Create(reposDump)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to create %q: %v", reposDump, err)
|
||||
}
|
||||
baseDir := filepath.Base(conf.Repository.Root)
|
||||
for _, r := range repos {
|
||||
name := r.FullName() + ".git"
|
||||
if err := reposZip.AddDir(filepath.Join(baseDir, name), filepath.Join(conf.Repository.Root, name)); err != nil {
|
||||
log.Fatal("Failed to add %q: %v", name, err)
|
||||
}
|
||||
}
|
||||
if err = reposZip.Close(); err != nil {
|
||||
log.Fatal("Failed to save %q: %v", reposDump, err)
|
||||
}
|
||||
} else {
|
||||
if err = zip.PackTo(conf.Repository.Root, reposDump, true); err != nil {
|
||||
log.Fatal("Failed to dump repositories: %v", err)
|
||||
}
|
||||
}
|
||||
log.Info("Repositories dumped to: %s", reposDump)
|
||||
|
||||
if err = z.AddFile(archiveRootDir+"/repositories.zip", reposDump); err != nil {
|
||||
log.Fatal("Failed to include %q: %v", reposDump, err)
|
||||
}
|
||||
}
|
||||
|
||||
if err = z.Close(); err != nil {
|
||||
log.Fatal("Failed to save backup archive '%s': %v", archiveName, err)
|
||||
}
|
||||
|
||||
_ = os.RemoveAll(rootDir)
|
||||
log.Info("Backup succeed! Archive is located at: %s", archiveName)
|
||||
log.Stop()
|
||||
return nil
|
||||
}
|
||||
|
||||
func addCustomDirToBackup(z *zip.ZipArchive) error {
|
||||
customDir := conf.CustomDir()
|
||||
entries, err := os.ReadDir(customDir)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "list custom directory entries")
|
||||
}
|
||||
|
||||
for _, e := range entries {
|
||||
if e.Name() == "data" {
|
||||
// Skip the "data" directory because it lives under the "custom" directory in
|
||||
// the Docker setup and will be backed up separately.
|
||||
log.Trace(`Skipping "data" directory in custom directory`)
|
||||
continue
|
||||
}
|
||||
|
||||
add := z.AddFile
|
||||
if e.IsDir() {
|
||||
add = z.AddDir
|
||||
}
|
||||
err = add(
|
||||
fmt.Sprintf("%s/custom/%s", archiveRootDir, e.Name()),
|
||||
filepath.Join(customDir, e.Name()),
|
||||
)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "add %q", e.Name())
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
43
cmd/gogs/cmd.go
Normal file
43
cmd/gogs/cmd.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/urfave/cli/v3"
|
||||
)
|
||||
|
||||
func stringFlag(name, value, usage string) *cli.StringFlag {
|
||||
parts := strings.SplitN(name, ", ", 2)
|
||||
f := &cli.StringFlag{
|
||||
Name: parts[0],
|
||||
Value: value,
|
||||
Usage: usage,
|
||||
}
|
||||
if len(parts) > 1 {
|
||||
f.Aliases = []string{parts[1]}
|
||||
}
|
||||
return f
|
||||
}
|
||||
|
||||
// configFromLineage walks the command lineage to find the --config flag value.
|
||||
// This is needed because subcommands may not directly see flags set on parent commands.
|
||||
func configFromLineage(cmd *cli.Command) string {
|
||||
for _, c := range cmd.Lineage() {
|
||||
if c.IsSet("config") {
|
||||
return c.String("config")
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func boolFlag(name, usage string) *cli.BoolFlag {
|
||||
parts := strings.SplitN(name, ", ", 2)
|
||||
f := &cli.BoolFlag{
|
||||
Name: parts[0],
|
||||
Usage: usage,
|
||||
}
|
||||
if len(parts) > 1 {
|
||||
f.Aliases = []string{parts[1]}
|
||||
}
|
||||
return f
|
||||
}
|
||||
273
cmd/gogs/hook.go
Normal file
273
cmd/gogs/hook.go
Normal file
@@ -0,0 +1,273 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/urfave/cli/v3"
|
||||
log "unknwon.dev/clog/v2"
|
||||
|
||||
"github.com/gogs/git-module"
|
||||
|
||||
"gogs.io/gogs/internal/conf"
|
||||
"gogs.io/gogs/internal/database"
|
||||
"gogs.io/gogs/internal/email"
|
||||
"gogs.io/gogs/internal/httplib"
|
||||
"gogs.io/gogs/internal/osx"
|
||||
)
|
||||
|
||||
var (
|
||||
hookCommand = cli.Command{
|
||||
Name: "hook",
|
||||
Usage: "Delegate commands to corresponding Git hooks",
|
||||
Description: "All sub-commands should only be called by Git",
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
Commands: []*cli.Command{
|
||||
&subcmdHookPreReceive,
|
||||
&subcmdHookUpadte,
|
||||
&subcmdHookPostReceive,
|
||||
},
|
||||
}
|
||||
|
||||
subcmdHookPreReceive = cli.Command{
|
||||
Name: "pre-receive",
|
||||
Usage: "Delegate pre-receive Git hook",
|
||||
Description: "This command should only be called by Git",
|
||||
Action: runHookPreReceive,
|
||||
}
|
||||
subcmdHookUpadte = cli.Command{
|
||||
Name: "update",
|
||||
Usage: "Delegate update Git hook",
|
||||
Description: "This command should only be called by Git",
|
||||
Action: runHookUpdate,
|
||||
}
|
||||
subcmdHookPostReceive = cli.Command{
|
||||
Name: "post-receive",
|
||||
Usage: "Delegate post-receive Git hook",
|
||||
Description: "This command should only be called by Git",
|
||||
Action: runHookPostReceive,
|
||||
}
|
||||
)
|
||||
|
||||
func runHookPreReceive(_ context.Context, cmd *cli.Command) error {
|
||||
if os.Getenv("SSH_ORIGINAL_COMMAND") == "" {
|
||||
return nil
|
||||
}
|
||||
setup(cmd, "pre-receive.log", true)
|
||||
|
||||
isWiki := strings.Contains(os.Getenv(database.EnvRepoCustomHooksPath), ".wiki.git/")
|
||||
|
||||
buf := bytes.NewBuffer(nil)
|
||||
scanner := bufio.NewScanner(os.Stdin)
|
||||
for scanner.Scan() {
|
||||
buf.Write(scanner.Bytes())
|
||||
buf.WriteByte('\n')
|
||||
|
||||
if isWiki {
|
||||
continue
|
||||
}
|
||||
|
||||
fields := bytes.Fields(scanner.Bytes())
|
||||
if len(fields) != 3 {
|
||||
continue
|
||||
}
|
||||
oldCommitID := string(fields[0])
|
||||
newCommitID := string(fields[1])
|
||||
branchName := git.RefShortName(string(fields[2]))
|
||||
|
||||
// Branch protection
|
||||
repoID, _ := strconv.ParseInt(os.Getenv(database.EnvRepoID), 10, 64)
|
||||
protectBranch, err := database.GetProtectBranchOfRepoByName(repoID, branchName)
|
||||
if err != nil {
|
||||
if database.IsErrBranchNotExist(err) {
|
||||
continue
|
||||
}
|
||||
fail("Internal error", "GetProtectBranchOfRepoByName [repo_id: %d, branch: %s]: %v", repoID, branchName, err)
|
||||
}
|
||||
if !protectBranch.Protected {
|
||||
continue
|
||||
}
|
||||
|
||||
// Whitelist users can bypass require pull request check
|
||||
bypassRequirePullRequest := false
|
||||
|
||||
// Check if user is in whitelist when enabled
|
||||
userID, _ := strconv.ParseInt(os.Getenv(database.EnvAuthUserID), 10, 64)
|
||||
if protectBranch.EnableWhitelist {
|
||||
if !database.IsUserInProtectBranchWhitelist(repoID, userID, branchName) {
|
||||
fail(fmt.Sprintf("Branch '%s' is protected and you are not in the push whitelist", branchName), "")
|
||||
}
|
||||
|
||||
bypassRequirePullRequest = true
|
||||
}
|
||||
|
||||
// Check if branch allows direct push
|
||||
if !bypassRequirePullRequest && protectBranch.RequirePullRequest {
|
||||
fail(fmt.Sprintf("Branch '%s' is protected and commits must be merged through pull request", branchName), "")
|
||||
}
|
||||
|
||||
// check and deletion
|
||||
if newCommitID == git.EmptyID {
|
||||
fail(fmt.Sprintf("Branch '%s' is protected from deletion", branchName), "")
|
||||
}
|
||||
|
||||
// Check force push
|
||||
output, err := git.NewCommand("rev-list", "--max-count=1", oldCommitID, "^"+newCommitID).
|
||||
RunInDir(database.RepoPath(os.Getenv(database.EnvRepoOwnerName), os.Getenv(database.EnvRepoName)))
|
||||
if err != nil {
|
||||
fail("Internal error", "Failed to detect force push: %v", err)
|
||||
} else if len(output) > 0 {
|
||||
fail(fmt.Sprintf("Branch '%s' is protected from force push", branchName), "")
|
||||
}
|
||||
}
|
||||
|
||||
customHooksPath := filepath.Join(os.Getenv(database.EnvRepoCustomHooksPath), "pre-receive")
|
||||
if !osx.IsFile(customHooksPath) {
|
||||
return nil
|
||||
}
|
||||
|
||||
var hookCmd *exec.Cmd
|
||||
if conf.IsWindowsRuntime() {
|
||||
hookCmd = exec.Command("bash.exe", "custom_hooks/pre-receive")
|
||||
} else {
|
||||
hookCmd = exec.Command(customHooksPath)
|
||||
}
|
||||
hookCmd.Dir = database.RepoPath(os.Getenv(database.EnvRepoOwnerName), os.Getenv(database.EnvRepoName))
|
||||
hookCmd.Stdout = os.Stdout
|
||||
hookCmd.Stdin = buf
|
||||
hookCmd.Stderr = os.Stderr
|
||||
if err := hookCmd.Run(); err != nil {
|
||||
fail("Internal error", "Failed to execute custom pre-receive hook: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func runHookUpdate(_ context.Context, cmd *cli.Command) error {
|
||||
if os.Getenv("SSH_ORIGINAL_COMMAND") == "" {
|
||||
return nil
|
||||
}
|
||||
setup(cmd, "update.log", false)
|
||||
|
||||
args := cmd.Args().Slice()
|
||||
if len(args) != 3 {
|
||||
fail("Arguments received are not equal to three", "Arguments received are not equal to three")
|
||||
} else if args[0] == "" {
|
||||
fail("First argument 'refName' is empty", "First argument 'refName' is empty")
|
||||
}
|
||||
|
||||
customHooksPath := filepath.Join(os.Getenv(database.EnvRepoCustomHooksPath), "update")
|
||||
if !osx.IsFile(customHooksPath) {
|
||||
return nil
|
||||
}
|
||||
|
||||
var hookCmd *exec.Cmd
|
||||
if conf.IsWindowsRuntime() {
|
||||
hookCmd = exec.Command("bash.exe", append([]string{"custom_hooks/update"}, args...)...)
|
||||
} else {
|
||||
hookCmd = exec.Command(customHooksPath, args...)
|
||||
}
|
||||
hookCmd.Dir = database.RepoPath(os.Getenv(database.EnvRepoOwnerName), os.Getenv(database.EnvRepoName))
|
||||
hookCmd.Stdout = os.Stdout
|
||||
hookCmd.Stdin = os.Stdin
|
||||
hookCmd.Stderr = os.Stderr
|
||||
if err := hookCmd.Run(); err != nil {
|
||||
fail("Internal error", "Failed to execute custom pre-receive hook: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func runHookPostReceive(_ context.Context, cmd *cli.Command) error {
|
||||
if os.Getenv("SSH_ORIGINAL_COMMAND") == "" {
|
||||
return nil
|
||||
}
|
||||
setup(cmd, "post-receive.log", true)
|
||||
|
||||
// Post-receive hook does more than just gather Git information,
|
||||
// so we need to setup additional services for email notifications.
|
||||
email.NewContext()
|
||||
|
||||
isWiki := strings.Contains(os.Getenv(database.EnvRepoCustomHooksPath), ".wiki.git/")
|
||||
|
||||
buf := bytes.NewBuffer(nil)
|
||||
scanner := bufio.NewScanner(os.Stdin)
|
||||
for scanner.Scan() {
|
||||
buf.Write(scanner.Bytes())
|
||||
buf.WriteByte('\n')
|
||||
|
||||
// TODO: support news feeds for wiki
|
||||
if isWiki {
|
||||
continue
|
||||
}
|
||||
|
||||
fields := bytes.Fields(scanner.Bytes())
|
||||
if len(fields) != 3 {
|
||||
continue
|
||||
}
|
||||
|
||||
pusherID, _ := strconv.ParseInt(os.Getenv(database.EnvAuthUserID), 10, 64)
|
||||
options := database.PushUpdateOptions{
|
||||
OldCommitID: string(fields[0]),
|
||||
NewCommitID: string(fields[1]),
|
||||
FullRefspec: string(fields[2]),
|
||||
PusherID: pusherID,
|
||||
PusherName: os.Getenv(database.EnvAuthUserName),
|
||||
RepoUserName: os.Getenv(database.EnvRepoOwnerName),
|
||||
RepoName: os.Getenv(database.EnvRepoName),
|
||||
}
|
||||
if err := database.PushUpdate(options); err != nil {
|
||||
log.Error("PushUpdate: %v", err)
|
||||
}
|
||||
|
||||
// Ask for running deliver hook and test pull request tasks
|
||||
q := make(url.Values)
|
||||
q.Add("branch", git.RefShortName(options.FullRefspec))
|
||||
q.Add("secret", os.Getenv(database.EnvRepoOwnerSaltMd5))
|
||||
q.Add("pusher", os.Getenv(database.EnvAuthUserID))
|
||||
reqURL := fmt.Sprintf("%s%s/%s/tasks/trigger?%s", conf.Server.LocalRootURL, options.RepoUserName, options.RepoName, q.Encode())
|
||||
log.Trace("Trigger task: %s", reqURL)
|
||||
|
||||
resp, err := httplib.Get(reqURL).
|
||||
SetTLSClientConfig(&tls.Config{
|
||||
InsecureSkipVerify: true,
|
||||
}).Response()
|
||||
if err == nil {
|
||||
_ = resp.Body.Close()
|
||||
if resp.StatusCode/100 != 2 {
|
||||
log.Error("Failed to trigger task: unsuccessful response code %d", resp.StatusCode)
|
||||
}
|
||||
} else {
|
||||
log.Error("Failed to trigger task: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
customHooksPath := filepath.Join(os.Getenv(database.EnvRepoCustomHooksPath), "post-receive")
|
||||
if !osx.IsFile(customHooksPath) {
|
||||
return nil
|
||||
}
|
||||
|
||||
var hookCmd *exec.Cmd
|
||||
if conf.IsWindowsRuntime() {
|
||||
hookCmd = exec.Command("bash.exe", "custom_hooks/post-receive")
|
||||
} else {
|
||||
hookCmd = exec.Command(customHooksPath)
|
||||
}
|
||||
hookCmd.Dir = database.RepoPath(os.Getenv(database.EnvRepoOwnerName), os.Getenv(database.EnvRepoName))
|
||||
hookCmd.Stdout = os.Stdout
|
||||
hookCmd.Stdin = buf
|
||||
hookCmd.Stderr = os.Stderr
|
||||
if err := hookCmd.Run(); err != nil {
|
||||
fail("Internal error", "Failed to execute custom post-receive hook: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
108
cmd/gogs/import.go
Normal file
108
cmd/gogs/import.go
Normal file
@@ -0,0 +1,108 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"github.com/cockroachdb/errors"
|
||||
"github.com/urfave/cli/v3"
|
||||
|
||||
"gogs.io/gogs/internal/conf"
|
||||
"gogs.io/gogs/internal/osx"
|
||||
)
|
||||
|
||||
var (
|
||||
importCommand = cli.Command{
|
||||
Name: "import",
|
||||
Usage: "Import portable data as local Gogs data",
|
||||
Description: `Allow user import data from other Gogs installations to local instance
|
||||
without manually hacking the data files`,
|
||||
Commands: []*cli.Command{
|
||||
&subcmdImportLocale,
|
||||
},
|
||||
}
|
||||
|
||||
subcmdImportLocale = cli.Command{
|
||||
Name: "locale",
|
||||
Usage: "Import locale files to local repository",
|
||||
Action: runImportLocale,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("source", "", "Source directory that stores new locale files"),
|
||||
stringFlag("target", "", "Target directory that stores old locale files"),
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func runImportLocale(_ context.Context, cmd *cli.Command) error {
|
||||
if !cmd.IsSet("source") {
|
||||
return errors.New("source directory is not specified")
|
||||
} else if !cmd.IsSet("target") {
|
||||
return errors.New("target directory is not specified")
|
||||
}
|
||||
if !osx.IsDir(cmd.String("source")) {
|
||||
return errors.Newf("source directory %q does not exist or is not a directory", cmd.String("source"))
|
||||
} else if !osx.IsDir(cmd.String("target")) {
|
||||
return errors.Newf("target directory %q does not exist or is not a directory", cmd.String("target"))
|
||||
}
|
||||
|
||||
err := conf.Init(configFromLineage(cmd))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "init configuration")
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
|
||||
var line []byte
|
||||
badChars := []byte(`="`)
|
||||
escapedQuotes := []byte(`\"`)
|
||||
regularQuotes := []byte(`"`)
|
||||
// Cut out en-US.
|
||||
for _, lang := range conf.I18n.Langs[1:] {
|
||||
name := fmt.Sprintf("locale_%s.ini", lang)
|
||||
source := filepath.Join(cmd.String("source"), name)
|
||||
target := filepath.Join(cmd.String("target"), name)
|
||||
if !osx.IsFile(source) {
|
||||
continue
|
||||
}
|
||||
|
||||
// Crowdin surrounds double quotes for strings contain quotes inside,
|
||||
// this breaks INI parser, we need to fix that.
|
||||
sr, err := os.Open(source)
|
||||
if err != nil {
|
||||
return errors.Newf("open: %v", err)
|
||||
}
|
||||
|
||||
tw, err := os.Create(target)
|
||||
if err != nil {
|
||||
return errors.Newf("create: %v", err)
|
||||
}
|
||||
|
||||
scanner := bufio.NewScanner(sr)
|
||||
for scanner.Scan() {
|
||||
line = scanner.Bytes()
|
||||
idx := bytes.Index(line, badChars)
|
||||
if idx > -1 && line[len(line)-1] == '"' {
|
||||
// We still want the "=" sign
|
||||
line = append(line[:idx+1], line[idx+2:len(line)-1]...)
|
||||
line = bytes.ReplaceAll(line, escapedQuotes, regularQuotes)
|
||||
}
|
||||
_, _ = tw.Write(line)
|
||||
_, _ = tw.WriteString("\n")
|
||||
}
|
||||
_ = sr.Close()
|
||||
_ = tw.Close()
|
||||
|
||||
// Modification time of files from Crowdin often ahead of current,
|
||||
// so we need to set back to current.
|
||||
_ = os.Chtimes(target, now, now)
|
||||
}
|
||||
|
||||
fmt.Println("Locale files has been successfully imported!")
|
||||
return nil
|
||||
}
|
||||
36
cmd/gogs/main.go
Normal file
36
cmd/gogs/main.go
Normal file
@@ -0,0 +1,36 @@
|
||||
// Gogs is a painless self-hosted Git Service.
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
|
||||
"github.com/urfave/cli/v3"
|
||||
log "unknwon.dev/clog/v2"
|
||||
|
||||
"gogs.io/gogs/internal/conf"
|
||||
)
|
||||
|
||||
func init() {
|
||||
conf.App.Version = "0.15.0+dev"
|
||||
}
|
||||
|
||||
func main() {
|
||||
cmd := &cli.Command{
|
||||
Name: "Gogs",
|
||||
Usage: "A painless self-hosted Git service",
|
||||
Version: conf.App.Version,
|
||||
Commands: []*cli.Command{
|
||||
&webCommand,
|
||||
&servCommand,
|
||||
&hookCommand,
|
||||
&adminCommand,
|
||||
&importCommand,
|
||||
&backupCommand,
|
||||
&restoreCommand,
|
||||
},
|
||||
}
|
||||
if err := cmd.Run(context.Background(), os.Args); err != nil {
|
||||
log.Fatal("Failed to start application: %v", err)
|
||||
}
|
||||
}
|
||||
161
cmd/gogs/restore.go
Normal file
161
cmd/gogs/restore.go
Normal file
@@ -0,0 +1,161 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/cockroachdb/errors"
|
||||
"github.com/unknwon/cae/zip"
|
||||
"github.com/urfave/cli/v3"
|
||||
"gopkg.in/ini.v1"
|
||||
log "unknwon.dev/clog/v2"
|
||||
|
||||
"gogs.io/gogs/internal/conf"
|
||||
"gogs.io/gogs/internal/database"
|
||||
"gogs.io/gogs/internal/osx"
|
||||
"gogs.io/gogs/internal/semverx"
|
||||
)
|
||||
|
||||
var restoreCommand = cli.Command{
|
||||
Name: "restore",
|
||||
Usage: "Restore files and database from backup",
|
||||
Description: `Restore imports all related files and database from a backup archive.
|
||||
The backup version must lower or equal to current Gogs version. You can also import
|
||||
backup from other database engines, which is useful for database migrating.
|
||||
|
||||
If corresponding files or database tables are not presented in the archive, they will
|
||||
be skipped and remain unchanged.`,
|
||||
Action: runRestore,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
boolFlag("verbose, v", "Show process details"),
|
||||
stringFlag("tempdir, t", os.TempDir(), "Temporary directory path"),
|
||||
stringFlag("from", "", "Path to backup archive"),
|
||||
boolFlag("database-only", "Only import database"),
|
||||
boolFlag("exclude-repos", "Exclude repositories"),
|
||||
},
|
||||
}
|
||||
|
||||
// lastSupportedVersionOfFormat returns the last supported version of the backup archive
|
||||
// format that is able to import.
|
||||
var lastSupportedVersionOfFormat = map[int]string{}
|
||||
|
||||
func runRestore(ctx context.Context, cmd *cli.Command) error {
|
||||
zip.Verbose = cmd.Bool("verbose")
|
||||
|
||||
tmpDir := cmd.String("tempdir")
|
||||
if !osx.IsDir(tmpDir) {
|
||||
log.Fatal("'--tempdir' does not exist: %s", tmpDir)
|
||||
}
|
||||
archivePath := path.Join(tmpDir, archiveRootDir)
|
||||
|
||||
// Make sure there was no leftover and also clean up afterwards
|
||||
err := os.RemoveAll(archivePath)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to clean up previous leftover in %q: %v", archivePath, err)
|
||||
}
|
||||
defer func() { _ = os.RemoveAll(archivePath) }()
|
||||
|
||||
log.Info("Restoring backup from: %s", cmd.String("from"))
|
||||
err = zip.ExtractTo(cmd.String("from"), tmpDir)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to extract backup archive: %v", err)
|
||||
}
|
||||
|
||||
// Check backup version
|
||||
metaFile := filepath.Join(archivePath, "metadata.ini")
|
||||
if !osx.IsFile(metaFile) {
|
||||
log.Fatal("File 'metadata.ini' is missing")
|
||||
}
|
||||
metadata, err := ini.Load(metaFile)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to load metadata '%s': %v", metaFile, err)
|
||||
}
|
||||
backupVersion := metadata.Section("").Key("GOGS_VERSION").MustString("999.0")
|
||||
if semverx.Compare(conf.App.Version, "<", backupVersion) {
|
||||
log.Fatal("Current Gogs version is lower than backup version: %s < %s", conf.App.Version, backupVersion)
|
||||
}
|
||||
formatVersion := metadata.Section("").Key("VERSION").MustInt()
|
||||
if formatVersion == 0 {
|
||||
log.Fatal("Failed to determine the backup format version from metadata '%s': %s", metaFile, "VERSION is not presented")
|
||||
}
|
||||
if formatVersion != currentBackupFormatVersion {
|
||||
log.Fatal("Backup format version found is %d but this binary only supports %d\nThe last known version that is able to import your backup is %s",
|
||||
formatVersion, currentBackupFormatVersion, lastSupportedVersionOfFormat[formatVersion])
|
||||
}
|
||||
|
||||
// If config file is not present in backup, user must set this file via flag.
|
||||
// Otherwise, it's optional to set config file flag.
|
||||
configFile := filepath.Join(archivePath, "custom", "conf", "app.ini")
|
||||
var customConf string
|
||||
if lineageConf := configFromLineage(cmd); lineageConf != "" {
|
||||
customConf = lineageConf
|
||||
} else if !osx.IsFile(configFile) {
|
||||
log.Fatal("'--config' is not specified and custom config file is not found in backup")
|
||||
} else {
|
||||
customConf = configFile
|
||||
}
|
||||
|
||||
err = conf.Init(customConf)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "init configuration")
|
||||
}
|
||||
conf.InitLogging(true)
|
||||
|
||||
conn, err := database.SetEngine()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "set engine")
|
||||
}
|
||||
|
||||
// Database
|
||||
dbDir := path.Join(archivePath, "db")
|
||||
if err = database.ImportDatabase(ctx, conn, dbDir, cmd.Bool("verbose")); err != nil {
|
||||
log.Fatal("Failed to import database: %v", err)
|
||||
}
|
||||
|
||||
if !cmd.Bool("database-only") {
|
||||
// Custom files
|
||||
if osx.IsDir(conf.CustomDir()) {
|
||||
if err = os.Rename(conf.CustomDir(), conf.CustomDir()+".bak"); err != nil {
|
||||
log.Fatal("Failed to backup current 'custom': %v", err)
|
||||
}
|
||||
}
|
||||
if err = os.Rename(filepath.Join(archivePath, "custom"), conf.CustomDir()); err != nil {
|
||||
log.Fatal("Failed to import 'custom': %v", err)
|
||||
}
|
||||
|
||||
// Data files
|
||||
_ = os.MkdirAll(conf.Server.AppDataPath, os.ModePerm)
|
||||
for _, dir := range []string{"attachments", "avatars", "repo-avatars"} {
|
||||
// Skip if backup archive does not have corresponding data
|
||||
srcPath := filepath.Join(archivePath, "data", dir)
|
||||
if !osx.IsDir(srcPath) {
|
||||
continue
|
||||
}
|
||||
|
||||
dirPath := filepath.Join(conf.Server.AppDataPath, dir)
|
||||
if osx.IsDir(dirPath) {
|
||||
if err = os.Rename(dirPath, dirPath+".bak"); err != nil {
|
||||
log.Fatal("Failed to backup current 'data': %v", err)
|
||||
}
|
||||
}
|
||||
if err = os.Rename(srcPath, dirPath); err != nil {
|
||||
log.Fatal("Failed to import 'data': %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Repositories
|
||||
reposPath := filepath.Join(archivePath, "repositories.zip")
|
||||
if !cmd.Bool("exclude-repos") && !cmd.Bool("database-only") && osx.IsFile(reposPath) {
|
||||
if err := zip.ExtractTo(reposPath, filepath.Dir(conf.Repository.Root)); err != nil {
|
||||
log.Fatal("Failed to extract 'repositories.zip': %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
log.Info("Restore succeed!")
|
||||
log.Stop()
|
||||
return nil
|
||||
}
|
||||
274
cmd/gogs/serv.go
Normal file
274
cmd/gogs/serv.go
Normal file
@@ -0,0 +1,274 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/urfave/cli/v3"
|
||||
log "unknwon.dev/clog/v2"
|
||||
|
||||
"gogs.io/gogs/internal/conf"
|
||||
"gogs.io/gogs/internal/database"
|
||||
)
|
||||
|
||||
const (
|
||||
accessDeniedMessage = "Repository does not exist or you do not have access"
|
||||
)
|
||||
|
||||
var servCommand = cli.Command{
|
||||
Name: "serv",
|
||||
Usage: "This command should only be called by SSH shell",
|
||||
Description: `Serv provide access auth for repositories`,
|
||||
Action: runServ,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
// fail prints user message to the Git client (i.e. os.Stderr) and
|
||||
// logs error message on the server side. When not in "prod" mode,
|
||||
// error message is also printed to the client for easier debugging.
|
||||
func fail(userMessage, errMessage string, args ...any) {
|
||||
_, _ = fmt.Fprintln(os.Stderr, "Gogs:", userMessage)
|
||||
|
||||
if len(errMessage) > 0 {
|
||||
if !conf.IsProdMode() {
|
||||
fmt.Fprintf(os.Stderr, errMessage+"\n", args...)
|
||||
}
|
||||
log.Error(errMessage, args...)
|
||||
}
|
||||
|
||||
log.Stop()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func setup(cmd *cli.Command, logFile string, connectDB bool) {
|
||||
conf.HookMode = true
|
||||
|
||||
customConf := configFromLineage(cmd)
|
||||
|
||||
err := conf.Init(customConf)
|
||||
if err != nil {
|
||||
fail("Internal error", "Failed to init configuration: %v", err)
|
||||
}
|
||||
conf.InitLogging(true)
|
||||
|
||||
level := log.LevelTrace
|
||||
if conf.IsProdMode() {
|
||||
level = log.LevelError
|
||||
}
|
||||
|
||||
err = log.NewFile(log.FileConfig{
|
||||
Level: level,
|
||||
Filename: filepath.Join(conf.Log.RootPath, "hooks", logFile),
|
||||
FileRotationConfig: log.FileRotationConfig{
|
||||
Rotate: true,
|
||||
Daily: true,
|
||||
MaxDays: 3,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
fail("Internal error", "Failed to init file logger: %v", err)
|
||||
}
|
||||
log.Remove(log.DefaultConsoleName) // Remove the primary logger
|
||||
|
||||
if !connectDB {
|
||||
return
|
||||
}
|
||||
|
||||
if conf.UseSQLite3 {
|
||||
_ = os.Chdir(conf.WorkDir())
|
||||
}
|
||||
|
||||
if _, err := database.SetEngine(); err != nil {
|
||||
fail("Internal error", "Failed to set database engine: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func parseSSHCmd(cmd string) (string, string) {
|
||||
ss := strings.SplitN(cmd, " ", 2)
|
||||
if len(ss) != 2 {
|
||||
return "", ""
|
||||
}
|
||||
return ss[0], strings.Replace(ss[1], "'/", "'", 1)
|
||||
}
|
||||
|
||||
func checkDeployKey(key *database.PublicKey, repo *database.Repository) {
|
||||
// Check if this deploy key belongs to current repository.
|
||||
if !database.HasDeployKey(key.ID, repo.ID) {
|
||||
fail("Key access denied", "Deploy key access denied: [key_id: %d, repo_id: %d]", key.ID, repo.ID)
|
||||
}
|
||||
|
||||
// Update deploy key activity.
|
||||
deployKey, err := database.GetDeployKeyByRepo(key.ID, repo.ID)
|
||||
if err != nil {
|
||||
fail("Internal error", "GetDeployKey: %v", err)
|
||||
}
|
||||
|
||||
deployKey.Updated = time.Now()
|
||||
if err = database.UpdateDeployKey(deployKey); err != nil {
|
||||
fail("Internal error", "UpdateDeployKey: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
var allowedCommands = map[string]database.AccessMode{
|
||||
"git-upload-pack": database.AccessModeRead,
|
||||
"git-upload-archive": database.AccessModeRead,
|
||||
"git-receive-pack": database.AccessModeWrite,
|
||||
}
|
||||
|
||||
func runServ(ctx context.Context, cmd *cli.Command) error {
|
||||
setup(cmd, "serv.log", true)
|
||||
|
||||
if conf.SSH.Disabled {
|
||||
println("Gogs: SSH has been disabled")
|
||||
return nil
|
||||
}
|
||||
|
||||
if cmd.Args().Len() < 1 {
|
||||
fail("Not enough arguments", "Not enough arguments")
|
||||
}
|
||||
|
||||
sshCmd := os.Getenv("SSH_ORIGINAL_COMMAND")
|
||||
if sshCmd == "" {
|
||||
println("Hi there, You've successfully authenticated, but Gogs does not provide shell access.")
|
||||
println("If this is unexpected, please log in with password and setup Gogs under another user.")
|
||||
return nil
|
||||
}
|
||||
|
||||
verb, args := parseSSHCmd(sshCmd)
|
||||
repoFullName := strings.ToLower(strings.Trim(args, "'"))
|
||||
repoFields := strings.SplitN(repoFullName, "/", 2)
|
||||
if len(repoFields) != 2 {
|
||||
fail("Invalid repository path", "Invalid repository path: %v", args)
|
||||
}
|
||||
ownerName := strings.ToLower(repoFields[0])
|
||||
repoName := strings.TrimSuffix(strings.ToLower(repoFields[1]), ".git")
|
||||
repoName = strings.TrimSuffix(repoName, ".wiki")
|
||||
|
||||
owner, err := database.Handle.Users().GetByUsername(ctx, ownerName)
|
||||
if err != nil {
|
||||
if database.IsErrUserNotExist(err) {
|
||||
fail("Repository owner does not exist", "Unregistered owner: %s", ownerName)
|
||||
}
|
||||
fail("Internal error", "Failed to get repository owner '%s': %v", ownerName, err)
|
||||
}
|
||||
|
||||
repo, err := database.GetRepositoryByName(owner.ID, repoName)
|
||||
if err != nil {
|
||||
if database.IsErrRepoNotExist(err) {
|
||||
fail(accessDeniedMessage, "Repository does not exist: %s/%s", owner.Name, repoName)
|
||||
}
|
||||
fail("Internal error", "Failed to get repository: %v", err)
|
||||
}
|
||||
repo.Owner = owner
|
||||
|
||||
requestMode, ok := allowedCommands[verb]
|
||||
if !ok {
|
||||
fail("Unknown git command", "Unknown git command '%s'", verb)
|
||||
}
|
||||
|
||||
// Prohibit push to mirror repositories.
|
||||
if requestMode > database.AccessModeRead && repo.IsMirror {
|
||||
fail("Mirror repository is read-only", "")
|
||||
}
|
||||
|
||||
// Allow anonymous (user is nil) clone for public repositories.
|
||||
var user *database.User
|
||||
|
||||
keyID, _ := strconv.ParseInt(strings.TrimPrefix(cmd.Args().Get(0), "key-"), 10, 64)
|
||||
key, err := database.GetPublicKeyByID(keyID)
|
||||
if err != nil {
|
||||
fail("Invalid key ID", "Invalid key ID '%s': %v", cmd.Args().Get(0), err)
|
||||
}
|
||||
|
||||
if requestMode == database.AccessModeWrite || repo.IsPrivate {
|
||||
// Check deploy key or user key.
|
||||
if key.IsDeployKey() {
|
||||
if key.Mode < requestMode {
|
||||
fail("Key permission denied", "Cannot push with deployment key: %d", key.ID)
|
||||
}
|
||||
checkDeployKey(key, repo)
|
||||
} else {
|
||||
user, err = database.Handle.Users().GetByKeyID(ctx, key.ID)
|
||||
if err != nil {
|
||||
fail("Internal error", "Failed to get user by key ID '%d': %v", key.ID, err)
|
||||
}
|
||||
|
||||
mode := database.Handle.Permissions().AccessMode(ctx, user.ID, repo.ID,
|
||||
database.AccessModeOptions{
|
||||
OwnerID: repo.OwnerID,
|
||||
Private: repo.IsPrivate,
|
||||
},
|
||||
)
|
||||
if mode < requestMode {
|
||||
clientMessage := accessDeniedMessage
|
||||
if mode >= database.AccessModeRead {
|
||||
clientMessage = "You do not have sufficient authorization for this action"
|
||||
}
|
||||
fail(clientMessage,
|
||||
"User '%s' does not have level '%v' access to repository '%s'",
|
||||
user.Name, requestMode, repoFullName)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Check if the key can access to the repository in case of it is a deploy key (a deploy keys != user key).
|
||||
// A deploy key doesn't represent a signed in user, so in a site with Auth.RequireSignInView enabled,
|
||||
// we should give read access only in repositories where this deploy key is in use. In other cases,
|
||||
// a server or system using an active deploy key can get read access to all repositories on a Gogs instance.
|
||||
if key.IsDeployKey() && conf.Auth.RequireSigninView {
|
||||
checkDeployKey(key, repo)
|
||||
}
|
||||
}
|
||||
|
||||
// Update user key activity.
|
||||
if key.ID > 0 {
|
||||
key, err := database.GetPublicKeyByID(key.ID)
|
||||
if err != nil {
|
||||
fail("Internal error", "GetPublicKeyByID: %v", err)
|
||||
}
|
||||
|
||||
key.Updated = time.Now()
|
||||
if err = database.UpdatePublicKey(key); err != nil {
|
||||
fail("Internal error", "UpdatePublicKey: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Special handle for Windows.
|
||||
if conf.IsWindowsRuntime() {
|
||||
verb = strings.Replace(verb, "-", " ", 1)
|
||||
}
|
||||
|
||||
var gitCmd *exec.Cmd
|
||||
verbs := strings.Split(verb, " ")
|
||||
if len(verbs) == 2 {
|
||||
gitCmd = exec.Command(verbs[0], verbs[1], repoFullName)
|
||||
} else {
|
||||
gitCmd = exec.Command(verb, repoFullName)
|
||||
}
|
||||
if requestMode == database.AccessModeWrite {
|
||||
gitCmd.Env = append(os.Environ(), database.ComposeHookEnvs(database.ComposeHookEnvsOptions{
|
||||
AuthUser: user,
|
||||
OwnerName: owner.Name,
|
||||
OwnerSalt: owner.Salt,
|
||||
RepoID: repo.ID,
|
||||
RepoName: repo.Name,
|
||||
RepoPath: repo.RepoPath(),
|
||||
})...)
|
||||
}
|
||||
gitCmd.Dir = conf.Repository.Root
|
||||
gitCmd.Stdout = os.Stdout
|
||||
gitCmd.Stdin = os.Stdin
|
||||
gitCmd.Stderr = os.Stderr
|
||||
if err = gitCmd.Run(); err != nil {
|
||||
fail("Internal error", "Failed to execute git command: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
782
cmd/gogs/web.go
Normal file
782
cmd/gogs/web.go
Normal file
@@ -0,0 +1,782 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
stdctx "context"
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"io"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/http/fcgi"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/go-macaron/binding"
|
||||
"github.com/go-macaron/cache"
|
||||
"github.com/go-macaron/captcha"
|
||||
"github.com/go-macaron/csrf"
|
||||
"github.com/go-macaron/gzip"
|
||||
"github.com/go-macaron/i18n"
|
||||
"github.com/go-macaron/session"
|
||||
"github.com/go-macaron/toolbox"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
"github.com/urfave/cli/v3"
|
||||
"gopkg.in/macaron.v1"
|
||||
log "unknwon.dev/clog/v2"
|
||||
|
||||
embedConf "gogs.io/gogs/conf"
|
||||
"gogs.io/gogs/internal/app"
|
||||
"gogs.io/gogs/internal/conf"
|
||||
"gogs.io/gogs/internal/context"
|
||||
"gogs.io/gogs/internal/database"
|
||||
"gogs.io/gogs/internal/form"
|
||||
"gogs.io/gogs/internal/osx"
|
||||
"gogs.io/gogs/internal/route"
|
||||
"gogs.io/gogs/internal/route/admin"
|
||||
apiv1 "gogs.io/gogs/internal/route/api/v1"
|
||||
"gogs.io/gogs/internal/route/dev"
|
||||
"gogs.io/gogs/internal/route/lfs"
|
||||
"gogs.io/gogs/internal/route/org"
|
||||
"gogs.io/gogs/internal/route/repo"
|
||||
"gogs.io/gogs/internal/route/user"
|
||||
"gogs.io/gogs/internal/template"
|
||||
"gogs.io/gogs/public"
|
||||
"gogs.io/gogs/templates"
|
||||
)
|
||||
|
||||
var webCommand = cli.Command{
|
||||
Name: "web",
|
||||
Usage: "Start web server",
|
||||
Description: `Gogs web server is the only thing you need to run,
|
||||
and it takes care of all the other things for you`,
|
||||
Action: runWeb,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("port, p", "3000", "Temporary port number to prevent conflict"),
|
||||
stringFlag("config, c", filepath.Join(conf.CustomDir(), "conf", "app.ini"), "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
// newMacaron initializes Macaron instance.
|
||||
func newMacaron() *macaron.Macaron {
|
||||
m := macaron.New()
|
||||
if !conf.Server.DisableRouterLog {
|
||||
m.Use(macaron.Logger())
|
||||
}
|
||||
m.Use(macaron.Recovery())
|
||||
if conf.Server.EnableGzip {
|
||||
m.Use(gzip.Gziper())
|
||||
}
|
||||
if conf.Server.Protocol == "fcgi" {
|
||||
m.SetURLPrefix(conf.Server.Subpath)
|
||||
}
|
||||
|
||||
// Register custom middleware first to make it possible to override files under "public".
|
||||
m.Use(macaron.Static(
|
||||
filepath.Join(conf.CustomDir(), "public"),
|
||||
macaron.StaticOptions{
|
||||
SkipLogging: conf.Server.DisableRouterLog,
|
||||
},
|
||||
))
|
||||
var publicFs http.FileSystem
|
||||
if !conf.Server.LoadAssetsFromDisk {
|
||||
publicFs = http.FS(public.Files)
|
||||
}
|
||||
m.Use(macaron.Static(
|
||||
filepath.Join(conf.WorkDir(), "public"),
|
||||
macaron.StaticOptions{
|
||||
ETag: true,
|
||||
SkipLogging: conf.Server.DisableRouterLog,
|
||||
FileSystem: publicFs,
|
||||
},
|
||||
))
|
||||
|
||||
m.Use(macaron.Static(
|
||||
conf.Picture.AvatarUploadPath,
|
||||
macaron.StaticOptions{
|
||||
ETag: true,
|
||||
Prefix: conf.UsersAvatarPathPrefix,
|
||||
SkipLogging: conf.Server.DisableRouterLog,
|
||||
},
|
||||
))
|
||||
m.Use(macaron.Static(
|
||||
conf.Picture.RepositoryAvatarUploadPath,
|
||||
macaron.StaticOptions{
|
||||
ETag: true,
|
||||
Prefix: database.RepoAvatarURLPrefix,
|
||||
SkipLogging: conf.Server.DisableRouterLog,
|
||||
},
|
||||
))
|
||||
|
||||
customDir := filepath.Join(conf.CustomDir(), "templates")
|
||||
renderOpt := macaron.RenderOptions{
|
||||
Directory: filepath.Join(conf.WorkDir(), "templates"),
|
||||
AppendDirectories: []string{customDir},
|
||||
Funcs: template.FuncMap(),
|
||||
IndentJSON: macaron.Env != macaron.PROD,
|
||||
}
|
||||
if !conf.Server.LoadAssetsFromDisk {
|
||||
renderOpt.TemplateFileSystem = templates.NewTemplateFileSystem("", customDir)
|
||||
}
|
||||
m.Use(macaron.Renderer(renderOpt))
|
||||
|
||||
localeNames, err := embedConf.FileNames("locale")
|
||||
if err != nil {
|
||||
log.Fatal("Failed to list locale files: %v", err)
|
||||
}
|
||||
localeFiles := make(map[string][]byte)
|
||||
for _, name := range localeNames {
|
||||
localeFiles[name], err = embedConf.Files.ReadFile("locale/" + name)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to read locale file %q: %v", name, err)
|
||||
}
|
||||
}
|
||||
m.Use(i18n.I18n(i18n.Options{
|
||||
SubURL: conf.Server.Subpath,
|
||||
Files: localeFiles,
|
||||
CustomDirectory: filepath.Join(conf.CustomDir(), "conf", "locale"),
|
||||
Langs: conf.I18n.Langs,
|
||||
Names: conf.I18n.Names,
|
||||
DefaultLang: "en-US",
|
||||
Redirect: true,
|
||||
}))
|
||||
m.Use(cache.Cacher(cache.Options{
|
||||
Adapter: conf.Cache.Adapter,
|
||||
AdapterConfig: conf.Cache.Host,
|
||||
Interval: conf.Cache.Interval,
|
||||
}))
|
||||
m.Use(captcha.Captchaer(captcha.Options{
|
||||
SubURL: conf.Server.Subpath,
|
||||
}))
|
||||
m.Use(toolbox.Toolboxer(m, toolbox.Options{
|
||||
HealthCheckFuncs: []*toolbox.HealthCheckFuncDesc{
|
||||
{
|
||||
Desc: "Database connection",
|
||||
Func: database.Ping,
|
||||
},
|
||||
},
|
||||
}))
|
||||
return m
|
||||
}
|
||||
|
||||
func runWeb(_ stdctx.Context, cmd *cli.Command) error {
|
||||
err := route.GlobalInit(configFromLineage(cmd))
|
||||
if err != nil {
|
||||
log.Fatal("Failed to initialize application: %v", err)
|
||||
}
|
||||
|
||||
m := newMacaron()
|
||||
|
||||
reqSignIn := context.Toggle(&context.ToggleOptions{SignInRequired: true})
|
||||
ignSignIn := context.Toggle(&context.ToggleOptions{SignInRequired: conf.Auth.RequireSigninView})
|
||||
reqSignOut := context.Toggle(&context.ToggleOptions{SignOutRequired: true})
|
||||
|
||||
bindIgnErr := binding.BindIgnErr
|
||||
|
||||
m.SetAutoHead(true)
|
||||
|
||||
m.Group("", func() {
|
||||
m.Get("/", ignSignIn, route.Home)
|
||||
m.Group("/explore", func() {
|
||||
m.Get("", func(c *context.Context) {
|
||||
c.Redirect(conf.Server.Subpath + "/explore/repos")
|
||||
})
|
||||
m.Get("/repos", route.ExploreRepos)
|
||||
m.Get("/users", route.ExploreUsers)
|
||||
m.Get("/organizations", route.ExploreOrganizations)
|
||||
}, ignSignIn)
|
||||
m.Combo("/install", route.InstallInit).Get(route.Install).
|
||||
Post(bindIgnErr(form.Install{}), route.InstallPost)
|
||||
m.Get("/^:type(issues|pulls)$", reqSignIn, user.Issues)
|
||||
|
||||
// ***** START: User *****
|
||||
m.Group("/user", func() {
|
||||
m.Group("/login", func() {
|
||||
m.Combo("").Get(user.Login).
|
||||
Post(bindIgnErr(form.SignIn{}), user.LoginPost)
|
||||
m.Combo("/two_factor").Get(user.LoginTwoFactor).Post(user.LoginTwoFactorPost)
|
||||
m.Combo("/two_factor_recovery_code").Get(user.LoginTwoFactorRecoveryCode).Post(user.LoginTwoFactorRecoveryCodePost)
|
||||
})
|
||||
|
||||
m.Get("/sign_up", user.SignUp)
|
||||
m.Post("/sign_up", bindIgnErr(form.Register{}), user.SignUpPost)
|
||||
m.Get("/reset_password", user.ResetPasswd)
|
||||
m.Post("/reset_password", user.ResetPasswdPost)
|
||||
}, reqSignOut)
|
||||
|
||||
m.Group("/user/settings", func() {
|
||||
m.Get("", user.Settings)
|
||||
m.Post("", bindIgnErr(form.UpdateProfile{}), user.SettingsPost)
|
||||
m.Combo("/avatar").Get(user.SettingsAvatar).
|
||||
Post(binding.MultipartForm(form.Avatar{}), user.SettingsAvatarPost)
|
||||
m.Post("/avatar/delete", user.SettingsDeleteAvatar)
|
||||
m.Combo("/email").Get(user.SettingsEmails).
|
||||
Post(bindIgnErr(form.AddEmail{}), user.SettingsEmailPost)
|
||||
m.Post("/email/delete", user.DeleteEmail)
|
||||
m.Get("/password", user.SettingsPassword)
|
||||
m.Post("/password", bindIgnErr(form.ChangePassword{}), user.SettingsPasswordPost)
|
||||
m.Combo("/ssh").Get(user.SettingsSSHKeys).
|
||||
Post(bindIgnErr(form.AddSSHKey{}), user.SettingsSSHKeysPost)
|
||||
m.Post("/ssh/delete", user.DeleteSSHKey)
|
||||
m.Group("/security", func() {
|
||||
m.Get("", user.SettingsSecurity)
|
||||
m.Combo("/two_factor_enable").Get(user.SettingsTwoFactorEnable).
|
||||
Post(user.SettingsTwoFactorEnablePost)
|
||||
m.Combo("/two_factor_recovery_codes").Get(user.SettingsTwoFactorRecoveryCodes).
|
||||
Post(user.SettingsTwoFactorRecoveryCodesPost)
|
||||
m.Post("/two_factor_disable", user.SettingsTwoFactorDisable)
|
||||
})
|
||||
m.Group("/repositories", func() {
|
||||
m.Get("", user.SettingsRepos)
|
||||
m.Post("/leave", user.SettingsLeaveRepo)
|
||||
})
|
||||
m.Group("/organizations", func() {
|
||||
m.Get("", user.SettingsOrganizations)
|
||||
m.Post("/leave", user.SettingsLeaveOrganization)
|
||||
})
|
||||
|
||||
settingsHandler := user.NewSettingsHandler(user.NewSettingsStore())
|
||||
m.Combo("/applications").Get(settingsHandler.Applications()).
|
||||
Post(bindIgnErr(form.NewAccessToken{}), settingsHandler.ApplicationsPost())
|
||||
m.Post("/applications/delete", settingsHandler.DeleteApplication())
|
||||
m.Route("/delete", "GET,POST", user.SettingsDelete)
|
||||
}, reqSignIn, func(c *context.Context) {
|
||||
c.Data["PageIsUserSettings"] = true
|
||||
})
|
||||
|
||||
m.Group("/user", func() {
|
||||
m.Any("/activate", user.Activate)
|
||||
m.Any("/activate_email", user.ActivateEmail)
|
||||
m.Get("/email2user", user.Email2User)
|
||||
m.Get("/forget_password", user.ForgotPasswd)
|
||||
m.Post("/forget_password", user.ForgotPasswdPost)
|
||||
m.Post("/logout", user.SignOut)
|
||||
})
|
||||
// ***** END: User *****
|
||||
|
||||
reqAdmin := context.Toggle(&context.ToggleOptions{SignInRequired: true, AdminRequired: true})
|
||||
|
||||
// ***** START: Admin *****
|
||||
m.Group("/admin", func() {
|
||||
m.Combo("").Get(admin.Dashboard).Post(admin.Operation) // "/admin"
|
||||
m.Get("/config", admin.Config)
|
||||
m.Post("/config/test_mail", admin.SendTestMail)
|
||||
m.Get("/monitor", admin.Monitor)
|
||||
|
||||
m.Group("/users", func() {
|
||||
m.Get("", admin.Users)
|
||||
m.Combo("/new").Get(admin.NewUser).Post(bindIgnErr(form.AdminCrateUser{}), admin.NewUserPost)
|
||||
m.Combo("/:userid").Get(admin.EditUser).Post(bindIgnErr(form.AdminEditUser{}), admin.EditUserPost)
|
||||
m.Post("/:userid/delete", admin.DeleteUser)
|
||||
})
|
||||
|
||||
m.Group("/orgs", func() {
|
||||
m.Get("", admin.Organizations)
|
||||
})
|
||||
|
||||
m.Group("/repos", func() {
|
||||
m.Get("", admin.Repos)
|
||||
m.Post("/delete", admin.DeleteRepo)
|
||||
})
|
||||
|
||||
m.Group("/auths", func() {
|
||||
m.Get("", admin.Authentications)
|
||||
m.Combo("/new").Get(admin.NewAuthSource).Post(bindIgnErr(form.Authentication{}), admin.NewAuthSourcePost)
|
||||
m.Combo("/:authid").Get(admin.EditAuthSource).
|
||||
Post(bindIgnErr(form.Authentication{}), admin.EditAuthSourcePost)
|
||||
m.Post("/:authid/delete", admin.DeleteAuthSource)
|
||||
})
|
||||
|
||||
m.Group("/notices", func() {
|
||||
m.Get("", admin.Notices)
|
||||
m.Post("/delete", admin.DeleteNotices)
|
||||
m.Get("/empty", admin.EmptyNotices)
|
||||
})
|
||||
}, reqAdmin)
|
||||
// ***** END: Admin *****
|
||||
|
||||
m.Group("", func() {
|
||||
m.Group("/:username", func() {
|
||||
m.Get("", user.Profile)
|
||||
m.Get("/followers", user.Followers)
|
||||
m.Get("/following", user.Following)
|
||||
m.Get("/stars", user.Stars)
|
||||
}, context.InjectParamsUser())
|
||||
|
||||
m.Get("/attachments/:uuid", func(c *context.Context) {
|
||||
attach, err := database.GetAttachmentByUUID(c.Params(":uuid"))
|
||||
if err != nil {
|
||||
c.NotFoundOrError(err, "get attachment by UUID")
|
||||
return
|
||||
} else if !osx.IsFile(attach.LocalPath()) {
|
||||
c.NotFound()
|
||||
return
|
||||
}
|
||||
|
||||
fr, err := os.Open(attach.LocalPath())
|
||||
if err != nil {
|
||||
c.Error(err, "open attachment file")
|
||||
return
|
||||
}
|
||||
defer fr.Close()
|
||||
|
||||
c.Header().Set("Content-Security-Policy", "default-src 'none'; style-src 'unsafe-inline'; sandbox")
|
||||
c.Header().Set("Cache-Control", "public,max-age=86400")
|
||||
c.Header().Set("Content-Disposition", fmt.Sprintf(`inline; filename="%s"`, attach.Name))
|
||||
|
||||
if _, err = io.Copy(c.Resp, fr); err != nil {
|
||||
c.Error(err, "copy from file to response")
|
||||
return
|
||||
}
|
||||
})
|
||||
}, ignSignIn)
|
||||
|
||||
m.Group("", func() {
|
||||
m.Post("/issues/attachments", repo.UploadIssueAttachment)
|
||||
m.Post("/releases/attachments", repo.UploadReleaseAttachment)
|
||||
}, reqSignIn)
|
||||
|
||||
m.Group("/:username", func() {
|
||||
m.Post("/action/:action", user.Action)
|
||||
}, reqSignIn, context.InjectParamsUser())
|
||||
|
||||
if macaron.Env == macaron.DEV {
|
||||
m.Get("/template/*", dev.TemplatePreview)
|
||||
}
|
||||
|
||||
reqRepoAdmin := context.RequireRepoAdmin()
|
||||
reqRepoWriter := context.RequireRepoWriter()
|
||||
|
||||
webhookRoutes := func() {
|
||||
m.Group("", func() {
|
||||
m.Get("", repo.Webhooks)
|
||||
m.Post("/delete", repo.DeleteWebhook)
|
||||
m.Get("/:type/new", repo.WebhooksNew)
|
||||
m.Post("/gogs/new", bindIgnErr(form.NewWebhook{}), repo.WebhooksNewPost)
|
||||
m.Post("/slack/new", bindIgnErr(form.NewSlackHook{}), repo.WebhooksSlackNewPost)
|
||||
m.Post("/discord/new", bindIgnErr(form.NewDiscordHook{}), repo.WebhooksDiscordNewPost)
|
||||
m.Post("/dingtalk/new", bindIgnErr(form.NewDingtalkHook{}), repo.WebhooksDingtalkNewPost)
|
||||
m.Get("/:id", repo.WebhooksEdit)
|
||||
m.Post("/gogs/:id", bindIgnErr(form.NewWebhook{}), repo.WebhooksEditPost)
|
||||
m.Post("/slack/:id", bindIgnErr(form.NewSlackHook{}), repo.WebhooksSlackEditPost)
|
||||
m.Post("/discord/:id", bindIgnErr(form.NewDiscordHook{}), repo.WebhooksDiscordEditPost)
|
||||
m.Post("/dingtalk/:id", bindIgnErr(form.NewDingtalkHook{}), repo.WebhooksDingtalkEditPost)
|
||||
}, repo.InjectOrgRepoContext())
|
||||
}
|
||||
|
||||
// ***** START: Organization *****
|
||||
m.Group("/org", func() {
|
||||
m.Group("", func() {
|
||||
m.Get("/create", org.Create)
|
||||
m.Post("/create", bindIgnErr(form.CreateOrg{}), org.CreatePost)
|
||||
}, func(c *context.Context) {
|
||||
if !c.User.CanCreateOrganization() {
|
||||
c.NotFound()
|
||||
}
|
||||
})
|
||||
|
||||
m.Group("/:org", func() {
|
||||
m.Get("/dashboard", user.Dashboard)
|
||||
m.Get("/^:type(issues|pulls)$", user.Issues)
|
||||
m.Get("/members", org.Members)
|
||||
m.Get("/members/action/:action", org.MembersAction)
|
||||
|
||||
m.Get("/teams", org.Teams)
|
||||
}, context.OrgAssignment(true))
|
||||
|
||||
m.Group("/:org", func() {
|
||||
m.Get("/teams/:team", org.TeamMembers)
|
||||
m.Get("/teams/:team/repositories", org.TeamRepositories)
|
||||
m.Route("/teams/:team/action/:action", "GET,POST", org.TeamsAction)
|
||||
m.Route("/teams/:team/action/repo/:action", "GET,POST", org.TeamsRepoAction)
|
||||
}, context.OrgAssignment(true, false, true))
|
||||
|
||||
m.Group("/:org", func() {
|
||||
m.Get("/teams/new", org.NewTeam)
|
||||
m.Post("/teams/new", bindIgnErr(form.CreateTeam{}), org.NewTeamPost)
|
||||
m.Get("/teams/:team/edit", org.EditTeam)
|
||||
m.Post("/teams/:team/edit", bindIgnErr(form.CreateTeam{}), org.EditTeamPost)
|
||||
m.Post("/teams/:team/delete", org.DeleteTeam)
|
||||
|
||||
m.Group("/settings", func() {
|
||||
m.Combo("").Get(org.Settings).
|
||||
Post(bindIgnErr(form.UpdateOrgSetting{}), org.SettingsPost)
|
||||
m.Post("/avatar", binding.MultipartForm(form.Avatar{}), org.SettingsAvatar)
|
||||
m.Post("/avatar/delete", org.SettingsDeleteAvatar)
|
||||
m.Group("/hooks", webhookRoutes)
|
||||
m.Route("/delete", "GET,POST", org.SettingsDelete)
|
||||
})
|
||||
|
||||
m.Route("/invitations/new", "GET,POST", org.Invitation)
|
||||
}, context.OrgAssignment(true, true))
|
||||
}, reqSignIn)
|
||||
// ***** END: Organization *****
|
||||
|
||||
// ***** START: Repository *****
|
||||
m.Group("/repo", func() {
|
||||
m.Get("/create", repo.Create)
|
||||
m.Post("/create", bindIgnErr(form.CreateRepo{}), repo.CreatePost)
|
||||
m.Get("/migrate", repo.Migrate)
|
||||
m.Post("/migrate", bindIgnErr(form.MigrateRepo{}), repo.MigratePost)
|
||||
m.Combo("/fork/:repoid").Get(repo.Fork).
|
||||
Post(bindIgnErr(form.CreateRepo{}), repo.ForkPost)
|
||||
}, reqSignIn)
|
||||
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Group("/settings", func() {
|
||||
m.Combo("").Get(repo.Settings).
|
||||
Post(bindIgnErr(form.RepoSetting{}), repo.SettingsPost)
|
||||
m.Combo("/avatar").Get(repo.SettingsAvatar).
|
||||
Post(binding.MultipartForm(form.Avatar{}), repo.SettingsAvatarPost)
|
||||
m.Post("/avatar/delete", repo.SettingsDeleteAvatar)
|
||||
m.Group("/collaboration", func() {
|
||||
m.Combo("").Get(repo.SettingsCollaboration).Post(repo.SettingsCollaborationPost)
|
||||
m.Post("/access_mode", repo.ChangeCollaborationAccessMode)
|
||||
m.Post("/delete", repo.DeleteCollaboration)
|
||||
})
|
||||
m.Group("/branches", func() {
|
||||
m.Get("", repo.SettingsBranches)
|
||||
m.Post("/default_branch", repo.UpdateDefaultBranch)
|
||||
m.Combo("/*").Get(repo.SettingsProtectedBranch).
|
||||
Post(bindIgnErr(form.ProtectBranch{}), repo.SettingsProtectedBranchPost)
|
||||
}, func(c *context.Context) {
|
||||
if c.Repo.Repository.IsMirror {
|
||||
c.NotFound()
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
m.Group("/hooks", func() {
|
||||
webhookRoutes()
|
||||
|
||||
m.Group("/:id", func() {
|
||||
m.Post("/test", repo.TestWebhook)
|
||||
m.Post("/redelivery", repo.RedeliveryWebhook)
|
||||
})
|
||||
|
||||
m.Group("/git", func() {
|
||||
m.Get("", repo.SettingsGitHooks)
|
||||
m.Combo("/:name").Get(repo.SettingsGitHooksEdit).
|
||||
Post(repo.SettingsGitHooksEditPost)
|
||||
}, context.GitHookService())
|
||||
})
|
||||
|
||||
m.Group("/keys", func() {
|
||||
m.Combo("").Get(repo.SettingsDeployKeys).
|
||||
Post(bindIgnErr(form.AddSSHKey{}), repo.SettingsDeployKeysPost)
|
||||
m.Post("/delete", repo.DeleteDeployKey)
|
||||
})
|
||||
}, func(c *context.Context) {
|
||||
c.Data["PageIsSettings"] = true
|
||||
})
|
||||
}, reqSignIn, context.RepoAssignment(), reqRepoAdmin, context.RepoRef())
|
||||
|
||||
m.Post("/:username/:reponame/action/:action", reqSignIn, context.RepoAssignment(), repo.Action)
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Get("/issues", repo.RetrieveLabels, repo.Issues)
|
||||
m.Get("/issues/:index", repo.ViewIssue)
|
||||
m.Get("/labels/", repo.RetrieveLabels, repo.Labels)
|
||||
m.Get("/milestones", repo.Milestones)
|
||||
}, ignSignIn, context.RepoAssignment(true))
|
||||
m.Group("/:username/:reponame", func() {
|
||||
// FIXME: should use different URLs but mostly same logic for comments of issue and pull request.
|
||||
// So they can apply their own enable/disable logic on routers.
|
||||
m.Group("/issues", func() {
|
||||
m.Combo("/new", repo.MustEnableIssues).Get(context.RepoRef(), repo.NewIssue).
|
||||
Post(bindIgnErr(form.NewIssue{}), repo.NewIssuePost)
|
||||
|
||||
m.Group("/:index", func() {
|
||||
m.Post("/title", repo.UpdateIssueTitle)
|
||||
m.Post("/content", repo.UpdateIssueContent)
|
||||
m.Combo("/comments").Post(bindIgnErr(form.CreateComment{}), repo.NewComment)
|
||||
})
|
||||
})
|
||||
m.Group("/comments/:id", func() {
|
||||
m.Post("", repo.UpdateCommentContent)
|
||||
m.Post("/delete", repo.DeleteComment)
|
||||
})
|
||||
}, reqSignIn, context.RepoAssignment(true))
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Group("/wiki", func() {
|
||||
m.Get("/?:page", repo.Wiki)
|
||||
m.Get("/_pages", repo.WikiPages)
|
||||
}, repo.MustEnableWiki, context.RepoRef())
|
||||
}, ignSignIn, context.RepoAssignment(false, true))
|
||||
|
||||
m.Group("/:username/:reponame", func() {
|
||||
// FIXME: should use different URLs but mostly same logic for comments of issue and pull request.
|
||||
// So they can apply their own enable/disable logic on routers.
|
||||
m.Group("/issues", func() {
|
||||
m.Group("/:index", func() {
|
||||
m.Post("/label", repo.UpdateIssueLabel)
|
||||
m.Post("/milestone", repo.UpdateIssueMilestone)
|
||||
m.Post("/assignee", repo.UpdateIssueAssignee)
|
||||
}, reqRepoWriter)
|
||||
})
|
||||
m.Group("/labels", func() {
|
||||
m.Post("/new", bindIgnErr(form.CreateLabel{}), repo.NewLabel)
|
||||
m.Post("/edit", bindIgnErr(form.CreateLabel{}), repo.UpdateLabel)
|
||||
m.Post("/delete", repo.DeleteLabel)
|
||||
m.Post("/initialize", bindIgnErr(form.InitializeLabels{}), repo.InitializeLabels)
|
||||
}, reqRepoWriter, context.RepoRef())
|
||||
m.Group("/milestones", func() {
|
||||
m.Combo("/new").Get(repo.NewMilestone).
|
||||
Post(bindIgnErr(form.CreateMilestone{}), repo.NewMilestonePost)
|
||||
m.Get("/:id/edit", repo.EditMilestone)
|
||||
m.Post("/:id/edit", bindIgnErr(form.CreateMilestone{}), repo.EditMilestonePost)
|
||||
m.Get("/:id/:action", repo.ChangeMilestonStatus)
|
||||
m.Post("/delete", repo.DeleteMilestone)
|
||||
}, reqRepoWriter, context.RepoRef())
|
||||
|
||||
m.Group("/releases", func() {
|
||||
m.Get("/new", repo.NewRelease)
|
||||
m.Post("/new", bindIgnErr(form.NewRelease{}), repo.NewReleasePost)
|
||||
m.Post("/delete", repo.DeleteRelease)
|
||||
m.Get("/edit/*", repo.EditRelease)
|
||||
m.Post("/edit/*", bindIgnErr(form.EditRelease{}), repo.EditReleasePost)
|
||||
}, repo.MustBeNotBare, reqRepoWriter, func(c *context.Context) {
|
||||
c.Data["PageIsViewFiles"] = true
|
||||
})
|
||||
|
||||
// FIXME: Should use c.Repo.PullRequest to unify template, currently we have inconsistent URL
|
||||
// for PR in same repository. After select branch on the page, the URL contains redundant head user name.
|
||||
// e.g. /org1/test-repo/compare/master...org1:develop
|
||||
// which should be /org1/test-repo/compare/master...develop
|
||||
m.Combo("/compare/*", repo.MustAllowPulls).Get(repo.CompareAndPullRequest).
|
||||
Post(bindIgnErr(form.NewIssue{}), repo.CompareAndPullRequestPost)
|
||||
|
||||
m.Group("", func() {
|
||||
m.Combo("/_edit/*").Get(repo.EditFile).
|
||||
Post(bindIgnErr(form.EditRepoFile{}), repo.EditFilePost)
|
||||
m.Combo("/_new/*").Get(repo.NewFile).
|
||||
Post(bindIgnErr(form.EditRepoFile{}), repo.NewFilePost)
|
||||
m.Post("/_preview/*", bindIgnErr(form.EditPreviewDiff{}), repo.DiffPreviewPost)
|
||||
m.Combo("/_delete/*").Get(repo.DeleteFile).
|
||||
Post(bindIgnErr(form.DeleteRepoFile{}), repo.DeleteFilePost)
|
||||
|
||||
m.Group("", func() {
|
||||
m.Combo("/_upload/*").Get(repo.UploadFile).
|
||||
Post(bindIgnErr(form.UploadRepoFile{}), repo.UploadFilePost)
|
||||
m.Post("/upload-file", repo.UploadFileToServer)
|
||||
m.Post("/upload-remove", bindIgnErr(form.RemoveUploadFile{}), repo.RemoveUploadFileFromServer)
|
||||
}, func(c *context.Context) {
|
||||
if !conf.Repository.Upload.Enabled {
|
||||
c.NotFound()
|
||||
return
|
||||
}
|
||||
})
|
||||
}, repo.MustBeNotBare, reqRepoWriter, context.RepoRef(), func(c *context.Context) {
|
||||
if !c.Repo.CanEnableEditor() {
|
||||
c.NotFound()
|
||||
return
|
||||
}
|
||||
|
||||
c.Data["PageIsViewFiles"] = true
|
||||
})
|
||||
}, reqSignIn, context.RepoAssignment())
|
||||
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Group("", func() {
|
||||
m.Get("/releases", repo.MustBeNotBare, repo.Releases)
|
||||
m.Get("/pulls", repo.RetrieveLabels, repo.Pulls)
|
||||
m.Get("/pulls/:index", repo.ViewPull)
|
||||
}, context.RepoRef())
|
||||
|
||||
m.Group("/branches", func() {
|
||||
m.Get("", repo.Branches)
|
||||
m.Get("/all", repo.AllBranches)
|
||||
m.Post("/delete/*", reqSignIn, reqRepoWriter, repo.DeleteBranchPost)
|
||||
}, repo.MustBeNotBare, func(c *context.Context) {
|
||||
c.Data["PageIsViewFiles"] = true
|
||||
})
|
||||
|
||||
m.Group("/wiki", func() {
|
||||
m.Group("", func() {
|
||||
m.Combo("/_new").Get(repo.NewWiki).
|
||||
Post(bindIgnErr(form.NewWiki{}), repo.NewWikiPost)
|
||||
m.Combo("/:page/_edit").Get(repo.EditWiki).
|
||||
Post(bindIgnErr(form.NewWiki{}), repo.EditWikiPost)
|
||||
m.Post("/:page/delete", repo.DeleteWikiPagePost)
|
||||
}, reqSignIn, reqRepoWriter)
|
||||
}, repo.MustEnableWiki, context.RepoRef())
|
||||
|
||||
m.Get("/archive/*", repo.MustBeNotBare, repo.Download)
|
||||
|
||||
m.Group("/pulls/:index", func() {
|
||||
m.Get("/commits", context.RepoRef(), repo.ViewPullCommits)
|
||||
m.Get("/files", context.RepoRef(), repo.ViewPullFiles)
|
||||
m.Post("/merge", reqRepoWriter, repo.MergePullRequest)
|
||||
}, repo.MustAllowPulls)
|
||||
|
||||
m.Group("", func() {
|
||||
m.Get("/src/*", repo.Home)
|
||||
m.Get("/raw/*", repo.SingleDownload)
|
||||
m.Get("/commits/*", repo.RefCommits)
|
||||
m.Get("/commit/:sha([a-f0-9]{7,40})$", repo.Diff)
|
||||
m.Get("/forks", repo.Forks)
|
||||
}, repo.MustBeNotBare, context.RepoRef())
|
||||
m.Get("/commit/:sha([a-f0-9]{7,40})\\.:ext(patch|diff)", repo.MustBeNotBare, repo.RawDiff)
|
||||
|
||||
m.Get("/compare/:before([a-z0-9]{40})\\.\\.\\.:after([a-z0-9]{40})", repo.MustBeNotBare, context.RepoRef(), repo.CompareDiff)
|
||||
}, ignSignIn, context.RepoAssignment())
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Get("", repo.Home)
|
||||
m.Get("/stars", repo.Stars)
|
||||
m.Get("/watchers", repo.Watchers)
|
||||
}, context.ServeGoGet(), ignSignIn, context.RepoAssignment(), context.RepoRef())
|
||||
// ***** END: Repository *****
|
||||
|
||||
// **********************
|
||||
// ----- API routes -----
|
||||
// **********************
|
||||
|
||||
// TODO: Without session and CSRF
|
||||
m.Group("/api", func() {
|
||||
apiv1.RegisterRoutes(m)
|
||||
}, ignSignIn)
|
||||
},
|
||||
session.Sessioner(session.Options{
|
||||
Provider: conf.Session.Provider,
|
||||
ProviderConfig: conf.Session.ProviderConfig,
|
||||
CookieName: conf.Session.CookieName,
|
||||
CookiePath: conf.Server.Subpath,
|
||||
Gclifetime: conf.Session.GCInterval,
|
||||
Maxlifetime: conf.Session.MaxLifeTime,
|
||||
Secure: conf.Session.CookieSecure,
|
||||
}),
|
||||
csrf.Csrfer(csrf.Options{
|
||||
Secret: conf.Security.SecretKey,
|
||||
Header: "X-CSRF-Token",
|
||||
Cookie: conf.Session.CSRFCookieName,
|
||||
CookieDomain: conf.Server.URL.Hostname(),
|
||||
CookiePath: conf.Server.Subpath,
|
||||
CookieHttpOnly: true,
|
||||
SetCookie: true,
|
||||
Secure: conf.Server.URL.Scheme == "https",
|
||||
}),
|
||||
context.Contexter(context.NewStore()),
|
||||
)
|
||||
|
||||
// ***************************
|
||||
// ----- HTTP Git routes -----
|
||||
// ***************************
|
||||
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Get("/tasks/trigger", repo.TriggerTask)
|
||||
|
||||
m.Group("/info/lfs", func() {
|
||||
lfs.RegisterRoutes(m.Router)
|
||||
})
|
||||
|
||||
m.Route("/*", "GET,POST,OPTIONS", context.ServeGoGet(), repo.HTTPContexter(repo.NewStore()), repo.HTTP)
|
||||
})
|
||||
|
||||
// ***************************
|
||||
// ----- Internal routes -----
|
||||
// ***************************
|
||||
|
||||
m.Group("/-", func() {
|
||||
m.Get("/metrics", app.MetricsFilter(), promhttp.Handler()) // "/-/metrics"
|
||||
|
||||
m.Group("/api", func() {
|
||||
m.Post("/sanitize_ipynb", app.SanitizeIpynb()) // "/-/api/sanitize_ipynb"
|
||||
})
|
||||
})
|
||||
|
||||
// **********************
|
||||
// ----- robots.txt -----
|
||||
// **********************
|
||||
|
||||
m.Get("/robots.txt", func(w http.ResponseWriter, r *http.Request) {
|
||||
if conf.HasRobotsTxt {
|
||||
http.ServeFile(w, r, filepath.Join(conf.CustomDir(), "robots.txt"))
|
||||
} else {
|
||||
w.WriteHeader(http.StatusNotFound)
|
||||
}
|
||||
})
|
||||
|
||||
m.NotFound(route.NotFound)
|
||||
|
||||
// Flag for port number in case first time run conflict.
|
||||
if cmd.IsSet("port") {
|
||||
conf.Server.URL.Host = strings.Replace(conf.Server.URL.Host, ":"+conf.Server.URL.Port(), ":"+cmd.String("port"), 1)
|
||||
conf.Server.ExternalURL = conf.Server.URL.String()
|
||||
conf.Server.HTTPPort = cmd.String("port")
|
||||
}
|
||||
|
||||
var listenAddr string
|
||||
if conf.Server.Protocol == "unix" {
|
||||
listenAddr = conf.Server.HTTPAddr
|
||||
} else {
|
||||
listenAddr = fmt.Sprintf("%s:%s", conf.Server.HTTPAddr, conf.Server.HTTPPort)
|
||||
}
|
||||
log.Info("Available on %s", conf.Server.ExternalURL)
|
||||
|
||||
switch conf.Server.Protocol {
|
||||
case "http":
|
||||
err = http.ListenAndServe(listenAddr, m)
|
||||
|
||||
case "https":
|
||||
tlsMinVersion := tls.VersionTLS12
|
||||
switch conf.Server.TLSMinVersion {
|
||||
case "TLS13":
|
||||
tlsMinVersion = tls.VersionTLS13
|
||||
case "TLS12":
|
||||
tlsMinVersion = tls.VersionTLS12
|
||||
case "TLS11":
|
||||
tlsMinVersion = tls.VersionTLS11
|
||||
case "TLS10":
|
||||
tlsMinVersion = tls.VersionTLS10
|
||||
}
|
||||
server := &http.Server{
|
||||
Addr: listenAddr,
|
||||
TLSConfig: &tls.Config{
|
||||
MinVersion: uint16(tlsMinVersion),
|
||||
CurvePreferences: []tls.CurveID{tls.X25519, tls.CurveP256, tls.CurveP384, tls.CurveP521},
|
||||
PreferServerCipherSuites: true,
|
||||
CipherSuites: []uint16{
|
||||
tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
|
||||
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
|
||||
tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
|
||||
tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
|
||||
tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
|
||||
tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,
|
||||
},
|
||||
}, Handler: m,
|
||||
}
|
||||
err = server.ListenAndServeTLS(conf.Server.CertFile, conf.Server.KeyFile)
|
||||
|
||||
case "fcgi":
|
||||
err = fcgi.Serve(nil, m)
|
||||
|
||||
case "unix":
|
||||
if osx.Exist(listenAddr) {
|
||||
err = os.Remove(listenAddr)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to remove existing Unix domain socket: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
var listener *net.UnixListener
|
||||
listener, err = net.ListenUnix("unix", &net.UnixAddr{Name: listenAddr, Net: "unix"})
|
||||
if err != nil {
|
||||
log.Fatal("Failed to listen on Unix networks: %v", err)
|
||||
}
|
||||
|
||||
// FIXME: add proper implementation of signal capture on all protocols
|
||||
// execute this on SIGTERM or SIGINT: listener.Close()
|
||||
if err = os.Chmod(listenAddr, conf.Server.UnixSocketMode); err != nil {
|
||||
log.Fatal("Failed to change permission of Unix domain socket: %v", err)
|
||||
}
|
||||
err = http.Serve(listener, m)
|
||||
|
||||
default:
|
||||
log.Fatal("Unexpected server protocol: %s", conf.Server.Protocol)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Fatal("Failed to start server: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
252
cmd/hook.go
252
cmd/hook.go
@@ -1,252 +0,0 @@
|
||||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/urfave/cli"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/git-module"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/httplib"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
http "github.com/gogits/gogs/routers/repo"
|
||||
)
|
||||
|
||||
var (
|
||||
Hook = cli.Command{
|
||||
Name: "hook",
|
||||
Usage: "Delegate commands to corresponding Git hooks",
|
||||
Description: "All sub-commands should only be called by Git",
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
|
||||
},
|
||||
Subcommands: []cli.Command{
|
||||
subcmdHookPreReceive,
|
||||
subcmdHookUpadte,
|
||||
subcmdHookPostReceive,
|
||||
},
|
||||
}
|
||||
|
||||
subcmdHookPreReceive = cli.Command{
|
||||
Name: "pre-receive",
|
||||
Usage: "Delegate pre-receive Git hook",
|
||||
Description: "This command should only be called by Git",
|
||||
Action: runHookPreReceive,
|
||||
}
|
||||
subcmdHookUpadte = cli.Command{
|
||||
Name: "update",
|
||||
Usage: "Delegate update Git hook",
|
||||
Description: "This command should only be called by Git",
|
||||
Action: runHookUpdate,
|
||||
}
|
||||
subcmdHookPostReceive = cli.Command{
|
||||
Name: "post-receive",
|
||||
Usage: "Delegate post-receive Git hook",
|
||||
Description: "This command should only be called by Git",
|
||||
Action: runHookPostReceive,
|
||||
}
|
||||
)
|
||||
|
||||
func runHookPreReceive(c *cli.Context) error {
|
||||
if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 {
|
||||
return nil
|
||||
}
|
||||
setup(c, "hooks/pre-receive.log", true)
|
||||
|
||||
isWiki := strings.Contains(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), ".wiki.git/")
|
||||
|
||||
buf := bytes.NewBuffer(nil)
|
||||
scanner := bufio.NewScanner(os.Stdin)
|
||||
for scanner.Scan() {
|
||||
buf.Write(scanner.Bytes())
|
||||
buf.WriteByte('\n')
|
||||
|
||||
if isWiki {
|
||||
continue
|
||||
}
|
||||
|
||||
fields := bytes.Fields(scanner.Bytes())
|
||||
if len(fields) != 3 {
|
||||
continue
|
||||
}
|
||||
oldCommitID := string(fields[0])
|
||||
newCommitID := string(fields[1])
|
||||
branchName := strings.TrimPrefix(string(fields[2]), git.BRANCH_PREFIX)
|
||||
|
||||
// Branch protection
|
||||
repoID := com.StrTo(os.Getenv(http.ENV_REPO_ID)).MustInt64()
|
||||
protectBranch, err := models.GetProtectBranchOfRepoByName(repoID, branchName)
|
||||
if err != nil {
|
||||
if models.IsErrBranchNotExist(err) {
|
||||
continue
|
||||
}
|
||||
fail("Internal error", "GetProtectBranchOfRepoByName [repo_id: %d, branch: %s]: %v", repoID, branchName, err)
|
||||
}
|
||||
if !protectBranch.Protected {
|
||||
continue
|
||||
}
|
||||
|
||||
// Whitelist users can bypass require pull request check
|
||||
bypassRequirePullRequest := false
|
||||
|
||||
// Check if user is in whitelist when enabled
|
||||
userID := com.StrTo(os.Getenv(http.ENV_AUTH_USER_ID)).MustInt64()
|
||||
if protectBranch.EnableWhitelist {
|
||||
if !models.IsUserInProtectBranchWhitelist(repoID, userID, branchName) {
|
||||
fail(fmt.Sprintf("Branch '%s' is protected and you are not in the push whitelist", branchName), "")
|
||||
}
|
||||
|
||||
bypassRequirePullRequest = true
|
||||
}
|
||||
|
||||
// Check if branch allows direct push
|
||||
if !bypassRequirePullRequest && protectBranch.RequirePullRequest {
|
||||
fail(fmt.Sprintf("Branch '%s' is protected and commits must be merged through pull request", branchName), "")
|
||||
}
|
||||
|
||||
// check and deletion
|
||||
if newCommitID == git.EMPTY_SHA {
|
||||
fail(fmt.Sprintf("Branch '%s' is protected from deletion", branchName), "")
|
||||
}
|
||||
|
||||
// Check force push
|
||||
output, err := git.NewCommand("rev-list", oldCommitID, "^"+newCommitID).
|
||||
RunInDir(models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME)))
|
||||
if err != nil {
|
||||
fail("Internal error", "Fail to detect force push: %v", err)
|
||||
} else if len(output) > 0 {
|
||||
fail(fmt.Sprintf("Branch '%s' is protected from force push", branchName), "")
|
||||
}
|
||||
}
|
||||
|
||||
customHooksPath := filepath.Join(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), "pre-receive")
|
||||
if !com.IsFile(customHooksPath) {
|
||||
return nil
|
||||
}
|
||||
|
||||
hookCmd := exec.Command(customHooksPath)
|
||||
hookCmd.Dir = models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME))
|
||||
hookCmd.Stdout = os.Stdout
|
||||
hookCmd.Stdin = buf
|
||||
hookCmd.Stderr = os.Stderr
|
||||
if err := hookCmd.Run(); err != nil {
|
||||
fail("Internal error", "Fail to execute custom pre-receive hook: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func runHookUpdate(c *cli.Context) error {
|
||||
if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 {
|
||||
return nil
|
||||
}
|
||||
setup(c, "hooks/update.log", false)
|
||||
|
||||
args := c.Args()
|
||||
if len(args) != 3 {
|
||||
fail("Arguments received are not equal to three", "Arguments received are not equal to three")
|
||||
} else if len(args[0]) == 0 {
|
||||
fail("First argument 'refName' is empty", "First argument 'refName' is empty")
|
||||
}
|
||||
|
||||
customHooksPath := filepath.Join(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), "update")
|
||||
if !com.IsFile(customHooksPath) {
|
||||
return nil
|
||||
}
|
||||
|
||||
hookCmd := exec.Command(customHooksPath, args...)
|
||||
hookCmd.Dir = models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME))
|
||||
hookCmd.Stdout = os.Stdout
|
||||
hookCmd.Stdin = os.Stdin
|
||||
hookCmd.Stderr = os.Stderr
|
||||
if err := hookCmd.Run(); err != nil {
|
||||
fail("Internal error", "Fail to execute custom pre-receive hook: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func runHookPostReceive(c *cli.Context) error {
|
||||
if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 {
|
||||
return nil
|
||||
}
|
||||
setup(c, "hooks/post-receive.log", true)
|
||||
|
||||
isWiki := strings.Contains(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), ".wiki.git/")
|
||||
|
||||
buf := bytes.NewBuffer(nil)
|
||||
scanner := bufio.NewScanner(os.Stdin)
|
||||
for scanner.Scan() {
|
||||
buf.Write(scanner.Bytes())
|
||||
buf.WriteByte('\n')
|
||||
|
||||
// TODO: support news feeds for wiki
|
||||
if isWiki {
|
||||
continue
|
||||
}
|
||||
|
||||
fields := bytes.Fields(scanner.Bytes())
|
||||
if len(fields) != 3 {
|
||||
continue
|
||||
}
|
||||
|
||||
options := models.PushUpdateOptions{
|
||||
OldCommitID: string(fields[0]),
|
||||
NewCommitID: string(fields[1]),
|
||||
RefFullName: string(fields[2]),
|
||||
PusherID: com.StrTo(os.Getenv(http.ENV_AUTH_USER_ID)).MustInt64(),
|
||||
PusherName: os.Getenv(http.ENV_AUTH_USER_NAME),
|
||||
RepoUserName: os.Getenv(http.ENV_REPO_OWNER_NAME),
|
||||
RepoName: os.Getenv(http.ENV_REPO_NAME),
|
||||
}
|
||||
if err := models.PushUpdate(options); err != nil {
|
||||
log.Error(2, "PushUpdate: %v", err)
|
||||
}
|
||||
|
||||
// Ask for running deliver hook and test pull request tasks.
|
||||
reqURL := setting.LocalURL + options.RepoUserName + "/" + options.RepoName + "/tasks/trigger?branch=" +
|
||||
strings.TrimPrefix(options.RefFullName, git.BRANCH_PREFIX) +
|
||||
"&secret=" + os.Getenv(http.ENV_REPO_OWNER_SALT_MD5) +
|
||||
"&pusher=" + os.Getenv(http.ENV_AUTH_USER_ID)
|
||||
log.Trace("Trigger task: %s", reqURL)
|
||||
|
||||
resp, err := httplib.Head(reqURL).SetTLSClientConfig(&tls.Config{
|
||||
InsecureSkipVerify: true,
|
||||
}).Response()
|
||||
if err == nil {
|
||||
resp.Body.Close()
|
||||
if resp.StatusCode/100 != 2 {
|
||||
log.Error(2, "Fail to trigger task: not 2xx response code")
|
||||
}
|
||||
} else {
|
||||
log.Error(2, "Fail to trigger task: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
customHooksPath := filepath.Join(os.Getenv(http.ENV_REPO_CUSTOM_HOOKS_PATH), "post-receive")
|
||||
if !com.IsFile(customHooksPath) {
|
||||
return nil
|
||||
}
|
||||
|
||||
hookCmd := exec.Command(customHooksPath)
|
||||
hookCmd.Dir = models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME))
|
||||
hookCmd.Stdout = os.Stdout
|
||||
hookCmd.Stdin = buf
|
||||
hookCmd.Stderr = os.Stderr
|
||||
if err := hookCmd.Run(); err != nil {
|
||||
fail("Internal error", "Fail to execute custom post-receive hook: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
113
cmd/import.go
113
cmd/import.go
@@ -1,113 +0,0 @@
|
||||
// Copyright 2016 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/urfave/cli"
|
||||
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
var (
|
||||
Import = cli.Command{
|
||||
Name: "import",
|
||||
Usage: "Import portable data as local Gogs data",
|
||||
Description: `Allow user import data from other Gogs installations to local instance
|
||||
without manually hacking the data files`,
|
||||
Subcommands: []cli.Command{
|
||||
subcmdImportLocale,
|
||||
},
|
||||
}
|
||||
|
||||
subcmdImportLocale = cli.Command{
|
||||
Name: "locale",
|
||||
Usage: "Import locale files to local repository",
|
||||
Action: runImportLocale,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("source", "", "Source directory that stores new locale files"),
|
||||
stringFlag("target", "", "Target directory that stores old locale files"),
|
||||
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func runImportLocale(c *cli.Context) error {
|
||||
if !c.IsSet("source") {
|
||||
return fmt.Errorf("Source directory is not specified")
|
||||
} else if !c.IsSet("target") {
|
||||
return fmt.Errorf("Target directory is not specified")
|
||||
}
|
||||
if !com.IsDir(c.String("source")) {
|
||||
return fmt.Errorf("Source directory does not exist or is not a directory")
|
||||
} else if !com.IsDir(c.String("target")) {
|
||||
return fmt.Errorf("Target directory does not exist or is not a directory")
|
||||
}
|
||||
|
||||
if c.IsSet("config") {
|
||||
setting.CustomConf = c.String("config")
|
||||
}
|
||||
|
||||
setting.NewContext()
|
||||
|
||||
now := time.Now()
|
||||
|
||||
line := make([]byte, 0, 100)
|
||||
badChars := []byte(`="`)
|
||||
escapedQuotes := []byte(`\"`)
|
||||
regularQuotes := []byte(`"`)
|
||||
// Cut out en-US.
|
||||
for _, lang := range setting.Langs[1:] {
|
||||
name := fmt.Sprintf("locale_%s.ini", lang)
|
||||
source := filepath.Join(c.String("source"), name)
|
||||
target := filepath.Join(c.String("target"), name)
|
||||
if !com.IsFile(source) {
|
||||
continue
|
||||
}
|
||||
|
||||
// Crowdin surrounds double quotes for strings contain quotes inside,
|
||||
// this breaks INI parser, we need to fix that.
|
||||
sr, err := os.Open(source)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Open: %v", err)
|
||||
}
|
||||
|
||||
tw, err := os.Create(target)
|
||||
if err != nil {
|
||||
if err != nil {
|
||||
return fmt.Errorf("Open: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
scanner := bufio.NewScanner(sr)
|
||||
for scanner.Scan() {
|
||||
line = scanner.Bytes()
|
||||
idx := bytes.Index(line, badChars)
|
||||
if idx > -1 && line[len(line)-1] == '"' {
|
||||
// We still want the "=" sign
|
||||
line = append(line[:idx+1], line[idx+2:len(line)-1]...)
|
||||
line = bytes.Replace(line, escapedQuotes, regularQuotes, -1)
|
||||
}
|
||||
tw.Write(line)
|
||||
tw.WriteString("\n")
|
||||
}
|
||||
sr.Close()
|
||||
tw.Close()
|
||||
|
||||
// Modification time of files from Crowdin often ahead of current,
|
||||
// so we need to set back to current.
|
||||
os.Chtimes(target, now, now)
|
||||
}
|
||||
|
||||
fmt.Println("Locale files has been successfully imported!")
|
||||
return nil
|
||||
}
|
||||
129
cmd/restore.go
129
cmd/restore.go
@@ -1,129 +0,0 @@
|
||||
// Copyright 2017 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/Unknwon/cae/zip"
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/mcuadros/go-version"
|
||||
"github.com/urfave/cli"
|
||||
log "gopkg.in/clog.v1"
|
||||
"gopkg.in/ini.v1"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
var Restore = cli.Command{
|
||||
Name: "restore",
|
||||
Usage: "Restore files and database from backup",
|
||||
Description: `Restore imports all related files and database from a backup archive.
|
||||
The backup version must lower or equal to current Gogs version. You can also import
|
||||
backup from other database engines, which is useful for database migrating.
|
||||
|
||||
If corresponding files or database tables are not presented in the archive, they will
|
||||
be skipped and remian unchanged.`,
|
||||
Action: runRestore,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
|
||||
boolFlag("verbose, v", "Show process details"),
|
||||
stringFlag("tempdir, t", os.TempDir(), "Temporary directory path"),
|
||||
stringFlag("from", "", "Path to backup archive"),
|
||||
boolFlag("database-only", "Only import database"),
|
||||
boolFlag("exclude-repos", "Exclude repositories"),
|
||||
},
|
||||
}
|
||||
|
||||
func runRestore(c *cli.Context) error {
|
||||
zip.Verbose = c.Bool("verbose")
|
||||
|
||||
tmpDir := c.String("tempdir")
|
||||
if !com.IsExist(tmpDir) {
|
||||
log.Fatal(0, "'--tempdir' does not exist: %s", tmpDir)
|
||||
}
|
||||
|
||||
log.Info("Restore backup from: %s", c.String("from"))
|
||||
if err := zip.ExtractTo(c.String("from"), tmpDir); err != nil {
|
||||
log.Fatal(0, "Fail to extract backup archive: %v", err)
|
||||
}
|
||||
archivePath := path.Join(tmpDir, _ARCHIVE_ROOT_DIR)
|
||||
|
||||
// Check backup version
|
||||
metaFile := path.Join(archivePath, "metadata.ini")
|
||||
if !com.IsExist(metaFile) {
|
||||
log.Fatal(0, "File 'metadata.ini' is missing")
|
||||
}
|
||||
metadata, err := ini.Load(metaFile)
|
||||
if err != nil {
|
||||
log.Fatal(0, "Fail to load metadata '%s': %v", metaFile, err)
|
||||
}
|
||||
backupVersion := metadata.Section("").Key("GOGS_VERSION").MustString("999.0")
|
||||
if version.Compare(setting.AppVer, backupVersion, "<") {
|
||||
log.Fatal(0, "Current Gogs version is lower than backup version: %s < %s", setting.AppVer, backupVersion)
|
||||
}
|
||||
|
||||
// If config file is not present in backup, user must set this file via flag.
|
||||
// Otherwise, it's optional to set config file flag.
|
||||
configFile := path.Join(archivePath, "custom/conf/app.ini")
|
||||
if c.IsSet("config") {
|
||||
setting.CustomConf = c.String("config")
|
||||
} else if !com.IsExist(configFile) {
|
||||
log.Fatal(0, "'--config' is not specified and custom config file is not found in backup")
|
||||
} else {
|
||||
setting.CustomConf = configFile
|
||||
}
|
||||
setting.NewContext()
|
||||
models.LoadConfigs()
|
||||
models.SetEngine()
|
||||
|
||||
// Database
|
||||
dbDir := path.Join(archivePath, "db")
|
||||
if err = models.ImportDatabase(dbDir); err != nil {
|
||||
log.Fatal(0, "Fail to import database: %v", err)
|
||||
}
|
||||
|
||||
// Custom files
|
||||
if !c.Bool("database-only") {
|
||||
if com.IsExist(setting.CustomPath) {
|
||||
if err = os.Rename(setting.CustomPath, setting.CustomPath+".bak"); err != nil {
|
||||
log.Fatal(0, "Fail to backup current 'custom': %v", err)
|
||||
}
|
||||
}
|
||||
if err = os.Rename(path.Join(archivePath, "custom"), setting.CustomPath); err != nil {
|
||||
log.Fatal(0, "Fail to import 'custom': %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Data files
|
||||
if !c.Bool("database-only") {
|
||||
for _, dir := range []string{"attachments", "avatars"} {
|
||||
dirPath := path.Join(setting.AppDataPath, dir)
|
||||
if com.IsExist(dirPath) {
|
||||
if err = os.Rename(dirPath, dirPath+".bak"); err != nil {
|
||||
log.Fatal(0, "Fail to backup current 'data': %v", err)
|
||||
}
|
||||
}
|
||||
if err = os.Rename(path.Join(archivePath, "data", dir), dirPath); err != nil {
|
||||
log.Fatal(0, "Fail to import 'data': %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Repositories
|
||||
reposPath := path.Join(archivePath, "repositories.zip")
|
||||
if !c.Bool("exclude-repos") && !c.Bool("database-only") && com.IsExist(reposPath) {
|
||||
if err := zip.ExtractTo(reposPath, path.Dir(setting.RepoRootPath)); err != nil {
|
||||
log.Fatal(0, "Fail to extract 'repositories.zip': %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
os.RemoveAll(path.Join(tmpDir, _ARCHIVE_ROOT_DIR))
|
||||
log.Info("Restore succeed!")
|
||||
log.Shutdown()
|
||||
return nil
|
||||
}
|
||||
273
cmd/serv.go
273
cmd/serv.go
@@ -1,273 +0,0 @@
|
||||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/urfave/cli"
|
||||
log "gopkg.in/clog.v1"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/models/errors"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
http "github.com/gogits/gogs/routers/repo"
|
||||
)
|
||||
|
||||
const (
|
||||
_ACCESS_DENIED_MESSAGE = "Repository does not exist or you do not have access"
|
||||
)
|
||||
|
||||
var Serv = cli.Command{
|
||||
Name: "serv",
|
||||
Usage: "This command should only be called by SSH shell",
|
||||
Description: `Serv provide access auth for repositories`,
|
||||
Action: runServ,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
func fail(userMessage, logMessage string, args ...interface{}) {
|
||||
fmt.Fprintln(os.Stderr, "Gogs:", userMessage)
|
||||
|
||||
if len(logMessage) > 0 {
|
||||
if !setting.ProdMode {
|
||||
fmt.Fprintf(os.Stderr, logMessage+"\n", args...)
|
||||
}
|
||||
log.Fatal(3, logMessage, args...)
|
||||
}
|
||||
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func setup(c *cli.Context, logPath string, connectDB bool) {
|
||||
if c.IsSet("config") {
|
||||
setting.CustomConf = c.String("config")
|
||||
} else if c.GlobalIsSet("config") {
|
||||
setting.CustomConf = c.GlobalString("config")
|
||||
}
|
||||
|
||||
setting.NewContext()
|
||||
|
||||
level := log.TRACE
|
||||
if setting.ProdMode {
|
||||
level = log.ERROR
|
||||
}
|
||||
log.New(log.FILE, log.FileConfig{
|
||||
Level: level,
|
||||
Filename: filepath.Join(setting.LogRootPath, logPath),
|
||||
FileRotationConfig: log.FileRotationConfig{
|
||||
Rotate: true,
|
||||
Daily: true,
|
||||
MaxDays: 3,
|
||||
},
|
||||
})
|
||||
log.Delete(log.CONSOLE) // Remove primary logger
|
||||
|
||||
if !connectDB {
|
||||
return
|
||||
}
|
||||
|
||||
models.LoadConfigs()
|
||||
|
||||
if setting.UseSQLite3 {
|
||||
workDir, _ := setting.WorkDir()
|
||||
os.Chdir(workDir)
|
||||
}
|
||||
|
||||
if err := models.SetEngine(); err != nil {
|
||||
fail("Internal error", "SetEngine: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func parseSSHCmd(cmd string) (string, string) {
|
||||
ss := strings.SplitN(cmd, " ", 2)
|
||||
if len(ss) != 2 {
|
||||
return "", ""
|
||||
}
|
||||
return ss[0], strings.Replace(ss[1], "'/", "'", 1)
|
||||
}
|
||||
|
||||
func checkDeployKey(key *models.PublicKey, repo *models.Repository) {
|
||||
// Check if this deploy key belongs to current repository.
|
||||
if !models.HasDeployKey(key.ID, repo.ID) {
|
||||
fail("Key access denied", "Deploy key access denied: [key_id: %d, repo_id: %d]", key.ID, repo.ID)
|
||||
}
|
||||
|
||||
// Update deploy key activity.
|
||||
deployKey, err := models.GetDeployKeyByRepo(key.ID, repo.ID)
|
||||
if err != nil {
|
||||
fail("Internal error", "GetDeployKey: %v", err)
|
||||
}
|
||||
|
||||
deployKey.Updated = time.Now()
|
||||
if err = models.UpdateDeployKey(deployKey); err != nil {
|
||||
fail("Internal error", "UpdateDeployKey: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
allowedCommands = map[string]models.AccessMode{
|
||||
"git-upload-pack": models.ACCESS_MODE_READ,
|
||||
"git-upload-archive": models.ACCESS_MODE_READ,
|
||||
"git-receive-pack": models.ACCESS_MODE_WRITE,
|
||||
}
|
||||
)
|
||||
|
||||
func runServ(c *cli.Context) error {
|
||||
setup(c, "serv.log", true)
|
||||
|
||||
if setting.SSH.Disabled {
|
||||
println("Gogs: SSH has been disabled")
|
||||
return nil
|
||||
}
|
||||
|
||||
if len(c.Args()) < 1 {
|
||||
fail("Not enough arguments", "Not enough arguments")
|
||||
}
|
||||
|
||||
sshCmd := os.Getenv("SSH_ORIGINAL_COMMAND")
|
||||
if len(sshCmd) == 0 {
|
||||
println("Hi there, You've successfully authenticated, but Gogs does not provide shell access.")
|
||||
println("If this is unexpected, please log in with password and setup Gogs under another user.")
|
||||
return nil
|
||||
}
|
||||
|
||||
verb, args := parseSSHCmd(sshCmd)
|
||||
repoFullName := strings.ToLower(strings.Trim(args, "'"))
|
||||
repoFields := strings.SplitN(repoFullName, "/", 2)
|
||||
if len(repoFields) != 2 {
|
||||
fail("Invalid repository path", "Invalid repository path: %v", args)
|
||||
}
|
||||
ownerName := strings.ToLower(repoFields[0])
|
||||
repoName := strings.TrimSuffix(strings.ToLower(repoFields[1]), ".git")
|
||||
repoName = strings.TrimSuffix(repoName, ".wiki")
|
||||
|
||||
owner, err := models.GetUserByName(ownerName)
|
||||
if err != nil {
|
||||
if errors.IsUserNotExist(err) {
|
||||
fail("Repository owner does not exist", "Unregistered owner: %s", ownerName)
|
||||
}
|
||||
fail("Internal error", "Fail to get repository owner '%s': %v", ownerName, err)
|
||||
}
|
||||
|
||||
repo, err := models.GetRepositoryByName(owner.ID, repoName)
|
||||
if err != nil {
|
||||
if errors.IsRepoNotExist(err) {
|
||||
fail(_ACCESS_DENIED_MESSAGE, "Repository does not exist: %s/%s", owner.Name, repoName)
|
||||
}
|
||||
fail("Internal error", "Fail to get repository: %v", err)
|
||||
}
|
||||
repo.Owner = owner
|
||||
|
||||
requestMode, ok := allowedCommands[verb]
|
||||
if !ok {
|
||||
fail("Unknown git command", "Unknown git command '%s'", verb)
|
||||
}
|
||||
|
||||
// Prohibit push to mirror repositories.
|
||||
if requestMode > models.ACCESS_MODE_READ && repo.IsMirror {
|
||||
fail("Mirror repository is read-only", "")
|
||||
}
|
||||
|
||||
// Allow anonymous (user is nil) clone for public repositories.
|
||||
var user *models.User
|
||||
|
||||
key, err := models.GetPublicKeyByID(com.StrTo(strings.TrimPrefix(c.Args()[0], "key-")).MustInt64())
|
||||
if err != nil {
|
||||
fail("Invalid key ID", "Invalid key ID '%s': %v", c.Args()[0], err)
|
||||
}
|
||||
|
||||
if requestMode == models.ACCESS_MODE_WRITE || repo.IsPrivate {
|
||||
// Check deploy key or user key.
|
||||
if key.IsDeployKey() {
|
||||
if key.Mode < requestMode {
|
||||
fail("Key permission denied", "Cannot push with deployment key: %d", key.ID)
|
||||
}
|
||||
checkDeployKey(key, repo)
|
||||
} else {
|
||||
user, err = models.GetUserByKeyID(key.ID)
|
||||
if err != nil {
|
||||
fail("Internal error", "Fail to get user by key ID '%d': %v", key.ID, err)
|
||||
}
|
||||
|
||||
mode, err := models.AccessLevel(user.ID, repo)
|
||||
if err != nil {
|
||||
fail("Internal error", "Fail to check access: %v", err)
|
||||
}
|
||||
|
||||
if mode < requestMode {
|
||||
clientMessage := _ACCESS_DENIED_MESSAGE
|
||||
if mode >= models.ACCESS_MODE_READ {
|
||||
clientMessage = "You do not have sufficient authorization for this action"
|
||||
}
|
||||
fail(clientMessage,
|
||||
"User '%s' does not have level '%v' access to repository '%s'",
|
||||
user.Name, requestMode, repoFullName)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
setting.NewService()
|
||||
// Check if the key can access to the repository in case of it is a deploy key (a deploy keys != user key).
|
||||
// A deploy key doesn't represent a signed in user, so in a site with Service.RequireSignInView activated
|
||||
// we should give read access only in repositories where this deploy key is in use. In other case, a server
|
||||
// or system using an active deploy key can get read access to all the repositories in a Gogs service.
|
||||
if key.IsDeployKey() && setting.Service.RequireSignInView {
|
||||
checkDeployKey(key, repo)
|
||||
}
|
||||
}
|
||||
|
||||
// Update user key activity.
|
||||
if key.ID > 0 {
|
||||
key, err := models.GetPublicKeyByID(key.ID)
|
||||
if err != nil {
|
||||
fail("Internal error", "GetPublicKeyByID: %v", err)
|
||||
}
|
||||
|
||||
key.Updated = time.Now()
|
||||
if err = models.UpdatePublicKey(key); err != nil {
|
||||
fail("Internal error", "UpdatePublicKey: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Special handle for Windows.
|
||||
if setting.IsWindows {
|
||||
verb = strings.Replace(verb, "-", " ", 1)
|
||||
}
|
||||
|
||||
var gitCmd *exec.Cmd
|
||||
verbs := strings.Split(verb, " ")
|
||||
if len(verbs) == 2 {
|
||||
gitCmd = exec.Command(verbs[0], verbs[1], repoFullName)
|
||||
} else {
|
||||
gitCmd = exec.Command(verb, repoFullName)
|
||||
}
|
||||
if requestMode == models.ACCESS_MODE_WRITE {
|
||||
gitCmd.Env = append(os.Environ(), http.ComposeHookEnvs(http.ComposeHookEnvsOptions{
|
||||
AuthUser: user,
|
||||
OwnerName: owner.Name,
|
||||
OwnerSalt: owner.Salt,
|
||||
RepoID: repo.ID,
|
||||
RepoName: repo.Name,
|
||||
RepoPath: repo.RepoPath(),
|
||||
})...)
|
||||
}
|
||||
gitCmd.Dir = setting.RepoRootPath
|
||||
gitCmd.Stdout = os.Stdout
|
||||
gitCmd.Stdin = os.Stdin
|
||||
gitCmd.Stderr = os.Stderr
|
||||
if err = gitCmd.Run(); err != nil {
|
||||
fail("Internal error", "Fail to execute git command: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
700
cmd/web.go
700
cmd/web.go
@@ -1,700 +0,0 @@
|
||||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/http/fcgi"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"github.com/go-macaron/binding"
|
||||
"github.com/go-macaron/cache"
|
||||
"github.com/go-macaron/captcha"
|
||||
"github.com/go-macaron/csrf"
|
||||
"github.com/go-macaron/gzip"
|
||||
"github.com/go-macaron/i18n"
|
||||
"github.com/go-macaron/session"
|
||||
"github.com/go-macaron/toolbox"
|
||||
"github.com/mcuadros/go-version"
|
||||
"github.com/urfave/cli"
|
||||
log "gopkg.in/clog.v1"
|
||||
"gopkg.in/macaron.v1"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/pkg/bindata"
|
||||
"github.com/gogits/gogs/pkg/context"
|
||||
"github.com/gogits/gogs/pkg/form"
|
||||
"github.com/gogits/gogs/pkg/mailer"
|
||||
"github.com/gogits/gogs/pkg/setting"
|
||||
"github.com/gogits/gogs/pkg/template"
|
||||
"github.com/gogits/gogs/routers"
|
||||
"github.com/gogits/gogs/routers/admin"
|
||||
apiv1 "github.com/gogits/gogs/routers/api/v1"
|
||||
"github.com/gogits/gogs/routers/dev"
|
||||
"github.com/gogits/gogs/routers/org"
|
||||
"github.com/gogits/gogs/routers/repo"
|
||||
"github.com/gogits/gogs/routers/user"
|
||||
)
|
||||
|
||||
var Web = cli.Command{
|
||||
Name: "web",
|
||||
Usage: "Start web server",
|
||||
Description: `Gogs web server is the only thing you need to run,
|
||||
and it takes care of all the other things for you`,
|
||||
Action: runWeb,
|
||||
Flags: []cli.Flag{
|
||||
stringFlag("port, p", "3000", "Temporary port number to prevent conflict"),
|
||||
stringFlag("config, c", "custom/conf/app.ini", "Custom configuration file path"),
|
||||
},
|
||||
}
|
||||
|
||||
// checkVersion checks if binary matches the version of templates files.
|
||||
func checkVersion() {
|
||||
// Templates.
|
||||
data, err := ioutil.ReadFile(setting.StaticRootPath + "/templates/.VERSION")
|
||||
if err != nil {
|
||||
log.Fatal(2, "Fail to read 'templates/.VERSION': %v", err)
|
||||
}
|
||||
tplVer := string(data)
|
||||
if tplVer != setting.AppVer {
|
||||
if version.Compare(tplVer, setting.AppVer, ">") {
|
||||
log.Fatal(2, "Binary version is lower than template file version, did you forget to recompile Gogs?")
|
||||
} else {
|
||||
log.Fatal(2, "Binary version is higher than template file version, did you forget to update template files?")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// newMacaron initializes Macaron instance.
|
||||
func newMacaron() *macaron.Macaron {
|
||||
m := macaron.New()
|
||||
if !setting.DisableRouterLog {
|
||||
m.Use(macaron.Logger())
|
||||
}
|
||||
m.Use(macaron.Recovery())
|
||||
if setting.EnableGzip {
|
||||
m.Use(gzip.Gziper())
|
||||
}
|
||||
if setting.Protocol == setting.SCHEME_FCGI {
|
||||
m.SetURLPrefix(setting.AppSubUrl)
|
||||
}
|
||||
m.Use(macaron.Static(
|
||||
path.Join(setting.StaticRootPath, "public"),
|
||||
macaron.StaticOptions{
|
||||
SkipLogging: setting.DisableRouterLog,
|
||||
},
|
||||
))
|
||||
m.Use(macaron.Static(
|
||||
setting.AvatarUploadPath,
|
||||
macaron.StaticOptions{
|
||||
Prefix: "avatars",
|
||||
SkipLogging: setting.DisableRouterLog,
|
||||
},
|
||||
))
|
||||
|
||||
funcMap := template.NewFuncMap()
|
||||
m.Use(macaron.Renderer(macaron.RenderOptions{
|
||||
Directory: path.Join(setting.StaticRootPath, "templates"),
|
||||
AppendDirectories: []string{path.Join(setting.CustomPath, "templates")},
|
||||
Funcs: funcMap,
|
||||
IndentJSON: macaron.Env != macaron.PROD,
|
||||
}))
|
||||
mailer.InitMailRender(path.Join(setting.StaticRootPath, "templates/mail"),
|
||||
path.Join(setting.CustomPath, "templates/mail"), funcMap)
|
||||
|
||||
localeNames, err := bindata.AssetDir("conf/locale")
|
||||
if err != nil {
|
||||
log.Fatal(4, "Fail to list locale files: %v", err)
|
||||
}
|
||||
localFiles := make(map[string][]byte)
|
||||
for _, name := range localeNames {
|
||||
localFiles[name] = bindata.MustAsset("conf/locale/" + name)
|
||||
}
|
||||
m.Use(i18n.I18n(i18n.Options{
|
||||
SubURL: setting.AppSubUrl,
|
||||
Files: localFiles,
|
||||
CustomDirectory: path.Join(setting.CustomPath, "conf/locale"),
|
||||
Langs: setting.Langs,
|
||||
Names: setting.Names,
|
||||
DefaultLang: "en-US",
|
||||
Redirect: true,
|
||||
}))
|
||||
m.Use(cache.Cacher(cache.Options{
|
||||
Adapter: setting.CacheAdapter,
|
||||
AdapterConfig: setting.CacheConn,
|
||||
Interval: setting.CacheInterval,
|
||||
}))
|
||||
m.Use(captcha.Captchaer(captcha.Options{
|
||||
SubURL: setting.AppSubUrl,
|
||||
}))
|
||||
m.Use(session.Sessioner(setting.SessionConfig))
|
||||
m.Use(csrf.Csrfer(csrf.Options{
|
||||
Secret: setting.SecretKey,
|
||||
Cookie: setting.CSRFCookieName,
|
||||
SetCookie: true,
|
||||
Header: "X-Csrf-Token",
|
||||
CookiePath: setting.AppSubUrl,
|
||||
}))
|
||||
m.Use(toolbox.Toolboxer(m, toolbox.Options{
|
||||
HealthCheckFuncs: []*toolbox.HealthCheckFuncDesc{
|
||||
&toolbox.HealthCheckFuncDesc{
|
||||
Desc: "Database connection",
|
||||
Func: models.Ping,
|
||||
},
|
||||
},
|
||||
}))
|
||||
m.Use(context.Contexter())
|
||||
return m
|
||||
}
|
||||
|
||||
func runWeb(ctx *cli.Context) error {
|
||||
if ctx.IsSet("config") {
|
||||
setting.CustomConf = ctx.String("config")
|
||||
}
|
||||
routers.GlobalInit()
|
||||
checkVersion()
|
||||
|
||||
m := newMacaron()
|
||||
|
||||
reqSignIn := context.Toggle(&context.ToggleOptions{SignInRequired: true})
|
||||
ignSignIn := context.Toggle(&context.ToggleOptions{SignInRequired: setting.Service.RequireSignInView})
|
||||
ignSignInAndCsrf := context.Toggle(&context.ToggleOptions{DisableCSRF: true})
|
||||
reqSignOut := context.Toggle(&context.ToggleOptions{SignOutRequired: true})
|
||||
|
||||
bindIgnErr := binding.BindIgnErr
|
||||
|
||||
// FIXME: not all routes need go through same middlewares.
|
||||
// Especially some AJAX requests, we can reduce middleware number to improve performance.
|
||||
// Routers.
|
||||
m.Get("/", ignSignIn, routers.Home)
|
||||
m.Group("/explore", func() {
|
||||
m.Get("", func(ctx *context.Context) {
|
||||
ctx.Redirect(setting.AppSubUrl + "/explore/repos")
|
||||
})
|
||||
m.Get("/repos", routers.ExploreRepos)
|
||||
m.Get("/users", routers.ExploreUsers)
|
||||
m.Get("/organizations", routers.ExploreOrganizations)
|
||||
}, ignSignIn)
|
||||
m.Combo("/install", routers.InstallInit).Get(routers.Install).
|
||||
Post(bindIgnErr(form.Install{}), routers.InstallPost)
|
||||
m.Get("/^:type(issues|pulls)$", reqSignIn, user.Issues)
|
||||
|
||||
// ***** START: User *****
|
||||
m.Group("/user", func() {
|
||||
m.Get("/login", user.SignIn)
|
||||
m.Post("/login", bindIgnErr(form.SignIn{}), user.SignInPost)
|
||||
m.Get("/sign_up", user.SignUp)
|
||||
m.Post("/sign_up", bindIgnErr(form.Register{}), user.SignUpPost)
|
||||
m.Get("/reset_password", user.ResetPasswd)
|
||||
m.Post("/reset_password", user.ResetPasswdPost)
|
||||
}, reqSignOut)
|
||||
|
||||
m.Group("/user/settings", func() {
|
||||
m.Get("", user.Settings)
|
||||
m.Post("", bindIgnErr(form.UpdateProfile{}), user.SettingsPost)
|
||||
m.Combo("/avatar").Get(user.SettingsAvatar).
|
||||
Post(binding.MultipartForm(form.Avatar{}), user.SettingsAvatarPost)
|
||||
m.Post("/avatar/delete", user.SettingsDeleteAvatar)
|
||||
m.Combo("/email").Get(user.SettingsEmails).
|
||||
Post(bindIgnErr(form.AddEmail{}), user.SettingsEmailPost)
|
||||
m.Post("/email/delete", user.DeleteEmail)
|
||||
m.Get("/password", user.SettingsPassword)
|
||||
m.Post("/password", bindIgnErr(form.ChangePassword{}), user.SettingsPasswordPost)
|
||||
m.Combo("/ssh").Get(user.SettingsSSHKeys).
|
||||
Post(bindIgnErr(form.AddSSHKey{}), user.SettingsSSHKeysPost)
|
||||
m.Post("/ssh/delete", user.DeleteSSHKey)
|
||||
m.Group("/repositories", func() {
|
||||
m.Get("", user.SettingsRepos)
|
||||
m.Post("/leave", user.SettingsLeaveRepo)
|
||||
})
|
||||
m.Group("/organizations", func() {
|
||||
m.Get("", user.SettingsOrganizations)
|
||||
m.Post("/leave", user.SettingsLeaveOrganization)
|
||||
})
|
||||
m.Combo("/applications").Get(user.SettingsApplications).
|
||||
Post(bindIgnErr(form.NewAccessToken{}), user.SettingsApplicationsPost)
|
||||
m.Post("/applications/delete", user.SettingsDeleteApplication)
|
||||
m.Route("/delete", "GET,POST", user.SettingsDelete)
|
||||
}, reqSignIn, func(ctx *context.Context) {
|
||||
ctx.Data["PageIsUserSettings"] = true
|
||||
})
|
||||
|
||||
m.Group("/user", func() {
|
||||
m.Any("/activate", user.Activate)
|
||||
m.Any("/activate_email", user.ActivateEmail)
|
||||
m.Get("/email2user", user.Email2User)
|
||||
m.Get("/forget_password", user.ForgotPasswd)
|
||||
m.Post("/forget_password", user.ForgotPasswdPost)
|
||||
m.Get("/logout", user.SignOut)
|
||||
})
|
||||
// ***** END: User *****
|
||||
|
||||
adminReq := context.Toggle(&context.ToggleOptions{SignInRequired: true, AdminRequired: true})
|
||||
|
||||
// ***** START: Admin *****
|
||||
m.Group("/admin", func() {
|
||||
m.Get("", adminReq, admin.Dashboard)
|
||||
m.Get("/config", admin.Config)
|
||||
m.Post("/config/test_mail", admin.SendTestMail)
|
||||
m.Get("/monitor", admin.Monitor)
|
||||
|
||||
m.Group("/users", func() {
|
||||
m.Get("", admin.Users)
|
||||
m.Combo("/new").Get(admin.NewUser).Post(bindIgnErr(form.AdminCrateUser{}), admin.NewUserPost)
|
||||
m.Combo("/:userid").Get(admin.EditUser).Post(bindIgnErr(form.AdminEditUser{}), admin.EditUserPost)
|
||||
m.Post("/:userid/delete", admin.DeleteUser)
|
||||
})
|
||||
|
||||
m.Group("/orgs", func() {
|
||||
m.Get("", admin.Organizations)
|
||||
})
|
||||
|
||||
m.Group("/repos", func() {
|
||||
m.Get("", admin.Repos)
|
||||
m.Post("/delete", admin.DeleteRepo)
|
||||
})
|
||||
|
||||
m.Group("/auths", func() {
|
||||
m.Get("", admin.Authentications)
|
||||
m.Combo("/new").Get(admin.NewAuthSource).Post(bindIgnErr(form.Authentication{}), admin.NewAuthSourcePost)
|
||||
m.Combo("/:authid").Get(admin.EditAuthSource).
|
||||
Post(bindIgnErr(form.Authentication{}), admin.EditAuthSourcePost)
|
||||
m.Post("/:authid/delete", admin.DeleteAuthSource)
|
||||
})
|
||||
|
||||
m.Group("/notices", func() {
|
||||
m.Get("", admin.Notices)
|
||||
m.Post("/delete", admin.DeleteNotices)
|
||||
m.Get("/empty", admin.EmptyNotices)
|
||||
})
|
||||
}, adminReq)
|
||||
// ***** END: Admin *****
|
||||
|
||||
m.Group("", func() {
|
||||
m.Group("/:username", func() {
|
||||
m.Get("", user.Profile)
|
||||
m.Get("/followers", user.Followers)
|
||||
m.Get("/following", user.Following)
|
||||
m.Get("/stars", user.Stars)
|
||||
})
|
||||
|
||||
m.Get("/attachments/:uuid", func(ctx *context.Context) {
|
||||
attach, err := models.GetAttachmentByUUID(ctx.Params(":uuid"))
|
||||
if err != nil {
|
||||
ctx.NotFoundOrServerError("GetAttachmentByUUID", models.IsErrAttachmentNotExist, err)
|
||||
return
|
||||
} else if !com.IsFile(attach.LocalPath()) {
|
||||
ctx.NotFound()
|
||||
return
|
||||
}
|
||||
|
||||
fr, err := os.Open(attach.LocalPath())
|
||||
if err != nil {
|
||||
ctx.Handle(500, "Open", err)
|
||||
return
|
||||
}
|
||||
defer fr.Close()
|
||||
|
||||
ctx.Header().Set("Cache-Control", "public,max-age=86400")
|
||||
fmt.Println("attach.Name:", attach.Name)
|
||||
ctx.Header().Set("Content-Disposition", fmt.Sprintf(`inline; filename="%s"`, attach.Name))
|
||||
if err = repo.ServeData(ctx, attach.Name, fr); err != nil {
|
||||
ctx.Handle(500, "ServeData", err)
|
||||
return
|
||||
}
|
||||
})
|
||||
m.Post("/issues/attachments", repo.UploadIssueAttachment)
|
||||
m.Post("/releases/attachments", repo.UploadReleaseAttachment)
|
||||
}, ignSignIn)
|
||||
|
||||
m.Group("/:username", func() {
|
||||
m.Get("/action/:action", user.Action)
|
||||
}, reqSignIn)
|
||||
|
||||
if macaron.Env == macaron.DEV {
|
||||
m.Get("/template/*", dev.TemplatePreview)
|
||||
}
|
||||
|
||||
reqRepoAdmin := context.RequireRepoAdmin()
|
||||
reqRepoWriter := context.RequireRepoWriter()
|
||||
|
||||
// ***** START: Organization *****
|
||||
m.Group("/org", func() {
|
||||
m.Group("", func() {
|
||||
m.Get("/create", org.Create)
|
||||
m.Post("/create", bindIgnErr(form.CreateOrg{}), org.CreatePost)
|
||||
}, func(ctx *context.Context) {
|
||||
if !ctx.User.CanCreateOrganization() {
|
||||
ctx.NotFound()
|
||||
}
|
||||
})
|
||||
|
||||
m.Group("/:org", func() {
|
||||
m.Get("/dashboard", user.Dashboard)
|
||||
m.Get("/^:type(issues|pulls)$", user.Issues)
|
||||
m.Get("/members", org.Members)
|
||||
m.Get("/members/action/:action", org.MembersAction)
|
||||
|
||||
m.Get("/teams", org.Teams)
|
||||
}, context.OrgAssignment(true))
|
||||
|
||||
m.Group("/:org", func() {
|
||||
m.Get("/teams/:team", org.TeamMembers)
|
||||
m.Get("/teams/:team/repositories", org.TeamRepositories)
|
||||
m.Route("/teams/:team/action/:action", "GET,POST", org.TeamsAction)
|
||||
m.Route("/teams/:team/action/repo/:action", "GET,POST", org.TeamsRepoAction)
|
||||
}, context.OrgAssignment(true, false, true))
|
||||
|
||||
m.Group("/:org", func() {
|
||||
m.Get("/teams/new", org.NewTeam)
|
||||
m.Post("/teams/new", bindIgnErr(form.CreateTeam{}), org.NewTeamPost)
|
||||
m.Get("/teams/:team/edit", org.EditTeam)
|
||||
m.Post("/teams/:team/edit", bindIgnErr(form.CreateTeam{}), org.EditTeamPost)
|
||||
m.Post("/teams/:team/delete", org.DeleteTeam)
|
||||
|
||||
m.Group("/settings", func() {
|
||||
m.Combo("").Get(org.Settings).
|
||||
Post(bindIgnErr(form.UpdateOrgSetting{}), org.SettingsPost)
|
||||
m.Post("/avatar", binding.MultipartForm(form.Avatar{}), org.SettingsAvatar)
|
||||
m.Post("/avatar/delete", org.SettingsDeleteAvatar)
|
||||
|
||||
m.Group("/hooks", func() {
|
||||
m.Get("", org.Webhooks)
|
||||
m.Post("/delete", org.DeleteWebhook)
|
||||
m.Get("/:type/new", repo.WebhooksNew)
|
||||
m.Post("/gogs/new", bindIgnErr(form.NewWebhook{}), repo.WebHooksNewPost)
|
||||
m.Post("/slack/new", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksNewPost)
|
||||
m.Post("/discord/new", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksNewPost)
|
||||
m.Get("/:id", repo.WebHooksEdit)
|
||||
m.Post("/gogs/:id", bindIgnErr(form.NewWebhook{}), repo.WebHooksEditPost)
|
||||
m.Post("/slack/:id", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksEditPost)
|
||||
m.Post("/discord/:id", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksEditPost)
|
||||
})
|
||||
|
||||
m.Route("/delete", "GET,POST", org.SettingsDelete)
|
||||
})
|
||||
|
||||
m.Route("/invitations/new", "GET,POST", org.Invitation)
|
||||
}, context.OrgAssignment(true, true))
|
||||
}, reqSignIn)
|
||||
// ***** END: Organization *****
|
||||
|
||||
// ***** START: Repository *****
|
||||
m.Group("/repo", func() {
|
||||
m.Get("/create", repo.Create)
|
||||
m.Post("/create", bindIgnErr(form.CreateRepo{}), repo.CreatePost)
|
||||
m.Get("/migrate", repo.Migrate)
|
||||
m.Post("/migrate", bindIgnErr(form.MigrateRepo{}), repo.MigratePost)
|
||||
m.Combo("/fork/:repoid").Get(repo.Fork).
|
||||
Post(bindIgnErr(form.CreateRepo{}), repo.ForkPost)
|
||||
}, reqSignIn)
|
||||
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Group("/settings", func() {
|
||||
m.Combo("").Get(repo.Settings).
|
||||
Post(bindIgnErr(form.RepoSetting{}), repo.SettingsPost)
|
||||
m.Group("/collaboration", func() {
|
||||
m.Combo("").Get(repo.SettingsCollaboration).Post(repo.SettingsCollaborationPost)
|
||||
m.Post("/access_mode", repo.ChangeCollaborationAccessMode)
|
||||
m.Post("/delete", repo.DeleteCollaboration)
|
||||
})
|
||||
m.Group("/branches", func() {
|
||||
m.Get("", repo.SettingsBranches)
|
||||
m.Post("/default_branch", repo.UpdateDefaultBranch)
|
||||
m.Combo("/*").Get(repo.SettingsProtectedBranch).
|
||||
Post(bindIgnErr(form.ProtectBranch{}), repo.SettingsProtectedBranchPost)
|
||||
}, func(ctx *context.Context) {
|
||||
if ctx.Repo.Repository.IsMirror {
|
||||
ctx.NotFound()
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
m.Group("/hooks", func() {
|
||||
m.Get("", repo.Webhooks)
|
||||
m.Post("/delete", repo.DeleteWebhook)
|
||||
m.Get("/:type/new", repo.WebhooksNew)
|
||||
m.Post("/gogs/new", bindIgnErr(form.NewWebhook{}), repo.WebHooksNewPost)
|
||||
m.Post("/slack/new", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksNewPost)
|
||||
m.Post("/discord/new", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksNewPost)
|
||||
m.Post("/gogs/:id", bindIgnErr(form.NewWebhook{}), repo.WebHooksEditPost)
|
||||
m.Post("/slack/:id", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksEditPost)
|
||||
m.Post("/discord/:id", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksEditPost)
|
||||
|
||||
m.Group("/:id", func() {
|
||||
m.Get("", repo.WebHooksEdit)
|
||||
m.Post("/test", repo.TestWebhook)
|
||||
m.Post("/redelivery", repo.RedeliveryWebhook)
|
||||
})
|
||||
|
||||
m.Group("/git", func() {
|
||||
m.Get("", repo.SettingsGitHooks)
|
||||
m.Combo("/:name").Get(repo.SettingsGitHooksEdit).
|
||||
Post(repo.SettingsGitHooksEditPost)
|
||||
}, context.GitHookService())
|
||||
})
|
||||
|
||||
m.Group("/keys", func() {
|
||||
m.Combo("").Get(repo.SettingsDeployKeys).
|
||||
Post(bindIgnErr(form.AddSSHKey{}), repo.SettingsDeployKeysPost)
|
||||
m.Post("/delete", repo.DeleteDeployKey)
|
||||
})
|
||||
|
||||
}, func(ctx *context.Context) {
|
||||
ctx.Data["PageIsSettings"] = true
|
||||
})
|
||||
}, reqSignIn, context.RepoAssignment(), reqRepoAdmin, context.RepoRef())
|
||||
|
||||
m.Get("/:username/:reponame/action/:action", reqSignIn, context.RepoAssignment(), repo.Action)
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Get("/issues", repo.RetrieveLabels, repo.Issues)
|
||||
m.Get("/issues/:index", repo.ViewIssue)
|
||||
m.Get("/labels/", repo.RetrieveLabels, repo.Labels)
|
||||
m.Get("/milestones", repo.Milestones)
|
||||
}, ignSignIn, context.RepoAssignment(true))
|
||||
m.Group("/:username/:reponame", func() {
|
||||
// FIXME: should use different URLs but mostly same logic for comments of issue and pull reuqest.
|
||||
// So they can apply their own enable/disable logic on routers.
|
||||
m.Group("/issues", func() {
|
||||
m.Combo("/new", repo.MustEnableIssues).Get(context.RepoRef(), repo.NewIssue).
|
||||
Post(bindIgnErr(form.NewIssue{}), repo.NewIssuePost)
|
||||
|
||||
m.Group("/:index", func() {
|
||||
m.Post("/title", repo.UpdateIssueTitle)
|
||||
m.Post("/content", repo.UpdateIssueContent)
|
||||
m.Combo("/comments").Post(bindIgnErr(form.CreateComment{}), repo.NewComment)
|
||||
})
|
||||
})
|
||||
m.Group("/comments/:id", func() {
|
||||
m.Post("", repo.UpdateCommentContent)
|
||||
m.Post("/delete", repo.DeleteComment)
|
||||
})
|
||||
}, reqSignIn, context.RepoAssignment(true))
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Group("/wiki", func() {
|
||||
m.Get("/?:page", repo.Wiki)
|
||||
m.Get("/_pages", repo.WikiPages)
|
||||
}, repo.MustEnableWiki, context.RepoRef())
|
||||
}, ignSignIn, context.RepoAssignment(false, true))
|
||||
|
||||
m.Group("/:username/:reponame", func() {
|
||||
// FIXME: should use different URLs but mostly same logic for comments of issue and pull reuqest.
|
||||
// So they can apply their own enable/disable logic on routers.
|
||||
m.Group("/issues", func() {
|
||||
m.Group("/:index", func() {
|
||||
m.Post("/label", repo.UpdateIssueLabel)
|
||||
m.Post("/milestone", repo.UpdateIssueMilestone)
|
||||
m.Post("/assignee", repo.UpdateIssueAssignee)
|
||||
}, reqRepoWriter)
|
||||
})
|
||||
m.Group("/labels", func() {
|
||||
m.Post("/new", bindIgnErr(form.CreateLabel{}), repo.NewLabel)
|
||||
m.Post("/edit", bindIgnErr(form.CreateLabel{}), repo.UpdateLabel)
|
||||
m.Post("/delete", repo.DeleteLabel)
|
||||
m.Post("/initialize", bindIgnErr(form.InitializeLabels{}), repo.InitializeLabels)
|
||||
}, reqRepoWriter, context.RepoRef())
|
||||
m.Group("/milestones", func() {
|
||||
m.Combo("/new").Get(repo.NewMilestone).
|
||||
Post(bindIgnErr(form.CreateMilestone{}), repo.NewMilestonePost)
|
||||
m.Get("/:id/edit", repo.EditMilestone)
|
||||
m.Post("/:id/edit", bindIgnErr(form.CreateMilestone{}), repo.EditMilestonePost)
|
||||
m.Get("/:id/:action", repo.ChangeMilestonStatus)
|
||||
m.Post("/delete", repo.DeleteMilestone)
|
||||
}, reqRepoWriter, context.RepoRef())
|
||||
|
||||
m.Group("/releases", func() {
|
||||
m.Get("/new", repo.NewRelease)
|
||||
m.Post("/new", bindIgnErr(form.NewRelease{}), repo.NewReleasePost)
|
||||
m.Post("/delete", repo.DeleteRelease)
|
||||
m.Get("/edit/*", repo.EditRelease)
|
||||
m.Post("/edit/*", bindIgnErr(form.EditRelease{}), repo.EditReleasePost)
|
||||
}, repo.MustBeNotBare, reqRepoWriter, func(ctx *context.Context) {
|
||||
ctx.Data["PageIsViewFiles"] = true
|
||||
})
|
||||
|
||||
// FIXME: Should use ctx.Repo.PullRequest to unify template, currently we have inconsistent URL
|
||||
// for PR in same repository. After select branch on the page, the URL contains redundant head user name.
|
||||
// e.g. /org1/test-repo/compare/master...org1:develop
|
||||
// which should be /org1/test-repo/compare/master...develop
|
||||
m.Combo("/compare/*", repo.MustAllowPulls).Get(repo.CompareAndPullRequest).
|
||||
Post(bindIgnErr(form.NewIssue{}), repo.CompareAndPullRequestPost)
|
||||
|
||||
m.Group("", func() {
|
||||
m.Combo("/_edit/*").Get(repo.EditFile).
|
||||
Post(bindIgnErr(form.EditRepoFile{}), repo.EditFilePost)
|
||||
m.Combo("/_new/*").Get(repo.NewFile).
|
||||
Post(bindIgnErr(form.EditRepoFile{}), repo.NewFilePost)
|
||||
m.Post("/_preview/*", bindIgnErr(form.EditPreviewDiff{}), repo.DiffPreviewPost)
|
||||
m.Combo("/_delete/*").Get(repo.DeleteFile).
|
||||
Post(bindIgnErr(form.DeleteRepoFile{}), repo.DeleteFilePost)
|
||||
|
||||
m.Group("", func() {
|
||||
m.Combo("/_upload/*").Get(repo.UploadFile).
|
||||
Post(bindIgnErr(form.UploadRepoFile{}), repo.UploadFilePost)
|
||||
m.Post("/upload-file", repo.UploadFileToServer)
|
||||
m.Post("/upload-remove", bindIgnErr(form.RemoveUploadFile{}), repo.RemoveUploadFileFromServer)
|
||||
}, func(ctx *context.Context) {
|
||||
if !setting.Repository.Upload.Enabled {
|
||||
ctx.NotFound()
|
||||
return
|
||||
}
|
||||
})
|
||||
}, repo.MustBeNotBare, reqRepoWriter, context.RepoRef(), func(ctx *context.Context) {
|
||||
if !ctx.Repo.CanEnableEditor() {
|
||||
ctx.NotFound()
|
||||
return
|
||||
}
|
||||
|
||||
ctx.Data["PageIsViewFiles"] = true
|
||||
})
|
||||
}, reqSignIn, context.RepoAssignment())
|
||||
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Group("", func() {
|
||||
m.Get("/releases", repo.MustBeNotBare, repo.Releases)
|
||||
m.Get("/pulls", repo.RetrieveLabels, repo.Pulls)
|
||||
m.Get("/pulls/:index", repo.ViewPull)
|
||||
}, context.RepoRef())
|
||||
|
||||
m.Group("/branches", func() {
|
||||
m.Get("", repo.Branches)
|
||||
m.Get("/all", repo.AllBranches)
|
||||
m.Post("/delete/*", reqSignIn, reqRepoWriter, repo.DeleteBranchPost)
|
||||
}, repo.MustBeNotBare, func(ctx *context.Context) {
|
||||
ctx.Data["PageIsViewFiles"] = true
|
||||
})
|
||||
|
||||
m.Group("/wiki", func() {
|
||||
m.Group("", func() {
|
||||
m.Combo("/_new").Get(repo.NewWiki).
|
||||
Post(bindIgnErr(form.NewWiki{}), repo.NewWikiPost)
|
||||
m.Combo("/:page/_edit").Get(repo.EditWiki).
|
||||
Post(bindIgnErr(form.NewWiki{}), repo.EditWikiPost)
|
||||
m.Post("/:page/delete", repo.DeleteWikiPagePost)
|
||||
}, reqSignIn, reqRepoWriter)
|
||||
}, repo.MustEnableWiki, context.RepoRef())
|
||||
|
||||
m.Get("/archive/*", repo.MustBeNotBare, repo.Download)
|
||||
|
||||
m.Group("/pulls/:index", func() {
|
||||
m.Get("/commits", context.RepoRef(), repo.ViewPullCommits)
|
||||
m.Get("/files", context.RepoRef(), repo.ViewPullFiles)
|
||||
m.Post("/merge", reqRepoWriter, repo.MergePullRequest)
|
||||
}, repo.MustAllowPulls)
|
||||
|
||||
m.Group("", func() {
|
||||
m.Get("/src/*", repo.Home)
|
||||
m.Get("/raw/*", repo.SingleDownload)
|
||||
m.Get("/commits/*", repo.RefCommits)
|
||||
m.Get("/commit/:sha([a-f0-9]{7,40})$", repo.Diff)
|
||||
m.Get("/forks", repo.Forks)
|
||||
}, repo.MustBeNotBare, context.RepoRef())
|
||||
m.Get("/commit/:sha([a-f0-9]{7,40})\\.:ext(patch|diff)", repo.MustBeNotBare, repo.RawDiff)
|
||||
|
||||
m.Get("/compare/:before([a-z0-9]{40})\\.\\.\\.:after([a-z0-9]{40})", repo.MustBeNotBare, context.RepoRef(), repo.CompareDiff)
|
||||
}, ignSignIn, context.RepoAssignment())
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Get("/stars", repo.Stars)
|
||||
m.Get("/watchers", repo.Watchers)
|
||||
}, ignSignIn, context.RepoAssignment(), context.RepoRef())
|
||||
|
||||
m.Group("/:username", func() {
|
||||
m.Get("/:reponame", ignSignIn, context.RepoAssignment(), context.RepoRef(), repo.Home)
|
||||
|
||||
m.Group("/:reponame", func() {
|
||||
m.Head("/tasks/trigger", repo.TriggerTask)
|
||||
})
|
||||
// Use the regexp to match the repository name
|
||||
// Duplicated routes to enable different ways of accessing same set of URLs,
|
||||
// e.g. with or without ".git" suffix.
|
||||
m.Group("/:reponame([\\d\\w-_\\.]+\\.git$)", func() {
|
||||
m.Get("", ignSignIn, context.RepoAssignment(), context.RepoRef(), repo.Home)
|
||||
m.Route("/*", "GET,POST", ignSignInAndCsrf, repo.HTTPContexter(), repo.HTTP)
|
||||
})
|
||||
m.Route("/:reponame/*", "GET,POST", ignSignInAndCsrf, repo.HTTPContexter(), repo.HTTP)
|
||||
})
|
||||
// ***** END: Repository *****
|
||||
|
||||
m.Group("/api", func() {
|
||||
apiv1.RegisterRoutes(m)
|
||||
}, ignSignIn)
|
||||
|
||||
// robots.txt
|
||||
m.Get("/robots.txt", func(ctx *context.Context) {
|
||||
if setting.HasRobotsTxt {
|
||||
ctx.ServeFileContent(path.Join(setting.CustomPath, "robots.txt"))
|
||||
} else {
|
||||
ctx.Error(404)
|
||||
}
|
||||
})
|
||||
|
||||
// Not found handler.
|
||||
m.NotFound(routers.NotFound)
|
||||
|
||||
// Flag for port number in case first time run conflict.
|
||||
if ctx.IsSet("port") {
|
||||
setting.AppUrl = strings.Replace(setting.AppUrl, setting.HTTPPort, ctx.String("port"), 1)
|
||||
setting.HTTPPort = ctx.String("port")
|
||||
}
|
||||
|
||||
var listenAddr string
|
||||
if setting.Protocol == setting.SCHEME_UNIX_SOCKET {
|
||||
listenAddr = fmt.Sprintf("%s", setting.HTTPAddr)
|
||||
} else {
|
||||
listenAddr = fmt.Sprintf("%s:%s", setting.HTTPAddr, setting.HTTPPort)
|
||||
}
|
||||
log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubUrl)
|
||||
|
||||
var err error
|
||||
switch setting.Protocol {
|
||||
case setting.SCHEME_HTTP:
|
||||
err = http.ListenAndServe(listenAddr, m)
|
||||
case setting.SCHEME_HTTPS:
|
||||
server := &http.Server{Addr: listenAddr, TLSConfig: &tls.Config{
|
||||
MinVersion: tls.VersionTLS10,
|
||||
CurvePreferences: []tls.CurveID{tls.CurveP521, tls.CurveP384, tls.CurveP256},
|
||||
PreferServerCipherSuites: true,
|
||||
CipherSuites: []uint16{
|
||||
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
|
||||
tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, // Required for HTTP/2 support.
|
||||
tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
|
||||
tls.TLS_RSA_WITH_AES_256_CBC_SHA,
|
||||
},
|
||||
}, Handler: m}
|
||||
err = server.ListenAndServeTLS(setting.CertFile, setting.KeyFile)
|
||||
case setting.SCHEME_FCGI:
|
||||
err = fcgi.Serve(nil, m)
|
||||
case setting.SCHEME_UNIX_SOCKET:
|
||||
os.Remove(listenAddr)
|
||||
|
||||
var listener *net.UnixListener
|
||||
listener, err = net.ListenUnix("unix", &net.UnixAddr{listenAddr, "unix"})
|
||||
if err != nil {
|
||||
break // Handle error after switch
|
||||
}
|
||||
|
||||
// FIXME: add proper implementation of signal capture on all protocols
|
||||
// execute this on SIGTERM or SIGINT: listener.Close()
|
||||
if err = os.Chmod(listenAddr, os.FileMode(setting.UnixSocketPermission)); err != nil {
|
||||
log.Fatal(4, "Failed to set permission of unix socket: %v", err)
|
||||
}
|
||||
err = http.Serve(listener, m)
|
||||
default:
|
||||
log.Fatal(4, "Invalid protocol: %s", setting.Protocol)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(4, "Fail to start server: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
Execute following command in ROOT directory when anything is changed:
|
||||
|
||||
$ make bindata
|
||||
693
conf/app.ini
693
conf/app.ini
@@ -2,51 +2,26 @@
|
||||
# !!! PLEASE MAKE CHANGES ON CORRESPONDING CUSTOM CONFIG FILE !!!
|
||||
# !!! IF YOU ARE PACKAGING PROVIDER, PLEASE MAKE OWN COPY OF IT !!!
|
||||
|
||||
; App name that shows on every page title
|
||||
APP_NAME = Gogs
|
||||
; The name of the system user that runs Gogs
|
||||
; The brand name of the application, can be your company or team name.
|
||||
BRAND_NAME = Gogs
|
||||
; The system user who should be running the applications. It has no effect on Windows,
|
||||
; otherwise, it should match the value of $USER environment variable.
|
||||
RUN_USER = git
|
||||
; Either "dev", "prod" or "test"
|
||||
; The running mode of the application, can be either "dev", "prod" or "test".
|
||||
RUN_MODE = dev
|
||||
|
||||
[server]
|
||||
PROTOCOL = http
|
||||
; The public-facing URL for the application.
|
||||
EXTERNAL_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
|
||||
; The public-facing domain name for the application.
|
||||
DOMAIN = localhost
|
||||
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
|
||||
; The protocol that is used to serve direct traffic to the application.
|
||||
; Currently supports "http", "https", "fcgi" and "unix".
|
||||
PROTOCOL = http
|
||||
; The address to be listened by the application.
|
||||
HTTP_ADDR = 0.0.0.0
|
||||
; The port number to be listened by the application.
|
||||
HTTP_PORT = 3000
|
||||
; Permission for unix socket
|
||||
UNIX_SOCKET_PERMISSION = 666
|
||||
; Local (DMZ) URL for Gogs workers (such as SSH update) accessing web service.
|
||||
; In most cases you do not need to change the default value.
|
||||
; Alter it only if your SSH server node is not the same as HTTP node.
|
||||
LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/
|
||||
; Disable SSH feature when not available
|
||||
DISABLE_SSH = false
|
||||
; Whether use builtin SSH server or not.
|
||||
START_SSH_SERVER = false
|
||||
; Domain name to be exposed in SSH clone URL
|
||||
SSH_DOMAIN = %(DOMAIN)s
|
||||
; Port number to be exposed in SSH clone URL
|
||||
SSH_PORT = 22
|
||||
; Network interface builtin SSH server listens on
|
||||
SSH_LISTEN_HOST = 0.0.0.0
|
||||
; Port number builtin SSH server listens on
|
||||
SSH_LISTEN_PORT = %(SSH_PORT)s
|
||||
; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'.
|
||||
SSH_ROOT_PATH =
|
||||
; Choose the ciphers to support for SSH connections
|
||||
SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128
|
||||
; Directory to create temporary files when test publick key using ssh-keygen,
|
||||
; default is system temporary directory.
|
||||
SSH_KEY_TEST_PATH =
|
||||
; Path to ssh-keygen, default is 'ssh-keygen' and let shell find out which one to call.
|
||||
SSH_KEYGEN_PATH = ssh-keygen
|
||||
; Indicate whether to check minimum key size with corresponding type
|
||||
MINIMUM_KEY_SIZE_CHECK = false
|
||||
; Disable CDN even in "prod" mode
|
||||
OFFLINE_MODE = false
|
||||
DISABLE_ROUTER_LOG = false
|
||||
; Generate steps:
|
||||
; $ ./gogs cert -ca=true -duration=8760h0m0s -host=myhost.example.com
|
||||
;
|
||||
@@ -56,264 +31,334 @@ DISABLE_ROUTER_LOG = false
|
||||
; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes
|
||||
CERT_FILE = custom/https/cert.pem
|
||||
KEY_FILE = custom/https/key.pem
|
||||
; Upper level of template and static file path
|
||||
; default is the path where Gogs is executed
|
||||
STATIC_ROOT_PATH =
|
||||
; Default path for App data
|
||||
APP_DATA_PATH = data
|
||||
; Application level GZIP support
|
||||
; The minimum allowed TLS version, currently supports "TLS10", "TLS11", "TLS12", and "TLS13".
|
||||
TLS_MIN_VERSION = TLS12
|
||||
; File permission when serve traffic via Unix domain socket.
|
||||
UNIX_SOCKET_PERMISSION = 666
|
||||
; Local (DMZ) URL for workers (e.g. SSH update) accessing web service.
|
||||
; In most cases you do not need to change the default value.
|
||||
; Alter it only if your SSH server node is not the same as HTTP node.
|
||||
LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/
|
||||
|
||||
; Whether to disable using CDN for static files regardless.
|
||||
OFFLINE_MODE = false
|
||||
; Whether to disable logging in router.
|
||||
DISABLE_ROUTER_LOG = true
|
||||
; Whether to enable application level GZIP compression.
|
||||
ENABLE_GZIP = false
|
||||
; Landing page for non-logged users, can be "home" or "explore"
|
||||
LANDING_PAGE = home
|
||||
|
||||
[repository]
|
||||
; Root path for storing repositories's data, default is "~/<username>/gogs-repositories"
|
||||
ROOT =
|
||||
; The script type server supports, sometimes could be "sh"
|
||||
SCRIPT_TYPE = bash
|
||||
; Default ANSI charset for an unrecognized charset
|
||||
ANSI_CHARSET =
|
||||
; Force every new repository to be private
|
||||
FORCE_PRIVATE = false
|
||||
; Global maximum creation limit of repository per user, -1 means no limit
|
||||
MAX_CREATION_LIMIT = -1
|
||||
; Mirror sync queue length, increase if mirror syncing starts hanging
|
||||
MIRROR_QUEUE_LENGTH = 1000
|
||||
; Patch test queue length, increase if pull request patch testing starts hanging
|
||||
PULL_REQUEST_QUEUE_LENGTH = 1000
|
||||
; Preferred Licenses to place at the top of the list
|
||||
; Name must match file name in conf/license or custom/conf/license
|
||||
PREFERRED_LICENSES = Apache License 2.0,MIT License
|
||||
; Disable ability to interact with repositories by HTTP protocol
|
||||
DISABLE_HTTP_GIT = false
|
||||
; Enable ability to migrate repository by local path
|
||||
ENABLE_LOCAL_PATH_MIGRATION = false
|
||||
; Concurrency is used to retrieve commits information. This variable define
|
||||
; the maximum number of tasks that can be run at the same time. Usually, the
|
||||
; value depend of how many CPUs (cores) you have. If the value is set to zero
|
||||
; or under, GOGS will automatically detect the number of CPUs your system have
|
||||
COMMITS_FETCH_CONCURRENCY = 0
|
||||
; Enable render mode for raw file
|
||||
ENABLE_RAW_FILE_RENDER_MODE = false
|
||||
; The path for storing application specific data.
|
||||
APP_DATA_PATH = data
|
||||
; Whether to enable to load assets (i.e. "conf", "templates", "public") from disk instead of embedded bindata.
|
||||
LOAD_ASSETS_FROM_DISK = false
|
||||
|
||||
[repository.editor]
|
||||
; List of file extensions that should have line wraps in the CodeMirror editor.
|
||||
; Separate extensions with a comma. To line wrap files without extension, just put a comma
|
||||
LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd,
|
||||
; Valid file modes that have a preview API associated with them, such as api/v1/markdown.
|
||||
; Separate values by commas. Preview tab in edit mode won't show if the file extension doesn't match
|
||||
PREVIEWABLE_FILE_MODES = markdown
|
||||
; The landing page URL for anonymous users, the value should not include
|
||||
; subpath that is handled by the reverse proxy.
|
||||
LANDING_URL = /
|
||||
|
||||
[repository.upload]
|
||||
; Enable repository file uploads.
|
||||
ENABLED = true
|
||||
; Path to temporarily store uploads (default path gets cleaned by Gogs in every start)
|
||||
TEMP_PATH = data/tmp/uploads
|
||||
; File types that are allowed to be uploaded, e.g. image/jpeg|image/png. Leave empty means allow any file type
|
||||
ALLOWED_TYPES =
|
||||
; Maximum size of each file in MB
|
||||
FILE_MAX_SIZE = 3
|
||||
; Maximum number of files per upload
|
||||
MAX_FILES = 5
|
||||
; Whether to disable SSH access to the application entirely.
|
||||
DISABLE_SSH = false
|
||||
; The domain name to be exposed in SSH clone URL.
|
||||
SSH_DOMAIN = %(DOMAIN)s
|
||||
; The port number to be exposed in SSH clone URL.
|
||||
SSH_PORT = 22
|
||||
; The path of SSH root directory, default is "$HOME/.ssh".
|
||||
SSH_ROOT_PATH =
|
||||
; The path to ssh-keygen, default is "ssh-keygen" and let shell find out which one to call.
|
||||
SSH_KEYGEN_PATH = ssh-keygen
|
||||
; The directory to create temporary files when test a public key using ssh-keygen,
|
||||
; default is the system temporary directory.
|
||||
SSH_KEY_TEST_PATH =
|
||||
; Whether to check minimum public key size with corresponding type.
|
||||
MINIMUM_KEY_SIZE_CHECK = false
|
||||
; Whether to rewrite "~/.ssh/authorized_keys" file at start, ignored when use builtin SSH server.
|
||||
REWRITE_AUTHORIZED_KEYS_AT_START = false
|
||||
; Whether to start a builtin SSH server.
|
||||
START_SSH_SERVER = false
|
||||
; The network interface for builtin SSH server to listen on.
|
||||
SSH_LISTEN_HOST = 0.0.0.0
|
||||
; The port number for builtin SSH server to listen on.
|
||||
SSH_LISTEN_PORT = %(SSH_PORT)s
|
||||
; The list of accepted ciphers for connections to builtin SSH server.
|
||||
SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128
|
||||
; The list of accepted MACs for connections to builtin SSH server.
|
||||
SSH_SERVER_MACS = hmac-sha2-256-etm@openssh.com, hmac-sha2-256, hmac-sha1
|
||||
; The list of accepted key exchange algorithms for connections to builtin SSH server.
|
||||
SSH_SERVER_ALGORITHMS = rsa, ecdsa, ed25519
|
||||
|
||||
; Attachment settings for releases
|
||||
[release.attachment]
|
||||
; Whether attachments are enabled. Defaults to `true`
|
||||
ENABLED = true
|
||||
; Path for attachments. Defaults to `data/attachments`
|
||||
PATH = data/attachments
|
||||
; One or more allowed types, e.g. image/jpeg|image/png
|
||||
ALLOWED_TYPES = */*
|
||||
; Max size of each file. Defaults to 32MB
|
||||
MAX_SIZE = 32
|
||||
; Max number of files per upload. Defaults to 10
|
||||
MAX_FILES = 10
|
||||
|
||||
[markdown]
|
||||
; Enable hard line break extension
|
||||
ENABLE_HARD_LINE_BREAK = false
|
||||
; List of custom URL-Schemes that are allowed as links when rendering Markdown
|
||||
; for example git,magnet
|
||||
CUSTOM_URL_SCHEMES =
|
||||
; List of file extensions that should be rendered/edited as Markdown
|
||||
; Separate extensions with a comma. To render files w/o extension as markdown, just put a comma
|
||||
FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd
|
||||
|
||||
[smartypants]
|
||||
ENABLED = false
|
||||
FRACTIONS = true
|
||||
DASHES = true
|
||||
LATEX_DASHES = true
|
||||
ANGLED_QUOTES = true
|
||||
|
||||
[http]
|
||||
; Value for Access-Control-Allow-Origin header, default is not to present
|
||||
ACCESS_CONTROL_ALLOW_ORIGIN =
|
||||
|
||||
; Define allowed algorithms and their minimum key length (use -1 to disable a type)
|
||||
; Define allowed algorithms and their minimum key length (use -1 to disable a type).
|
||||
[ssh.minimum_key_sizes]
|
||||
ED25519 = 256
|
||||
ECDSA = 256
|
||||
RSA = 2048
|
||||
DSA = 1024
|
||||
|
||||
[database]
|
||||
; Either "mysql", "postgres" or "sqlite3", you can connect to TiDB with MySQL protocol
|
||||
DB_TYPE = mysql
|
||||
HOST = 127.0.0.1:3306
|
||||
NAME = gogs
|
||||
USER = root
|
||||
PASSWD =
|
||||
; For "postgres" only, either "disable", "require" or "verify-full"
|
||||
SSL_MODE = disable
|
||||
; For "sqlite3" and "tidb", use absolute path when you start as service
|
||||
PATH = data/gogs.db
|
||||
[repository]
|
||||
; The root path for storing managed repositories, default is "~/gogs-repositories"
|
||||
ROOT =
|
||||
; The script type server supports, sometimes could be "sh".
|
||||
SCRIPT_TYPE = bash
|
||||
; Default ANSI charset for an unrecognized charset.
|
||||
ANSI_CHARSET =
|
||||
; Whether to force every new repository to be private.
|
||||
FORCE_PRIVATE = false
|
||||
; The global limit of number of repositories a user can create, -1 means no limit.
|
||||
MAX_CREATION_LIMIT = -1
|
||||
; Preferred Licenses to place at the top of the list.
|
||||
; Name must match file name in "conf/license" or "custom/conf/license".
|
||||
PREFERRED_LICENSES = Apache License 2.0, MIT License
|
||||
; Whether to disable Git interaction with repositories via HTTP/HTTPS protocol.
|
||||
DISABLE_HTTP_GIT = false
|
||||
; Whether to enable ability to migrate repository by server local path.
|
||||
ENABLE_LOCAL_PATH_MIGRATION = false
|
||||
; Whether to enable render mode for raw file. There are potential security risks.
|
||||
ENABLE_RAW_FILE_RENDER_MODE = false
|
||||
; The maximum number of goroutines that can be run at the same time for a single
|
||||
; fetch request. Usually, the value depend of how many CPU (cores) you have. If
|
||||
; the value is non-positive, it matches the number of CPUs available to the application.
|
||||
COMMITS_FETCH_CONCURRENCY = 0
|
||||
; Default branch name when creating new repositories.
|
||||
DEFAULT_BRANCH = master
|
||||
|
||||
[admin]
|
||||
; Disable regular (non-admin) users to create organizations
|
||||
DISABLE_REGULAR_ORG_CREATION = false
|
||||
[repository.editor]
|
||||
; List of file extensions that should have line wraps in the CodeMirror editor.
|
||||
; Separate extensions with a comma.
|
||||
LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd
|
||||
; Valid file modes that have a preview API associated with them, such as "/api/v1/markdown".
|
||||
; Separate values by commas. Preview tab in edit mode won't show if the file extension doesn't match.
|
||||
PREVIEWABLE_FILE_MODES = markdown
|
||||
|
||||
[security]
|
||||
INSTALL_LOCK = false
|
||||
; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!!
|
||||
SECRET_KEY = !#@FDEWREWR&*(
|
||||
; Auto-login remember days
|
||||
LOGIN_REMEMBER_DAYS = 7
|
||||
COOKIE_USERNAME = gogs_awesome
|
||||
COOKIE_REMEMBER_NAME = gogs_incredible
|
||||
COOKIE_SECURE = false
|
||||
; Reverse proxy authentication header name of user name
|
||||
REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER
|
||||
; Enable to set cookie to indicate user login status
|
||||
ENABLE_LOGIN_STATUS_COOKIE = false
|
||||
LOGIN_STATUS_COOKIE_NAME = login_status
|
||||
|
||||
[service]
|
||||
ACTIVE_CODE_LIVE_MINUTES = 180
|
||||
RESET_PASSWD_CODE_LIVE_MINUTES = 180
|
||||
; User need to confirm e-mail for registration
|
||||
REGISTER_EMAIL_CONFIRM = false
|
||||
; Does not allow register and admin create account only
|
||||
DISABLE_REGISTRATION = false
|
||||
; User must sign in to view anything.
|
||||
REQUIRE_SIGNIN_VIEW = false
|
||||
; Mail notification
|
||||
ENABLE_NOTIFY_MAIL = false
|
||||
; More detail: https://github.com/gogits/gogs/issues/165
|
||||
ENABLE_REVERSE_PROXY_AUTHENTICATION = false
|
||||
ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false
|
||||
; Enable captcha validation for registration
|
||||
ENABLE_CAPTCHA = true
|
||||
|
||||
[webhook]
|
||||
; Types are enabled for users to use, can be "gogs", "slack", "discord"
|
||||
TYPES = gogs, slack, discord
|
||||
; Hook task queue length, increase if webhook shooting starts hanging
|
||||
QUEUE_LENGTH = 1000
|
||||
; Deliver timeout in seconds
|
||||
DELIVER_TIMEOUT = 5
|
||||
; Allow insecure certification
|
||||
SKIP_TLS_VERIFY = false
|
||||
; Number of history information in each page
|
||||
PAGING_NUM = 10
|
||||
|
||||
[mailer]
|
||||
ENABLED = false
|
||||
; Buffer length of channel, keep it as it is if you don't know what it is.
|
||||
SEND_BUFFER_LEN = 100
|
||||
; Name displayed in mail title
|
||||
SUBJECT = %(APP_NAME)s
|
||||
; Mail server
|
||||
; Gmail: smtp.gmail.com:587
|
||||
; QQ: smtp.qq.com:465
|
||||
; Note, if the port ends with "465", SMTPS will be used. Using STARTTLS on port 587 is recommended per RFC 6409. If the server supports STARTTLS it will always be used.
|
||||
HOST =
|
||||
; Disable HELO operation when hostname are different.
|
||||
DISABLE_HELO =
|
||||
; Custom hostname for HELO operation, default is from system.
|
||||
HELO_HOSTNAME =
|
||||
; Do not verify the certificate of the server. Only use this for self-signed certificates
|
||||
SKIP_VERIFY =
|
||||
; Use client certificate
|
||||
USE_CERTIFICATE = false
|
||||
CERT_FILE = custom/mailer/cert.pem
|
||||
KEY_FILE = custom/mailer/key.pem
|
||||
; Mail from address, RFC 5322. This can be just an email address, or the `"Name" <email@example.com>` format
|
||||
FROM =
|
||||
; Mailer user name and password
|
||||
USER =
|
||||
PASSWD =
|
||||
; Use text/plain as format of content
|
||||
USE_PLAIN_TEXT = false
|
||||
|
||||
[cache]
|
||||
; Either "memory", "redis", or "memcache", default is "memory"
|
||||
ADAPTER = memory
|
||||
; For "memory" only, GC interval in seconds, default is 60
|
||||
INTERVAL = 60
|
||||
; For "redis" and "memcache", connection host address
|
||||
; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
|
||||
; memcache: `127.0.0.1:11211`
|
||||
HOST =
|
||||
|
||||
[session]
|
||||
; Either "memory", "file", or "redis", default is "memory"
|
||||
PROVIDER = memory
|
||||
; Provider config options
|
||||
; memory: not have any config yet
|
||||
; file: session file path, e.g. `data/sessions`
|
||||
; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
|
||||
; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table`
|
||||
PROVIDER_CONFIG = data/sessions
|
||||
; Session cookie name
|
||||
COOKIE_NAME = i_like_gogits
|
||||
; If you use session in https only, default is false
|
||||
COOKIE_SECURE = false
|
||||
; Enable set cookie, default is true
|
||||
ENABLE_SET_COOKIE = true
|
||||
; Session GC time interval, default is 3600
|
||||
GC_INTERVAL_TIME = 3600
|
||||
; Session life time, default is 86400
|
||||
SESSION_LIFE_TIME = 86400
|
||||
; Cookie name for CSRF
|
||||
CSRF_COOKIE_NAME = _csrf
|
||||
|
||||
[picture]
|
||||
; Path to store user uploaded avatars
|
||||
AVATAR_UPLOAD_PATH = data/avatars
|
||||
; Chinese users can choose "duoshuo"
|
||||
; or a custom avatar source, like: http://cn.gravatar.com/avatar/
|
||||
GRAVATAR_SOURCE = gravatar
|
||||
; This value will be forced to be true in offline mode.
|
||||
DISABLE_GRAVATAR = false
|
||||
; Federated avatar lookup uses DNS to discover avatar associated
|
||||
; with emails, see https://www.libravatar.org
|
||||
; This value will be forced to be false in offline mode or Gravatar is disbaled.
|
||||
ENABLE_FEDERATED_AVATAR = true
|
||||
|
||||
; Attachment settings for issues
|
||||
[attachment]
|
||||
; Whether attachments are enabled. Defaults to `true`
|
||||
ENABLE = true
|
||||
; Path for attachments. Defaults to `data/attachments`
|
||||
PATH = data/attachments
|
||||
; One or more allowed types, e.g. image/jpeg|image/png
|
||||
ALLOWED_TYPES = image/jpeg|image/png
|
||||
; Max size of each file. Defaults to 4MB
|
||||
MAX_SIZE = 4
|
||||
; Max number of files per upload. Defaults to 5
|
||||
[repository.upload]
|
||||
; Whether to enable repository file uploads.
|
||||
ENABLED = true
|
||||
; The path to temporarily store uploads (content under this path gets wiped out on every start).
|
||||
TEMP_PATH = data/tmp/uploads
|
||||
; File types that are allowed to be uploaded, e.g. "image/jpeg|image/png". Leave empty to allow any file type.
|
||||
ALLOWED_TYPES =
|
||||
; The maximum size of each file in MB.
|
||||
FILE_MAX_SIZE = 3
|
||||
; The maximum number of files per upload.
|
||||
MAX_FILES = 5
|
||||
|
||||
[time]
|
||||
; Specifies the format for fully outputed dates. Defaults to RFC1123
|
||||
; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano
|
||||
; For more information about the format see http://golang.org/pkg/time/#pkg-constants
|
||||
FORMAT =
|
||||
[database]
|
||||
; The database backend, either "postgres", "mysql" or "sqlite3".
|
||||
TYPE = postgres
|
||||
HOST = 127.0.0.1:5432
|
||||
NAME = gogs
|
||||
USER = gogs
|
||||
PASSWORD =
|
||||
; For "postgres" only
|
||||
SCHEMA = public
|
||||
; For "postgres" only, either "disable", "require" or "verify-full".
|
||||
SSL_MODE = disable
|
||||
; For "sqlite3" only, make sure to use absolute path.
|
||||
PATH = data/gogs.db
|
||||
; The maximum open connections of the pool.
|
||||
MAX_OPEN_CONNS = 30
|
||||
; The maximum idle connections of the pool.
|
||||
MAX_IDLE_CONNS = 30
|
||||
|
||||
; General settings of loggers
|
||||
[security]
|
||||
; Whether to show the install page, set this to "true" to bypass it.
|
||||
INSTALL_LOCK = false
|
||||
; The secret to encrypt cookie values, 2FA code, etc.
|
||||
; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!!
|
||||
SECRET_KEY = !#@FDEWREWR&*(
|
||||
; The days remembered for auto-login.
|
||||
LOGIN_REMEMBER_DAYS = 7
|
||||
; The cookie name to store auto-login information.
|
||||
COOKIE_REMEMBER_NAME = gogs_incredible
|
||||
; The cookie name to store logged in username.
|
||||
COOKIE_USERNAME = gogs_awesome
|
||||
; Whether to set secure cookie.
|
||||
COOKIE_SECURE = false
|
||||
; Whether to set cookie to indicate user login status.
|
||||
ENABLE_LOGIN_STATUS_COOKIE = false
|
||||
; The cookie name to store user login status.
|
||||
LOGIN_STATUS_COOKIE_NAME = login_status
|
||||
; A comma separated list of hostnames that are explicitly allowed to be accessed within the local network.
|
||||
; Use "*" to allow all hostnames.
|
||||
LOCAL_NETWORK_ALLOWLIST =
|
||||
|
||||
[email]
|
||||
; Whether to enable the email service.
|
||||
ENABLED = false
|
||||
; The prefix prepended to the subject line.
|
||||
SUBJECT_PREFIX = `[%(BRAND_NAME)s] `
|
||||
; The SMTP server with its port, e.g. smtp.mailgun.org:587, smtp.gmail.com:587, smtp.qq.com:465
|
||||
; If the port ends is "465", SMTPS will be used. Using STARTTLS on port 587 is recommended per RFC 6409.
|
||||
; If the server supports STARTTLS it will always be used.
|
||||
HOST = smtp.mailgun.org:587
|
||||
; The email from address (RFC 5322). This can be just an email address, or the `"Name" <email@example.com>` format.
|
||||
FROM = noreply@gogs.localhost
|
||||
; The login user.
|
||||
USER = noreply@gogs.localhost
|
||||
; The login password.
|
||||
PASSWORD =
|
||||
|
||||
; The custom hostname for HELO operation, default is from system.
|
||||
HELO_HOSTNAME =
|
||||
|
||||
; Whether to skip verifying the certificate of the server. Only use this for self-signed certificates.
|
||||
SKIP_VERIFY = false
|
||||
; Whether to use client certificates.
|
||||
USE_CERTIFICATE = false
|
||||
CERT_FILE = custom/email/cert.pem
|
||||
KEY_FILE = custom/email/key.pem
|
||||
|
||||
; Whether to use "text/plain" as content format.
|
||||
USE_PLAIN_TEXT = false
|
||||
; Whether to attach a plaintext alternative to the MIME message while sending HTML emails.
|
||||
; It is used to support older mail clients and make spam filters happier.
|
||||
ADD_PLAIN_TEXT_ALT = false
|
||||
|
||||
[auth]
|
||||
; The valid duration of activate code in minutes.
|
||||
ACTIVATE_CODE_LIVES = 180
|
||||
; The valid duration of reset password code in minutes.
|
||||
RESET_PASSWORD_CODE_LIVES = 180
|
||||
; Whether to require email confirmation for adding new email addresses.
|
||||
; Enable this option will also require user to confirm the email for registration.
|
||||
REQUIRE_EMAIL_CONFIRMATION = false
|
||||
; Whether to disallow anonymous users visiting the site.
|
||||
REQUIRE_SIGNIN_VIEW = false
|
||||
; Whether to disable self-registration. When disabled, accounts would have to be created by admins.
|
||||
DISABLE_REGISTRATION = false
|
||||
; Whether to enable captcha validation for registration
|
||||
ENABLE_REGISTRATION_CAPTCHA = true
|
||||
|
||||
; Whether to enable reverse proxy authentication via HTTP header.
|
||||
ENABLE_REVERSE_PROXY_AUTHENTICATION = false
|
||||
; Whether to automatically create new users for reverse proxy authentication.
|
||||
ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false
|
||||
; The HTTP header used as username for reverse proxy authentication.
|
||||
REVERSE_PROXY_AUTHENTICATION_HEADER = X-WEBAUTH-USER
|
||||
|
||||
[user]
|
||||
; Whether to enable email notifications for users.
|
||||
ENABLE_EMAIL_NOTIFICATION = false
|
||||
|
||||
[session]
|
||||
; The session provider, either "memory", "file", or "redis".
|
||||
PROVIDER = memory
|
||||
; The configuration for respective provider:
|
||||
; - memory: does not need any config yet
|
||||
; - file: session file path, e.g. `data/sessions`
|
||||
; - redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180,tls=true
|
||||
PROVIDER_CONFIG = data/sessions
|
||||
; The cookie name to store the session identifier.
|
||||
COOKIE_NAME = i_like_gogs
|
||||
; Whether to set cookie in HTTPS only.
|
||||
COOKIE_SECURE = false
|
||||
; The GC interval in seconds for session data.
|
||||
GC_INTERVAL = 3600
|
||||
; The maximum life time in seconds for a session.
|
||||
MAX_LIFE_TIME = 86400
|
||||
; The cookie name for CSRF token.
|
||||
CSRF_COOKIE_NAME = _csrf
|
||||
|
||||
[cache]
|
||||
; The cache adapter, either "memory", "redis", or "memcache".
|
||||
ADAPTER = memory
|
||||
; For "memory" only, GC interval in seconds.
|
||||
INTERVAL = 60
|
||||
; For "redis" and "memcache", connection host address:
|
||||
; - redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
|
||||
; - memcache: `127.0.0.1:11211`
|
||||
HOST =
|
||||
|
||||
[http]
|
||||
; The value for "Access-Control-Allow-Origin" header, default is not to present.
|
||||
ACCESS_CONTROL_ALLOW_ORIGIN =
|
||||
|
||||
[lfs]
|
||||
; The storage backend for uploading new objects.
|
||||
STORAGE = local
|
||||
; The root path to store LFS objects on local file system.
|
||||
OBJECTS_PATH = data/lfs-objects
|
||||
; The path to temporarily store LFS objects during upload verification.
|
||||
OBJECTS_TEMP_PATH = data/tmp/lfs-objects
|
||||
|
||||
[attachment]
|
||||
; Whether to enabled upload attachments in general.
|
||||
ENABLED = true
|
||||
; The path to store attachments on the file system.
|
||||
PATH = data/attachments
|
||||
; File types that are allowed to be uploaded, e.g. "image/jpeg|image/png". Leave empty to allow any file type.
|
||||
ALLOWED_TYPES = image/jpeg|image/png
|
||||
; The maximum size of each file in MB.
|
||||
MAX_SIZE = 4
|
||||
; The maximum number of files per upload.
|
||||
MAX_FILES = 5
|
||||
|
||||
[release.attachment]
|
||||
; Whether to enabled upload attachments for releases.
|
||||
ENABLED = true
|
||||
; File types that are allowed to be uploaded, e.g. "image/jpeg|image/png". Leave empty to allow any file type.
|
||||
ALLOWED_TYPES = */*
|
||||
; The maximum size of each file in MB.
|
||||
MAX_SIZE = 32
|
||||
; The maximum number of files per upload.
|
||||
MAX_FILES = 10
|
||||
|
||||
[time]
|
||||
; Specifies the format for fully outputed dates.
|
||||
; Values should be one of the following:
|
||||
; ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano.
|
||||
; For more information about the format see http://golang.org/pkg/time/#pkg-constants.
|
||||
FORMAT = RFC1123
|
||||
|
||||
[picture]
|
||||
; The path to store user avatars on the file system.
|
||||
AVATAR_UPLOAD_PATH = data/avatars
|
||||
; The path to store repository avatars on the file system.
|
||||
REPOSITORY_AVATAR_UPLOAD_PATH = data/repo-avatars
|
||||
; Chinese users can use a custom avatar source, such as http://cn.gravatar.com/avatar/.
|
||||
GRAVATAR_SOURCE = gravatar
|
||||
; Whether to disable Gravatar, this value will be forced to be true in offline mode.
|
||||
DISABLE_GRAVATAR = false
|
||||
; Whether to enable federated avatar lookup uses DNS to discover avatar associated
|
||||
; with emails, see https://www.libravatar.org for details.
|
||||
; This value will be forced to be false in offline mode or when Gravatar is disabled.
|
||||
ENABLE_FEDERATED_AVATAR = false
|
||||
|
||||
[markdown]
|
||||
; Whether to enable hard line break extension.
|
||||
ENABLE_HARD_LINE_BREAK = false
|
||||
; The list of custom URL schemes that are allowed as links when rendering Markdown.
|
||||
; For example, "git" (for "git://") and "magnet" (for "magnet://").
|
||||
CUSTOM_URL_SCHEMES =
|
||||
; The list of file extensions that should be rendered/edited as Markdown.
|
||||
; Separate extensions with a comma. To render files with no extension as markdown, just put a comma.
|
||||
FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd
|
||||
|
||||
[smartypants]
|
||||
; Whether to enable the Smartypants extension.
|
||||
ENABLED = false
|
||||
FRACTIONS = true
|
||||
DASHES = true
|
||||
LATEX_DASHES = true
|
||||
ANGLED_QUOTES = true
|
||||
|
||||
[admin]
|
||||
; Whether to disable regular (non-admin) users to create organizations.
|
||||
DISABLE_REGULAR_ORG_CREATION = false
|
||||
|
||||
[webhook]
|
||||
; The list of enabled types for users to use, can be "gogs", "slack", "discord", "dingtalk".
|
||||
TYPES = gogs, slack, discord, dingtalk
|
||||
; Deliver timeout in seconds.
|
||||
DELIVER_TIMEOUT = 15
|
||||
; Whether to allow insecure certification.
|
||||
SKIP_TLS_VERIFY = false
|
||||
; The number of history information in each page.
|
||||
PAGING_NUM = 10
|
||||
|
||||
; General settings of loggers.
|
||||
[log]
|
||||
; The root path for all log files, default is "log/" subdirectory.
|
||||
ROOT_PATH =
|
||||
; Can be "console" and "file", default is "console"
|
||||
; Can be "console", "file", "slack" and "discord".
|
||||
; Use comma to separate multiple modes, e.g. "console, file"
|
||||
MODE = console
|
||||
; Buffer length of channel, keep it as it is if you don't know what it is.
|
||||
@@ -323,30 +368,38 @@ LEVEL = Trace
|
||||
|
||||
; For "console" mode only
|
||||
[log.console]
|
||||
; leave empty to inherit
|
||||
LEVEL =
|
||||
; Comment out to inherit
|
||||
; LEVEL =
|
||||
|
||||
; For "file" mode only
|
||||
[log.file]
|
||||
; leave empty to inherit
|
||||
LEVEL =
|
||||
; This enables automated log rotate (switch of following options)
|
||||
; Comment out to inherit
|
||||
; LEVEL =
|
||||
; Whether to enable automated log rotate (switch of following options).
|
||||
LOG_ROTATE = true
|
||||
; Segment log daily
|
||||
; Whether to segment log files daily.
|
||||
DAILY_ROTATE = true
|
||||
; Max size shift of single file, default is 28 means 1 << 28, 256MB
|
||||
; The maximum size shift of single file, default is 28 means 1 << 28 = 256MB.
|
||||
MAX_SIZE_SHIFT = 28
|
||||
; Max line number of single file
|
||||
; The maximum number of lines of single file.
|
||||
MAX_LINES = 1000000
|
||||
; Expired days of log file (delete after max days)
|
||||
; The expired days of log file (delete after max days).
|
||||
MAX_DAYS = 7
|
||||
|
||||
; For "slack" mode only
|
||||
[log.slack]
|
||||
; leave empty to inherit
|
||||
LEVEL =
|
||||
; Comment out to inherit
|
||||
; LEVEL =
|
||||
; Webhook URL
|
||||
URL =
|
||||
URL =
|
||||
|
||||
[log.discord]
|
||||
; Comment out to inherit
|
||||
; LEVEL =
|
||||
; Webhook URL
|
||||
URL =
|
||||
; The username to be displayed in notification.
|
||||
USERNAME = %(BRAND_NAME)s
|
||||
|
||||
[log.xorm]
|
||||
; Enable file rotation
|
||||
@@ -358,14 +411,24 @@ MAX_SIZE = 100
|
||||
; Maximum days to keep logger files
|
||||
MAX_DAYS = 3
|
||||
|
||||
[log.gorm]
|
||||
; Whether to enable file rotation.
|
||||
ROTATE = true
|
||||
; Whether to rotate file every day.
|
||||
ROTATE_DAILY = true
|
||||
; The maximum file size in MB before next rotate.
|
||||
MAX_SIZE = 100
|
||||
; The maximum days to keep files.
|
||||
MAX_DAYS = 3
|
||||
|
||||
[cron]
|
||||
; Enable running cron tasks periodically.
|
||||
ENABLED = true
|
||||
; Run cron tasks when Gogs starts.
|
||||
RUN_AT_START = false
|
||||
|
||||
; Update mirrors
|
||||
[cron.update_mirrors]
|
||||
; Defines how often the mirror syncer checks if any mirror needs to be synchronized (based on the mirror update interval).
|
||||
SCHEDULE = @every 10m
|
||||
|
||||
; Repository health check
|
||||
@@ -391,12 +454,12 @@ OLDER_THAN = 24h
|
||||
[git]
|
||||
; Disables highlight of added and removed changes
|
||||
DISABLE_DIFF_HIGHLIGHT = false
|
||||
; Max number of files shown in diff view
|
||||
MAX_GIT_DIFF_FILES = 100
|
||||
; Max number of lines allowed of a single file in diff view
|
||||
MAX_GIT_DIFF_LINES = 1000
|
||||
; Max number of characters of a line allowed in diff view
|
||||
MAX_GIT_DIFF_LINE_CHARACTERS = 500
|
||||
; Max number of files shown in diff view
|
||||
MAX_GIT_DIFF_FILES = 100
|
||||
MAX_GIT_DIFF_LINE_CHARACTERS = 2000
|
||||
; Arguments for command 'git gc', e.g. "--aggressive --auto"
|
||||
; see more on http://git-scm.com/docs/git-gc/1.7.5
|
||||
GC_ARGS =
|
||||
@@ -407,10 +470,12 @@ MIGRATE = 600
|
||||
MIRROR = 300
|
||||
CLONE = 300
|
||||
PULL = 300
|
||||
DIFF = 60
|
||||
GC = 60
|
||||
|
||||
[mirror]
|
||||
; Default interval in hours between each check
|
||||
; Defines the default interval (in hours) until the next sync for a mirror (after a successful mirror sync).
|
||||
; It can be overridden individually for each mirror repository in the settings.
|
||||
DEFAULT_INTERVAL = 8
|
||||
|
||||
[api]
|
||||
@@ -449,11 +514,26 @@ NEWS_FEED_PAGING_NUM = 20
|
||||
; Number of commits that are showed in one page
|
||||
COMMITS_PAGING_NUM = 30
|
||||
|
||||
[i18n]
|
||||
LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR,gl-ES,uk-UA
|
||||
NAMES = English,简体中文,繁體中文(香港),繁體中文(台湾),Deutsch,français,Nederlands,latviešu,русский,日本語,español,português do Brasil,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어,galego,українська
|
||||
[prometheus]
|
||||
; Whether to enable Prometheus metrics.
|
||||
ENABLED = true
|
||||
; Whether to enable HTTP Basic Authentication to protect metrics data.
|
||||
ENABLE_BASIC_AUTH = false
|
||||
; The username for HTTP Basic Authentication.
|
||||
BASIC_AUTH_USERNAME =
|
||||
; The password for HTTP Basic Authentication.
|
||||
BASIC_AUTH_PASSWORD =
|
||||
|
||||
; Used for datetimepicker
|
||||
; Extension mapping to highlight class
|
||||
; e.g. .toml=ini
|
||||
[highlight.mapping]
|
||||
|
||||
[i18n]
|
||||
LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR,gl-ES,uk-UA,en-GB,hu-HU,sk-SK,id-ID,fa-IR,vi-VN,pt-PT,mn-MN,ro-RO
|
||||
NAMES = English,简体中文,繁體中文(香港),繁體中文(臺灣),Deutsch,français,Nederlands,latviešu,русский,日本語,español,português do Brasil,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어,galego,українська,English (United Kingdom),Magyar,Slovenčina,Indonesian,Persian,Vietnamese,Português,Монгол,Română
|
||||
|
||||
; Used for jQuery DateTimePicker,
|
||||
; list of supported languages in https://xdsoft.net/jqplugins/datetimepicker/#lang
|
||||
[i18n.datelang]
|
||||
en-US = en
|
||||
zh-CN = zh
|
||||
@@ -478,14 +558,17 @@ sv-SE = sv
|
||||
ko-KR = ko
|
||||
gl-ES = gl
|
||||
uk-UA = uk
|
||||
|
||||
; Extension mapping to highlight class
|
||||
; e.g. .toml=ini
|
||||
[highlight.mapping]
|
||||
en-GB = en-GB
|
||||
hu-HU = hu
|
||||
sk-SK = sk
|
||||
id-ID = id
|
||||
fa-IR = fa
|
||||
vi-VN = vi
|
||||
pt-PT = pt
|
||||
mn-MN = mn
|
||||
ro-RO = ro
|
||||
|
||||
[other]
|
||||
SHOW_FOOTER_BRANDING = false
|
||||
; Show version information about Gogs and Go in the footer
|
||||
SHOW_FOOTER_VERSION = true
|
||||
; Show time of template execution in the footer
|
||||
SHOW_FOOTER_TEMPLATE_LOAD_TIME = true
|
||||
|
||||
10
conf/auth.d/github.conf.example
Normal file
10
conf/auth.d/github.conf.example
Normal file
@@ -0,0 +1,10 @@
|
||||
# This is an example of GitHub authentication
|
||||
#
|
||||
id = 105
|
||||
type = github
|
||||
name = GitHub
|
||||
is_activated = true
|
||||
|
||||
[config]
|
||||
api_endpoint = https://api.github.com/
|
||||
|
||||
29
conf/auth.d/ldap_bind_dn.conf.example
Normal file
29
conf/auth.d/ldap_bind_dn.conf.example
Normal file
@@ -0,0 +1,29 @@
|
||||
# This is an example of LDAP (BindDN) authentication
|
||||
#
|
||||
id = 101
|
||||
type = ldap_bind_dn
|
||||
name = LDAP BindDN
|
||||
is_activated = true
|
||||
|
||||
[config]
|
||||
host = mydomain.com
|
||||
port = 636
|
||||
# 0 - Unencrypted, 1 - LDAPS, 2 - StartTLS
|
||||
security_protocol = 0
|
||||
skip_verify = false
|
||||
bind_dn =
|
||||
bind_password =
|
||||
user_base = ou=Users,dc=mydomain,dc=com
|
||||
attribute_username =
|
||||
attribute_name =
|
||||
attribute_surname =
|
||||
attribute_mail = mail
|
||||
attributes_in_bind = false
|
||||
filter = (&(objectClass=posixAccount)(cn=%s))
|
||||
admin_filter =
|
||||
group_enabled = false
|
||||
group_dn =
|
||||
group_filter =
|
||||
group_member_uid =
|
||||
user_uid =
|
||||
|
||||
30
conf/auth.d/ldap_simple_auth.conf.example
Normal file
30
conf/auth.d/ldap_simple_auth.conf.example
Normal file
@@ -0,0 +1,30 @@
|
||||
# This is an example of LDAP (simple auth) authentication
|
||||
#
|
||||
id = 102
|
||||
type = ldap_simple_auth
|
||||
name = LDAP Simple Auth
|
||||
is_activated = true
|
||||
|
||||
[config]
|
||||
host = mydomain.com
|
||||
port = 636
|
||||
# 0 - Unencrypted, 1 - LDAPS, 2 - StartTLS
|
||||
security_protocol = 0
|
||||
skip_verify = false
|
||||
bind_dn =
|
||||
bind_password =
|
||||
user_base =
|
||||
user_dn = cn=%s,ou=Users,dc=mydomain,dc=com
|
||||
attribute_username =
|
||||
attribute_name =
|
||||
attribute_surname =
|
||||
attribute_mail = mail
|
||||
attributes_in_bind = false
|
||||
filter = (&(objectClass=posixAccount)(cn=%s))
|
||||
admin_filter =
|
||||
group_enabled = false
|
||||
group_dn =
|
||||
group_filter =
|
||||
group_member_uid =
|
||||
user_uid =
|
||||
|
||||
10
conf/auth.d/pam.conf.example
Normal file
10
conf/auth.d/pam.conf.example
Normal file
@@ -0,0 +1,10 @@
|
||||
# This is an example of PAM authentication
|
||||
#
|
||||
id = 104
|
||||
type = pam
|
||||
name = System Auth
|
||||
is_activated = true
|
||||
|
||||
[config]
|
||||
service_name = system-auth
|
||||
|
||||
16
conf/auth.d/smtp.conf.example
Normal file
16
conf/auth.d/smtp.conf.example
Normal file
@@ -0,0 +1,16 @@
|
||||
# This is an example of SMTP authentication
|
||||
#
|
||||
id = 103
|
||||
type = smtp
|
||||
name = GMail
|
||||
is_activated = true
|
||||
|
||||
[config]
|
||||
# Either "PLAIN" or "LOGIN"
|
||||
auth = PLAIN
|
||||
host = smtp.gmail.com
|
||||
port = 587
|
||||
allowed_domains =
|
||||
tls = true
|
||||
skip_verify = false
|
||||
|
||||
23
conf/embed.go
Normal file
23
conf/embed.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package conf
|
||||
|
||||
import (
|
||||
"embed"
|
||||
)
|
||||
|
||||
//go:embed app.ini **/*
|
||||
var Files embed.FS
|
||||
|
||||
// FileNames returns a list of filenames exists in the given direction within
|
||||
// Files. The list includes names of subdirectories.
|
||||
func FileNames(dir string) ([]string, error) {
|
||||
entries, err := Files.ReadDir(dir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fileNames := make([]string, 0, len(entries))
|
||||
for _, entry := range entries {
|
||||
fileNames = append(fileNames, entry.Name())
|
||||
}
|
||||
return fileNames, nil
|
||||
}
|
||||
16
conf/embed_test.go
Normal file
16
conf/embed_test.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package conf
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestFileNames(t *testing.T) {
|
||||
names, err := FileNames(".")
|
||||
require.NoError(t, err)
|
||||
|
||||
want := []string{"app.ini", "auth.d", "gitignore", "label", "license", "locale", "readme"}
|
||||
assert.Equal(t, want, names)
|
||||
}
|
||||
63
conf/gitignore/PhpStorm
vendored
Normal file
63
conf/gitignore/PhpStorm
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff:
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/dictionaries
|
||||
|
||||
# Sensitive or high-churn files:
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.xml
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
|
||||
# Gradle:
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# CMake
|
||||
cmake-build-debug/
|
||||
|
||||
# Mongo Explorer plugin:
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
## File-based project format:
|
||||
*.iws
|
||||
|
||||
## Plugin-specific files:
|
||||
|
||||
# IntelliJ
|
||||
/out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# Ruby plugin and RubyMine
|
||||
/.rakeTasks
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
### PhpStorm Patch ###
|
||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||
|
||||
# *.iml
|
||||
# modules.xml
|
||||
# .idea/misc.xml
|
||||
# *.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
.idea/sonarlint
|
||||
76
conf/gitignore/UnrealEngine
vendored
Normal file
76
conf/gitignore/UnrealEngine
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
# Visual Studio 2015 user specific files
|
||||
.vs/
|
||||
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Fortran module files
|
||||
*.mod
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
*.ipa
|
||||
|
||||
# These project files can be generated by the engine
|
||||
*.xcodeproj
|
||||
*.xcworkspace
|
||||
*.sln
|
||||
*.suo
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.VC.db
|
||||
*.VC.opendb
|
||||
|
||||
# Precompiled Assets
|
||||
SourceArt/**/*.png
|
||||
SourceArt/**/*.tga
|
||||
|
||||
# Binary Files
|
||||
Binaries/*
|
||||
Plugins/*/Binaries/*
|
||||
|
||||
# Builds
|
||||
Build/*
|
||||
|
||||
# Whitelist PakBlacklist-<BuildConfiguration>.txt files
|
||||
!Build/*/
|
||||
Build/*/**
|
||||
!Build/*/PakBlacklist*.txt
|
||||
|
||||
# Don't ignore icon files in Build
|
||||
!Build/**/*.ico
|
||||
|
||||
# Built data for maps
|
||||
*_BuiltData.uasset
|
||||
|
||||
# Configuration files generated by the Editor
|
||||
Saved/*
|
||||
|
||||
# Compiled source files for the engine to use
|
||||
Intermediate/*
|
||||
Plugins/*/Intermediate/*
|
||||
|
||||
# Cache files for the editor to use
|
||||
DerivedDataCache/*
|
||||
|
||||
|
||||
63
conf/gitignore/WebStorm
vendored
Normal file
63
conf/gitignore/WebStorm
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff:
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/dictionaries
|
||||
|
||||
# Sensitive or high-churn files:
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.xml
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
|
||||
# Gradle:
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# CMake
|
||||
cmake-build-debug/
|
||||
|
||||
# Mongo Explorer plugin:
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
## File-based project format:
|
||||
*.iws
|
||||
|
||||
## Plugin-specific files:
|
||||
|
||||
# IntelliJ
|
||||
/out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# Ruby plugin and RubyMine
|
||||
/.rakeTasks
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
### WebStorm Patch ###
|
||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||
|
||||
# *.iml
|
||||
# modules.xml
|
||||
# .idea/misc.xml
|
||||
# *.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
.idea/sonarlint
|
||||
@@ -21,6 +21,7 @@ Barış Arda Yılmaz <ardayilmazgamer AT gmail DOT com>
|
||||
Bo-Yi Wu <appleboy DOT tw AT gmail DOT com>
|
||||
Breton Corentin <contact AT neodarz DOT net>
|
||||
Camille Baronnet <gogs AT camillebaronnet DOT fr>
|
||||
Changwoo Ryu <cwryu AT debian DOT org>
|
||||
Christoph Kisfeld <christoph DOT kisfeld AT gmail DOT com>
|
||||
Cysioland
|
||||
Damaris Padieu <damizx AT hotmail DOT fr>
|
||||
@@ -31,6 +32,7 @@ Dmitriy Nogay <me AT catwhocode DOT ga>
|
||||
Enrico Testori hypertesto AT gmail DOT com
|
||||
Ezequiel Gonzalez Rial <gonrial AT gmail DOT com>
|
||||
Farhan Naysee <wpmagic70 AT gmail DOT com>
|
||||
Flávio Monteiro <flaviomonteiro2013 AT gmail DOT com>
|
||||
Gabriel Dugny <gabriel DOT dugny AT gmail DOT com>
|
||||
Ganesha <reekoheek AT gmail DOT com>
|
||||
Gregor Santner <gdev AT live DOT de>
|
||||
@@ -54,9 +56,11 @@ Luc Stepniewski <luc AT stepniewski DOT fr>
|
||||
Łukasz Jan Niemier <lukasz AT niemier DOT pl>
|
||||
Marc Schiller <marc AT schiller DOT im>
|
||||
Marvin Menzerath <github AT marvin-menzerath DOT de>
|
||||
Mathias Rangel Wulff <m AT rawu DOT dk>
|
||||
Michael Härtl <haertl DOT mike AT gmail DOT com>
|
||||
Miguel de la Cruz <miguel AT mcrx DOT me>
|
||||
Mikhail Burdin <xdshot9000 AT gmail DOT com>
|
||||
Mohammad Gholami <gholami DOT mohammad DOT mgh AT gmail DOT com>
|
||||
Morten Sørensen <klim8d AT gmail DOT com>
|
||||
Muhammad Fawwaz Orabi <mfawwaz93 AT gmail DOT com>
|
||||
Nakao Takamasa <at.mattenn AT gmail DOT com>
|
||||
@@ -72,9 +76,11 @@ Robin Hübner <profan AT prfn DOT se>
|
||||
Rste Risafov <risafov AT lazy DOT com>
|
||||
SeongJae Park <sj38 DOT park AT gmail DOT com>
|
||||
Sergey Stepanov <sergystepanov AT gmail DOT com>
|
||||
Simona Iacob <s AT zp1 DOT net>
|
||||
Thomas Fanninger <gogs DOT thomas AT fanninger DOT at>
|
||||
Tilmann Bach <tilmann AT outlook DOT com>
|
||||
Toni Villena Jiménez <tonivj5 AT gmail DOT com>
|
||||
Vincent AMSTOUTZ <vincent DOT amstoutz AT outlook DOT fr>
|
||||
Vladimir Jigulin mogaika AT yandex DOT ru
|
||||
Vladimir Vissoultchev <wqweto AT gmail DOT com>
|
||||
Vongola <me AT vongola DOT tw>
|
||||
|
||||
@@ -9,7 +9,6 @@ sign_out=Изход
|
||||
sign_up=Регистрирайте се
|
||||
register=Регистрация
|
||||
website=Уебсайт
|
||||
version=Версия
|
||||
page=Страница
|
||||
template=Шаблон
|
||||
language=Език
|
||||
@@ -44,22 +43,27 @@ issues=Задачи
|
||||
|
||||
cancel=Отказ
|
||||
|
||||
[status]
|
||||
page_not_found=Страницата не е намерена
|
||||
internal_server_error=Вътрешна грешка в сървър
|
||||
|
||||
[install]
|
||||
install=Инсталация
|
||||
title=Стъпки за инсталиране при първоначално стартиране
|
||||
docker_helper=Ако Gogs е стартиран в Docker контейнер, моля прочетете <a target="_blank" href="%s">нашите указания</a> внимателно, преди да правите промени по настройките на тази страница!
|
||||
requite_db_desc=Gogs requires MySQL, PostgreSQL, SQLite3, MSSQL or TiDB.
|
||||
requite_db_desc=Gogs изисква MySQL, PostgreSQL, SQLite3 или TiDB (през MySQL протокол).
|
||||
db_title=Настройки на базата данни
|
||||
db_type=Тип на база данни
|
||||
host=Сървър
|
||||
user=Потребител
|
||||
password=Парола
|
||||
db_name=Име на база данни
|
||||
db_schema=Схема
|
||||
db_helper=Моля, използвайте INNODB engine с utf8_general_ci кодиране на знаци за MySQL.
|
||||
ssl_mode=Режим SSL
|
||||
path=Път
|
||||
sqlite_helper=The file path of SQLite3 database. <br>Please use absolute path when you start as service.
|
||||
err_empty_db_path=SQLite3 database path cannot be empty.
|
||||
sqlite_helper=Път към файл на SQLite3 база от данни. <br>Моля използвайте абсолютен път, когато стартирате gogs като услуга.
|
||||
err_empty_db_path=Пътят към SQLite3 базата от данни не може да бъде празен.
|
||||
no_admin_and_disable_registration=Невъзможно изключване на регистрациите без предварително да е създаден поне един административен профил.
|
||||
err_empty_admin_password=Паролата на администратор не може да е празна.
|
||||
|
||||
@@ -74,16 +78,17 @@ domain=Домейн
|
||||
domain_helper=Тази настройка влияе на URL адреса за клониране чрез SSH.
|
||||
ssh_port=SSH порт
|
||||
ssh_port_helper=Номер на порт на SSH сървъра. Оставете празно за да изключите достъп през SSH.
|
||||
use_builtin_ssh_server=Use Builtin SSH Server
|
||||
use_builtin_ssh_server_popup=Start builtin SSH server for Git operations to distinguish from system SSH daemon.
|
||||
use_builtin_ssh_server=Използване на вграден SSH сървър
|
||||
use_builtin_ssh_server_popup=Стартиране на вграден SSH сървър за Git операции, различен от системния SSH демон.
|
||||
http_port=HTTP порт
|
||||
http_port_helper=Порт, на който приложението ще слуша.
|
||||
app_url=URL адрес на приложението
|
||||
app_url_helper=Този настройка променя HTTP/HTTPS адреса за клониране, а понякога и адреса на ел. поща.
|
||||
log_root_path=Път към журналите
|
||||
log_root_path_helper=Директория в която се записват журналите.
|
||||
enable_console_mode=Enable Console Mode
|
||||
enable_console_mode_popup=In addition to file mode, also print logs to console.
|
||||
enable_console_mode=Включване на конзолен режим
|
||||
enable_console_mode_popup=Изписване на логовете в конзолата, в допълнение към файловият режим.
|
||||
default_branch=Клон по подразбиране
|
||||
|
||||
optional_title=Опционални настройки
|
||||
email_title=Настройки на пощенска услуга
|
||||
@@ -107,7 +112,7 @@ enable_captcha=Включи Captcha
|
||||
enable_captcha_popup=Изисква валидиране с captcha при саморегистрация на потребители.
|
||||
require_sign_in_view=Включи задължително вписване за преглед на страници
|
||||
require_sign_in_view_popup=Само вписани потребители могат да виждат страниците, анонимните посетители виждат само страниците за регистрация и вход.
|
||||
admin_setting_desc=Няма нужда от създаване на администраторски профил в момента, защото потребителят с първо ID в базата автоматично получава администраторски достъп.
|
||||
admin_setting_desc=Няма нужда да създавате администраторски профил в момента, защото потребителят с първо ID в базата автоматично получава администраторски достъп.
|
||||
admin_title=Настройки на профил на администратора
|
||||
admin_name=Потребителско име
|
||||
admin_password=Парола
|
||||
@@ -119,8 +124,10 @@ sqlite3_not_available=Вашата версия не поддържа SQLite3,
|
||||
invalid_db_setting=Настройките на базата данни са некоректни: %v
|
||||
invalid_repo_path=Основният път към хранилищата е невалиден: %v
|
||||
run_user_not_match=Потребителският контекст на приложението не е на текущия потребител: %s -> %s
|
||||
smtp_host_missing_port=Липсва порт в зададения SMTP адрес.
|
||||
invalid_smtp_from=Невалидно поле От: %v
|
||||
save_config_failed=Неуспешно запазване на конфигурация: %v
|
||||
init_failed=Грешка при инициализация на приложение: %v
|
||||
invalid_admin_setting=Настройките на профил на администратора са невалидни: %v
|
||||
install_success=Добре дошли! Радваме се, че избрахте Gogs, и Ви пожелаваме приятна работа и сърдечни поздрави!
|
||||
invalid_log_root_path=Основният път към журналите е невалиден: %v
|
||||
@@ -150,6 +157,8 @@ register_hepler_msg=Вече имате профил? Впишете се сег
|
||||
social_register_hepler_msg=Вече имате профил? Свържете се сега!
|
||||
disable_register_prompt=За съжаление създаването на нови регистрации е изключено. Обърнете се към администратора на сайта.
|
||||
disable_register_mail=За съжаление потвърждението на регистрации е изключено.
|
||||
auth_source=Източник за удостоверяване
|
||||
local=Локален
|
||||
remember_me=Запомни ме
|
||||
forgot_password=Забравена парола
|
||||
forget_password=Забравена парола?
|
||||
@@ -168,6 +177,14 @@ reset_password_helper=Щракнете тук, за да нулирате пар
|
||||
password_too_short=Размерът на паролата не може да бъде по-малък от 6 знака.
|
||||
non_local_account=Нелокални потребители не могат да сменят паролата си през Gogs.
|
||||
|
||||
login_two_factor=Двуфакторно удостоверяване
|
||||
login_two_factor_passcode=Парола за удостоверяване
|
||||
login_two_factor_enter_recovery_code=Въведете двуфакторен код за възстановяване
|
||||
login_two_factor_recovery=Двуфакторно възстановяване
|
||||
login_two_factor_recovery_code=Код за възстановяване
|
||||
login_two_factor_enter_passcode=Въведете двуфакторен код
|
||||
login_two_factor_invalid_recovery_code=Този код за възстановяване вече е бил използван или не е валиден.
|
||||
|
||||
[mail]
|
||||
activate_account=Моля активирайте Вашия профил
|
||||
activate_email=Провери адрес на ел. поща
|
||||
@@ -203,7 +220,7 @@ Content=Съдържание
|
||||
require_error=` не може да бъде празен.`
|
||||
alpha_dash_error=` трябва да e валидна буква, число или тире(-_).`
|
||||
alpha_dash_dot_error=` трябва да e валидна буква, число, тире(-_) или точка.`
|
||||
alpha_dash_dot_slash_error=` must be valid alpha or numeric or dash(-_) or dot characters or slashes.`
|
||||
alpha_dash_dot_slash_error=` must be alphanumeric, dash (-_), dot or slash characters.`
|
||||
size_error=` трябва да е с размер %s.`
|
||||
min_size_error=` трябва да съдържа поне %s знака.`
|
||||
max_size_error=` трябва да съдържа най-много %s знака.`
|
||||
@@ -220,6 +237,7 @@ org_name_been_taken=Името на организацията вече се п
|
||||
team_name_been_taken=Името на екипа вече се ползва.
|
||||
email_been_used=Този адрес на ел. поща вече се ползва.
|
||||
username_password_incorrect=Потребителското име или паролата не са верни.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Моля уверете се, че въведеното име на хранилище е вярно.
|
||||
enterred_invalid_owner_name=Моля уверете се, че въведеното име на притежател е вярно.
|
||||
enterred_invalid_password=Моля уверете се, че въведената парола е вярна.
|
||||
@@ -237,7 +255,7 @@ org_still_own_repo=Тази организация все още притежа
|
||||
target_branch_not_exist=Целевият клон не съществува.
|
||||
|
||||
[user]
|
||||
change_avatar=Проми своя аватар
|
||||
change_avatar=Промени своя аватар
|
||||
join_on=Регистриран
|
||||
repositories=Хранилища
|
||||
activity=Публична дейност
|
||||
@@ -247,15 +265,15 @@ following=Следване
|
||||
follow=Следване
|
||||
unfollow=Не следвай
|
||||
|
||||
form.name_reserved=Потребителското име '%s' е запазено.
|
||||
form.name_pattern_not_allowed=Потребителското име '%s' не е допустимо.
|
||||
form.name_not_allowed=User name or pattern %q is not allowed.
|
||||
|
||||
[settings]
|
||||
profile=Профил
|
||||
password=Парола
|
||||
avatar=Аватар
|
||||
ssh_keys=SSH ключове
|
||||
repos=Repositories
|
||||
security=Сигурност
|
||||
repos=Хранилища
|
||||
orgs=Организации
|
||||
applications=Приложения
|
||||
delete=Изтрий профил
|
||||
@@ -299,6 +317,7 @@ delete_email=Изтрий
|
||||
email_deletion=Изтрий ел. поща
|
||||
email_deletion_desc=При изтриване на тази ел. поща ще се премахне свързаната информация от Вашия профил. Желаете ли да продължите?
|
||||
email_deletion_success=Ел. пощата беше изтрита успешно!
|
||||
email_deletion_primary=Cannot delete primary email address.
|
||||
add_new_email=Добавяне на нов адрес на ел. поща
|
||||
add_email=Добави ел. поща
|
||||
add_email_confirmation_sent=Ново писмо за потвърждение е изпратено до '%s'. Моля проверете пощенската си кутия в рамките на следващите %d часа, за да завършите процеса на регистрация.
|
||||
@@ -324,14 +343,36 @@ no_activity=Няма скорошна дейност
|
||||
key_state_desc=Този ключ е използван през последните 7 дни
|
||||
token_state_desc=Този API ключ е използван през последните 7 дни
|
||||
|
||||
manage_social=Управление на свързани профили в социалните мрежи
|
||||
social_desc=Това е списък на свързани профили в социалните мрежи. Премахнете всички, които не разпознавате.
|
||||
unbind=Освобождаване
|
||||
unbind_success=Социалния профил е освободен.
|
||||
two_factor=Two-factor Authentication
|
||||
two_factor_status=Статус:
|
||||
two_factor_on=Вкл.
|
||||
two_factor_off=Изкл.
|
||||
two_factor_enable=Активиране
|
||||
two_factor_disable=Деактивиране
|
||||
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
|
||||
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
|
||||
two_factor_enable_title=Enable Two-factor Authentication
|
||||
two_factor_scan_qr=Please use your authentication application to scan the image:
|
||||
two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=След това въведете паролата:
|
||||
two_factor_verify=Потвърждаване
|
||||
two_factor_invalid_passcode=Въведената парола е невалидна! Моля опитайте отново.
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
two_factor_recovery_codes_desc=Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
|
||||
two_factor_regenerate_recovery_codes=Ново генериране на кодове за възстановяване
|
||||
two_factor_regenerate_recovery_codes_error=Неуспешно генериране на кодове за възстановяване: %v
|
||||
two_factor_regenerate_recovery_codes_success=New recovery codes has been generated successfully!
|
||||
two_factor_disable_title=Disable Two-factor Authentication
|
||||
two_factor_disable_desc=Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
|
||||
two_factor_disable_success=Two-factor authentication has disabled successfully!
|
||||
|
||||
manage_access_token=Управление на индивидуални API ключове за достъп
|
||||
generate_new_token=Генериране на нов API ключ
|
||||
tokens_desc=Генерирани API ключове, които могат да се използват за достъп до API на Gogs.
|
||||
access_token_tips=The personal access token may be used as either username or password. It is recommended to use the "x-access-token" as the username and the personal access token as the password for Git applications.
|
||||
new_token_desc=Всеки API ключ ще има пълен достъп до Вашия профил.
|
||||
token_name=Име на API ключ
|
||||
generate_token=Генериране на API ключ
|
||||
@@ -340,15 +381,16 @@ delete_token=Изтрий
|
||||
access_token_deletion=Изтрий индивидуален API ключ за достъп
|
||||
access_token_deletion_desc=При изтриване на този индивидуален API ключ за достъп ще се премахнат всички свързани права на приложението. Желаете ли да продължите?
|
||||
delete_token_success=Индивидуалният API ключ за достъп е изтрит успешно! Не забравяйте да преконфигурирате приложението също.
|
||||
token_name_exists=Token with same name already exists.
|
||||
|
||||
orgs.none=Не сте член на никоя организация.
|
||||
orgs.leave_title=Напусни организация
|
||||
orgs.leave_desc=Ще загубите достъп до всички хранилища и екипи, след като напуснете организацията. Желаете ли да продължите?
|
||||
|
||||
repos.leave=Leave
|
||||
repos.leave_title=Leave repository
|
||||
repos.leave=Напускане
|
||||
repos.leave_title=Напускане на хранилище
|
||||
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
|
||||
repos.leave_success=You have left repository '%s' successfully!
|
||||
repos.leave_success=Вие успешно напуснахте хранилище "%s"!
|
||||
|
||||
delete_account=Изтриване на собствения профил
|
||||
delete_prompt=Тази операция ще изтрие Вашия профил завинаги и тя <strong>НЕ МОЖЕ</strong> да бъде отменена в последствие!
|
||||
@@ -361,7 +403,9 @@ owner=Притежател
|
||||
repo_name=Име на хранилището
|
||||
repo_name_helper=Добро име на хранилище е име, състоящо от кратки, запомнящи се и уникални ключови думи.
|
||||
visibility=Видимост
|
||||
unlisted=Unlisted
|
||||
visiblity_helper=Това хранилище е <span class="ui red text">Частно</span>
|
||||
unlisted_helper=This repository is <span class="ui red text">Unlisted</span>
|
||||
visiblity_helper_forced=Административна настройка задължава всички нови хранилища да бъдат <span class="ui red text">Частни</span>
|
||||
visiblity_fork_helper=(Промяна на тази стойност ще се отрази на всички разклонения)
|
||||
clone_helper=Нуждаете се от помощ при клониране? Посетете <a target="_blank" href="%s">Помощ</a>!
|
||||
@@ -387,10 +431,11 @@ mirror_last_synced=Последна синхр.
|
||||
watchers=Наблюдаващи
|
||||
stargazers=Харесващи
|
||||
forks=Разклонения
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=Притежателят е достигнал настроения лимит от %d брой хранилища.
|
||||
form.name_reserved=Името на хранилището '%s' е запазено.
|
||||
form.name_pattern_not_allowed=Име на хранилището от вида '%s' не е позволено.
|
||||
form.name_not_allowed=Repository name or pattern %q is not allowed.
|
||||
|
||||
need_auth=Изисква потребител и парола
|
||||
migrate_type=Тип мигриране
|
||||
@@ -401,6 +446,7 @@ migrate.clone_address_desc=Може да използвате HTTP/HTTPS/GIT а
|
||||
migrate.clone_address_desc_import_local=Можете да мигрирате хранилище от локален път на сървъра.
|
||||
migrate.permission_denied=Недостатъчни права за импорт на локални хранилища.
|
||||
migrate.invalid_local_path=Невалиден път - не съществува или не е директория.
|
||||
migrate.clone_address_resolved_to_blocked_local_address=Clone address resolved to a local network address that is implicitly blocked.
|
||||
migrate.failed=Грешка при миграция: %v
|
||||
|
||||
mirror_from=огледало от
|
||||
@@ -420,7 +466,7 @@ quick_guide=Бърз справочник
|
||||
clone_this_repo=Клонирай хранилището
|
||||
create_new_repo_command=Създай ново хранилище чрез командния ред
|
||||
push_exist_repo=Предай съществуващо хранилище през командния ред
|
||||
bare_message=This repository does not have any content yet.
|
||||
bare_message=Това хранилище все още не съдържа нищо.
|
||||
|
||||
files=Файлове
|
||||
branch=Клон
|
||||
@@ -433,7 +479,7 @@ pulls=Заявки за сливане
|
||||
labels=Етикети
|
||||
milestones=Етапи
|
||||
commits=Ревизии
|
||||
git_branches=Branches
|
||||
git_branches=Клонове
|
||||
releases=Версии
|
||||
file_raw=Директен файл
|
||||
file_history=История
|
||||
@@ -442,12 +488,14 @@ file_permalink=Постоянна връзка
|
||||
file_too_large=Този файл е твърде голям за да се визуализира
|
||||
video_not_supported_in_browser=Вашият браузър не поддържа HTML5 видео тагове.
|
||||
|
||||
branches.overview=Overview
|
||||
branches.active_branches=Active Branches
|
||||
branches.stale_branches=Stale Branches
|
||||
branches.all=All Branches
|
||||
branches.updated_by=Updated %[1]s by %[2]s
|
||||
branches.change_default_branch=Change Default Branch
|
||||
branches.overview=Преглед
|
||||
branches.active_branches=Активни клонове
|
||||
branches.stale_branches=Застинали клонове
|
||||
branches.all=Всички клонове
|
||||
branches.updated_by=Актуализирани %[1]s от %[2]s
|
||||
branches.change_default_branch=Промяна на клон по подразбиране
|
||||
branches.default_deletion_not_allowed=Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed=Cannot delete a protected branch.
|
||||
|
||||
editor.new_file=Нов файл
|
||||
editor.upload_file=Качи файл
|
||||
@@ -484,6 +532,7 @@ editor.file_changed_while_editing=Съдържанието на файла е б
|
||||
editor.file_already_exists=Файл с име '%s' вече съществува в това хранилище.
|
||||
editor.no_changes_to_show=Няма промени.
|
||||
editor.fail_to_update_file=Невъзможно модифициране/създаване на файл '%s' заради грешка: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Добави поддиректория...
|
||||
editor.unable_to_upload_files=Невъзможно качване на файлове в '%s' заради грешка: %v
|
||||
editor.upload_files_to_dir=Качи файлове в '%s'
|
||||
@@ -586,6 +635,7 @@ pulls.compare_compare=сравни
|
||||
pulls.filter_branch=Филтър по клон
|
||||
pulls.no_results=Няма резултати.
|
||||
pulls.nothing_to_compare=Няма нищо за сравняване, защото родителският клон и върхът са еднакви.
|
||||
pulls.nothing_merge_base=Няма нищо за сравняване, защото двата клона имат напълно различна история.
|
||||
pulls.has_pull_request=`Вече има заявка за сливане между тези две цели: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Създай заявка за сливане
|
||||
pulls.title_desc=заяви обединяване на %[1]d ревизии от <code>%[2]s</code> във <code>%[3]s</code>
|
||||
@@ -601,6 +651,9 @@ pulls.is_checking=Проверката за конфликт все още е в
|
||||
pulls.can_auto_merge_desc=Може да се извърши обединяване на тази заявка за сливане.
|
||||
pulls.cannot_auto_merge_desc=Не може да се извърши обединяване, защото съществуват конфликти между ревизиите.
|
||||
pulls.cannot_auto_merge_helper=Моля, използвайте инструменти на командния ред за да разрешите конфликтите.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Обедини заявка за сливане
|
||||
pulls.open_unmerged_pull_exists=`Невъзможно повторно отваряне, защото вече съществува заявка за сливане (#%d) от същото хранилище със същата информация за обединяване, която чака да бъде извършена`
|
||||
pulls.delete_branch=Изтрий клон
|
||||
@@ -655,28 +708,28 @@ settings.collaboration.admin=За администрация
|
||||
settings.collaboration.write=За писане
|
||||
settings.collaboration.read=За четене
|
||||
settings.collaboration.undefined=Недефинирано
|
||||
settings.branches=Branches
|
||||
settings.branches=Клонове
|
||||
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
|
||||
settings.default_branch=Default Branch
|
||||
settings.default_branch=Клон по подразбиране
|
||||
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
|
||||
settings.update=Update
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_unsupported=Промяна на клон по подразбиране не се поддържа от тази версия на Git сървъра.
|
||||
settings.update_default_branch_success=Default branch of this repository has been updated successfully!
|
||||
settings.protected_branches=Protected Branches
|
||||
settings.protected_branches=Защитени клонове
|
||||
settings.protected_branches_desc=Protect branches from force pushing, accidental deletion and whitelist code committers.
|
||||
settings.choose_a_branch=Choose a branch...
|
||||
settings.branch_protection=Branch Protection
|
||||
settings.choose_a_branch=Избор на клон...
|
||||
settings.branch_protection=Защита на клон
|
||||
settings.branch_protection_desc=Please choose protect options for branch <b>%s</b>.
|
||||
settings.protect_this_branch=Protect this branch
|
||||
settings.protect_this_branch_desc=Disable force pushes and prevent from deletion.
|
||||
settings.protect_require_pull_request=Require pull request instead direct pushing
|
||||
settings.protect_require_pull_request_desc=Enable this option to disable direct pushing to this branch. Commits have to be pushed to another non-protected branch and merged to this branch through pull request.
|
||||
settings.protect_whitelist_committers=Whitelist who can push to this branch
|
||||
settings.protect_whitelist_committers=Списък на всички, които могат да изпращат към този клон
|
||||
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
|
||||
settings.protect_whitelist_users=Users who can push to this branch
|
||||
settings.protect_whitelist_search_users=Search users
|
||||
settings.protect_whitelist_users=Потребители, които могат да изпращат към този клон
|
||||
settings.protect_whitelist_search_users=Търсене на потребители
|
||||
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
|
||||
settings.protect_whitelist_search_teams=Search teams
|
||||
settings.protect_whitelist_search_teams=Търсене на екипи
|
||||
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
|
||||
settings.hooks=Уеб-куки
|
||||
settings.githooks=Git куки
|
||||
@@ -705,7 +758,9 @@ settings.tracker_issue_style=Стил на именуване на външна
|
||||
settings.tracker_issue_style.numeric=Цифров
|
||||
settings.tracker_issue_style.alphanumeric=Символен
|
||||
settings.tracker_url_format_desc=Можете да използвате текстови маркери <code>{user} {repo} {index}</code> за потребителско име, име на хранилище и индекс на задача съответно.
|
||||
settings.pulls_desc=Включва заявки за сливане за да може да се приемат външни доработки
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Опасна зона
|
||||
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
|
||||
settings.new_owner_has_same_repo=Новият притежател вече има хранилище със същото име. Изберете друго име.
|
||||
@@ -726,7 +781,7 @@ settings.wiki_deletion_success=Данните за уики на това хра
|
||||
settings.delete=Изтрий това хранилище
|
||||
settings.delete_desc=След като изтриете хранилището, няма връщане назад. Моля, бъдете сигурни.
|
||||
settings.delete_notices_1=- Тази операция <strong>НЕ МОЖЕ</strong> да бъде отменена в последствие.
|
||||
settings.delete_notices_2=- Тази операция ще изтрие всичко от това хранилище, включително Git данни, задачи, коментари и достъпа на сътрудници.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- Всички разклонения ще станат независими след изтриването.
|
||||
settings.deletion_success=Хранилището е изтрито успешно!
|
||||
settings.update_settings_success=Настройките на хранилището са запазени успешно.
|
||||
@@ -742,8 +797,10 @@ settings.collaborator_deletion_desc=Този потребител няма да
|
||||
settings.remove_collaborator_success=Сътрудникът е премахнат.
|
||||
settings.search_user_placeholder=Име на потребител...
|
||||
settings.org_not_allowed_to_be_collaborator=Невъзможно добавяне на организация като сътрудник.
|
||||
settings.add_webhook=Добави уеб-кука
|
||||
settings.hooks_desc=Уеб-куките много приличат на обикновен HTTP POST тригер. Когато нещо се случи в Gogs, ние ще изпратим уведомление до сървъра, който посочите. Научете повече в <a target="_blank" href="%s">Ръководство за уеб-куки</a>.
|
||||
settings.webhooks.add_new=Add a new webhook:
|
||||
settings.webhooks.choose_a_type=Choose a type...
|
||||
settings.add_webhook=Добави уеб-кука
|
||||
settings.webhook_deletion=Изтрий уеб-кука
|
||||
settings.webhook_deletion_desc=При изтриване на тази уеб-кука ще се премахне информацията за нея и цялата хронология на нейното изпращане. Желаете ли да продължите?
|
||||
settings.webhook_deletion_success=Уеб-куката е изтрита успешно!
|
||||
@@ -757,6 +814,8 @@ settings.webhook.response=Отговор
|
||||
settings.webhook.headers=Заглавки
|
||||
settings.webhook.payload=Съдържание
|
||||
settings.webhook.body=Тяло
|
||||
settings.webhook.err_cannot_parse_payload_url=Cannot parse payload URL: %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address=Payload URL resolved to a local network address that is implicitly blocked.
|
||||
settings.githooks_desc=Git куките се изпълняват от Git. Вие може да промените файловете с поддържаните куки в списъка по-долу, за да изпълните външни операции.
|
||||
settings.githook_edit_desc=Ако куката е неактивна, ще бъде представено примерно съдържание. Ако оставите съдържанието празно, то тази кука ще бъде изключена.
|
||||
settings.githook_name=Име на куката
|
||||
@@ -776,18 +835,18 @@ settings.event_send_everything=При <strong>всички</strong> събити
|
||||
settings.event_choose=Нека избера от какво имам нужда.
|
||||
settings.event_create=Създаване
|
||||
settings.event_create_desc=Създаване на клон или маркер
|
||||
settings.event_delete=Delete
|
||||
settings.event_delete_desc=Branch or tag deleted
|
||||
settings.event_delete=Изтриване
|
||||
settings.event_delete_desc=Изтрит клон или етикет
|
||||
settings.event_fork=Fork
|
||||
settings.event_fork_desc=Repository forked
|
||||
settings.event_push=Предаване
|
||||
settings.event_push_desc=Git предаване към хранилището
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Заявка за сливане
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Активна
|
||||
@@ -799,7 +858,8 @@ settings.delete_webhook=Изтрий уеб-куката
|
||||
settings.recent_deliveries=Последни изпращания
|
||||
settings.hook_type=Тип на куката
|
||||
settings.add_slack_hook_desc=Добавяне на интеграция със <a href="%s">Slack</a> във Вашето хранилище.
|
||||
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
|
||||
settings.add_discord_hook_desc=Добавяне на интеграция с <a href="%s">Discord</a> към хранилището.
|
||||
settings.add_dingtalk_hook_desc=Добавяне на интеграция с <a href="%s">Dingtalk</a> към хранилището.
|
||||
settings.slack_token=API ключ
|
||||
settings.slack_domain=Домейн
|
||||
settings.slack_channel=Канал
|
||||
@@ -816,6 +876,8 @@ settings.add_key_success=Новият ключ за внедряване '%s' е
|
||||
settings.deploy_key_deletion=Изтрий ключ за внедряване
|
||||
settings.deploy_key_deletion_desc=При изтриването на този ключ за внедряване ще се премахнат свързаните права за достъп до това хранилище. Желаете ли да продължите?
|
||||
settings.deploy_key_deletion_success=Ключът за внедряване е изтрит успешно!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Преглед на файлове
|
||||
diff.parent=родител
|
||||
@@ -880,9 +942,8 @@ team_name_helper=Ще използвате това име при спомена
|
||||
team_desc_helper=Каква е целта на този екип?
|
||||
team_permission_desc=Какво ниво на достъп трябва да има този екип?
|
||||
|
||||
form.name_reserved=Името на организацията '%s' е запазено.
|
||||
form.name_pattern_not_allowed=Име на организацията от вида '%s' не е разрешено.
|
||||
form.team_name_reserved=Team name '%s' is reserved.
|
||||
form.name_not_allowed=Organization name or pattern %q is not allowed.
|
||||
form.team_name_not_allowed=Team name or pattern %q is not allowed.
|
||||
|
||||
settings=Настройки
|
||||
settings.options=Опции
|
||||
@@ -954,12 +1015,19 @@ first_page=Първа
|
||||
last_page=Последна
|
||||
total=Общо: %d
|
||||
|
||||
dashboard.build_info=Build Information
|
||||
dashboard.app_ver=Application version
|
||||
dashboard.git_version=Git version
|
||||
dashboard.go_version=Go version
|
||||
dashboard.build_time=Build time
|
||||
dashboard.build_commit=Build commit
|
||||
dashboard.statistic=Статистика
|
||||
dashboard.operations=Операции
|
||||
dashboard.system_status=Наблюдение на системния статус
|
||||
dashboard.statistic_info=Gogs базата данни има <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.select_operation_to_run=Please select operation to run
|
||||
dashboard.operation_run=Изпълни
|
||||
dashboard.clean_unbind_oauth=Почисти несвързани OAuthes
|
||||
dashboard.clean_unbind_oauth_success=Всички несвързани OAuthes са изтрити успешно.
|
||||
@@ -1049,13 +1117,14 @@ repos.private=Частно
|
||||
repos.watches=Наблюдавания
|
||||
repos.stars=Харесвания
|
||||
repos.issues=Задачи
|
||||
repos.size=Size
|
||||
repos.size=Размер
|
||||
|
||||
auths.auth_manage_panel=Управление на удостоверявания
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Добави нов начин на удостоверяване
|
||||
auths.name=Име
|
||||
auths.type=Тип
|
||||
auths.enabled=Активно
|
||||
auths.default=Default
|
||||
auths.updated=Последна модификация
|
||||
auths.auth_type=Тип на удостоверяване
|
||||
auths.auth_name=Име на удостоверяване
|
||||
@@ -1064,15 +1133,21 @@ auths.domain=Домейн
|
||||
auths.host=Сървър
|
||||
auths.port=Порт
|
||||
auths.bind_dn=Име (DN) за свръзка
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_password=Парола за свръзка
|
||||
auths.bind_password_helper=Внимание: Тази парола се запазва некриптирана. Моля използвайте потребител, който няма административен достъп.
|
||||
auths.user_base=Базов OU за търсене
|
||||
auths.user_dn=Име (DN) на потребител
|
||||
auths.attribute_username=Атрибут за име
|
||||
auths.attribute_username_placeholder=Оставете празно за да използва потребителското име от форма за вписване.
|
||||
auths.attribute_name=Атрибут за име
|
||||
auths.attribute_name=First Name Attribute
|
||||
auths.attribute_surname=Атрибут за фамилия
|
||||
auths.attribute_mail=Атрибут за ел. поща
|
||||
auths.verify_group_membership=Verify group membership
|
||||
auths.group_search_base_dn=Group Search Base DN
|
||||
auths.group_filter=Group Filter
|
||||
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
|
||||
auths.user_attribute_listed_in_group=User Attribute Listed in Group
|
||||
auths.attributes_in_bind=Извличане на атрибути от контекста на име (DN) за свръзка
|
||||
auths.filter=Филтър за потребител
|
||||
auths.admin_filter=Филтър за администратор
|
||||
@@ -1086,9 +1161,9 @@ auths.enable_tls=Включи TLS криптиране
|
||||
auths.skip_tls_verify=Пропусни проверка на TLS сертификат
|
||||
auths.pam_service_name=Име на PAM услуга
|
||||
auths.enable_auto_register=Включи автоматична регистрация
|
||||
auths.tips=Съвети
|
||||
auths.edit=Редактирай настройки за удостоверяване
|
||||
auths.activated=Това удостоверяване е активно
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Новото удостоверяване '%s' е добавено успешно.
|
||||
auths.update_success=Настройките за удостоверяване са запазени успешно.
|
||||
auths.update=Запази настройки за удостоверяване
|
||||
@@ -1098,117 +1173,188 @@ auths.delete_auth_desc=Това удостоверяване ще бъде из
|
||||
auths.still_in_used=Това удостоверяване все още се използва от някои потребители. Моля изтрийте ги или ги конвертирайте до друг тип на влизане първо.
|
||||
auths.deletion_success=Удостоверяването е изтрито успешно!
|
||||
auths.login_source_exist=Източник за валидация на потребители "%s" вече съществува.
|
||||
auths.github_api_endpoint=API Endpoint
|
||||
|
||||
config.not_set=(not set)
|
||||
config.server_config=Сървърни настройки
|
||||
config.app_name=Име на приложението
|
||||
config.app_ver=Версия на приложението
|
||||
config.app_url=URL адрес на приложението
|
||||
config.domain=Домейн
|
||||
config.offline_mode=Офлайн режим
|
||||
config.disable_router_log=Изключи журнал на маршрутизатора
|
||||
config.brand_name=Brand name
|
||||
config.run_user=Потребителски контекст
|
||||
config.run_mode=Режим на изпълнение
|
||||
config.git_version=Git версия
|
||||
config.static_file_root_path=Път към статични файлове
|
||||
config.log_file_root_path=Път към журнал
|
||||
config.reverse_auth_user=Потребителско име при обратно удостоверяване
|
||||
config.server.external_url=External URL
|
||||
config.server.domain=Domain
|
||||
config.server.protocol=Protocol
|
||||
config.server.http_addr=HTTP address
|
||||
config.server.http_port=HTTP port
|
||||
config.server.cert_file=Certificate file
|
||||
config.server.key_file=Key file
|
||||
config.server.tls_min_version=Minimum TLS version
|
||||
config.server.unix_socket_permission=Unix socket permission
|
||||
config.server.local_root_url=Local root URL
|
||||
config.server.offline_mode=Offline mode
|
||||
config.server.disable_router_log=Disable router log
|
||||
config.server.enable_gzip=Enable Gzip
|
||||
config.server.app_data_path=Application data path
|
||||
config.server.load_assets_from_disk=Load assets from disk
|
||||
config.server.landing_url=Landing URL
|
||||
|
||||
config.ssh_config=SSH конфигурация
|
||||
config.ssh_enabled=Активен
|
||||
config.ssh_start_builtin_server=Стартирай вграден сървър
|
||||
config.ssh_domain=Домейн
|
||||
config.ssh_port=Порт
|
||||
config.ssh_listen_port=Порт за слушане
|
||||
config.ssh_root_path=Основен път
|
||||
config.ssh_key_test_path=Път до ключове
|
||||
config.ssh_keygen_path=Път до генератор ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Проверка за минимален размер на ключове
|
||||
config.ssh_minimum_key_sizes=Минимален размер на ключове
|
||||
config.ssh.enabled=Enabled
|
||||
config.ssh.domain=Exposed domain
|
||||
config.ssh.port=Exposed port
|
||||
config.ssh.root_path=Root path
|
||||
config.ssh.keygen_path=Keygen path
|
||||
config.ssh.key_test_path=Key test path
|
||||
config.ssh.minimum_key_size_check=Minimum key size check
|
||||
config.ssh.minimum_key_sizes=Minimum key sizes
|
||||
config.ssh.rewrite_authorized_keys_at_start=Rewrite "authorized_keys" at start
|
||||
config.ssh.start_builtin_server=Start builtin server
|
||||
config.ssh.listen_host=Listen host
|
||||
config.ssh.listen_port=Listen port
|
||||
config.ssh.server_ciphers=Server ciphers
|
||||
config.ssh.server_macs=Server MACs
|
||||
config.ssh.server_algorithms=Server algorithms
|
||||
|
||||
config.repo_config=Repository Configuration
|
||||
config.repo_root_path=Основен път към хранилища
|
||||
config.script_type=Тип на скрипта
|
||||
config.repo_force_private=Force Private
|
||||
config.max_creation_limit=Max Creation Limit
|
||||
config.preferred_licenses=Preferred Licenses
|
||||
config.disable_http_git=Disable HTTP Git
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
config.repo_config=Конфигурация на хранилище
|
||||
config.repo.root_path=Root path
|
||||
config.repo.script_type=Script type
|
||||
config.repo.ansi_chatset=ANSI charset
|
||||
config.repo.force_private=Force private
|
||||
config.repo.max_creation_limit=Max creation limit
|
||||
config.repo.preferred_licenses=Preferred licenses
|
||||
config.repo.disable_http_git=Disable HTTP Git
|
||||
config.repo.enable_local_path_migration=Enable local path migration
|
||||
config.repo.enable_raw_file_render_mode=Enable raw file render mode
|
||||
config.repo.commits_fetch_concurrency=Commits fetch concurrency
|
||||
config.repo.editor.line_wrap_extensions=Editor line wrap extensions
|
||||
config.repo.editor.previewable_file_modes=Editor previewable file modes
|
||||
config.repo.upload.enabled=Upload enabled
|
||||
config.repo.upload.temp_path=Upload temporary path
|
||||
config.repo.upload.allowed_types=Upload allowed types
|
||||
config.repo.upload.file_max_size=Upload file size limit
|
||||
config.repo.upload.max_files=Upload files limit
|
||||
|
||||
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.db.type=Type
|
||||
config.db.host=Host
|
||||
config.db.name=Name
|
||||
config.db.schema=Schema
|
||||
config.db.schema_helper=(for "postgres" only)
|
||||
config.db.user=User
|
||||
config.db.ssl_mode=SSL mode
|
||||
config.db.ssl_mode_helper=(for "postgres" only)
|
||||
config.db.path=Path
|
||||
config.db.path_helper=(for "sqlite3"only)
|
||||
config.db.max_open_conns=Maximum open connections
|
||||
config.db.max_idle_conns=Maximum idle connections
|
||||
|
||||
config.service_config=Настройка на услугата
|
||||
config.register_email_confirm=Изисквай потвърждение на адреси на ел. поща
|
||||
config.disable_register=Изключи нови регистрации
|
||||
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.security_config=Security configuration
|
||||
config.security.login_remember_days=Login remember days
|
||||
config.security.cookie_remember_name=Remember cookie
|
||||
config.security.cookie_username=Username cookie
|
||||
config.security.cookie_secure=Enable secure cookie
|
||||
config.security.reverse_proxy_auth_user=Reverse proxy authentication header
|
||||
config.security.enable_login_status_cookie=Enable login status cookie
|
||||
config.security.login_status_cookie_name=Login status cookie
|
||||
config.security.local_network_allowlist=Local network allowlist
|
||||
|
||||
config.webhook_config=Конфигурация на уеб-куки
|
||||
config.queue_length=Дължина на опашка
|
||||
config.deliver_timeout=Време за отказ при изпращане
|
||||
config.skip_tls_verify=Пропусни проверка на TLS
|
||||
config.email_config=Email configuration
|
||||
config.email.enabled=Enabled
|
||||
config.email.subject_prefix=Subject prefix
|
||||
config.email.host=Host
|
||||
config.email.from=From
|
||||
config.email.user=User
|
||||
config.email.disable_helo=Disable HELO
|
||||
config.email.helo_hostname=HELO hostname
|
||||
config.email.skip_verify=Skip certificate verify
|
||||
config.email.use_certificate=Use custom certificate
|
||||
config.email.cert_file=Certificate file
|
||||
config.email.key_file=Key file
|
||||
config.email.use_plain_text=Use plain text
|
||||
config.email.add_plain_text_alt=Add plain text alternative
|
||||
config.email.send_test_mail=Send test email
|
||||
config.email.test_mail_failed=Failed to send test email to '%s': %v
|
||||
config.email.test_mail_sent=Test email has been sent to '%s'.
|
||||
|
||||
config.mailer_config=Конфигурация на мейлър
|
||||
config.mailer_enabled=Активен
|
||||
config.mailer_disable_helo=Изключи HELO
|
||||
config.mailer_name=Име
|
||||
config.mailer_host=Сървър
|
||||
config.mailer_user=Потребител
|
||||
config.send_test_mail=Изпрати тестово писмо
|
||||
config.test_mail_failed=Невъзможно изпращане на тестово писмо до '%s': %v
|
||||
config.test_mail_sent=Тестово писмо беше изпратено до '%s'.
|
||||
config.auth_config=Authentication configuration
|
||||
config.auth_custom_logout_url=Custom logout URL
|
||||
config.auth.activate_code_lives=Activate code lives
|
||||
config.auth.reset_password_code_lives=Reset password code lives
|
||||
config.auth.require_email_confirm=Require email confirmation
|
||||
config.auth.require_sign_in_view=Require sign in view
|
||||
config.auth.disable_registration=Disable registration
|
||||
config.auth.enable_registration_captcha=Enable registration captcha
|
||||
config.auth.enable_reverse_proxy_authentication=Enable reverse proxy authentication
|
||||
config.auth.enable_reverse_proxy_auto_registration=Enable reverse proxy auto registration
|
||||
config.auth.reverse_proxy_authentication_header=Reverse proxy authentication header
|
||||
|
||||
config.oauth_config=OAuth конфигурация
|
||||
config.oauth_enabled=Активна
|
||||
|
||||
config.cache_config=Конфигурация на кеша
|
||||
config.cache_adapter=Кеш адаптер
|
||||
config.cache_interval=Кеш интервал
|
||||
config.cache_conn=Кеш на връзката
|
||||
config.user_config=User configuration
|
||||
config.user.enable_email_notify=Enable email notification
|
||||
|
||||
config.session_config=Конфигурация на сесии
|
||||
config.session_provider=Доставчик на сесии
|
||||
config.provider_config=Конфигурация на доставчик
|
||||
config.cookie_name=Име на бисквитката
|
||||
config.enable_set_cookie=Включи използване на бисквитки
|
||||
config.gc_interval_time=GC през интервал
|
||||
config.session_life_time=Период на валидност на сесиите
|
||||
config.https_only=HTTPS само
|
||||
config.cookie_life_time=Период на валидност на бисквитките
|
||||
config.session.provider=Provider
|
||||
config.session.provider_config=Provider config
|
||||
config.session.cookie_name=Cookie
|
||||
config.session.https_only=HTTPS only
|
||||
config.session.gc_interval=GC interval
|
||||
config.session.max_life_time=Max life time
|
||||
config.session.csrf_cookie_name=CSRF cookie
|
||||
|
||||
config.cache_config=Конфигурация на кеша
|
||||
config.cache.adapter=Adapter
|
||||
config.cache.interval=GC interval
|
||||
config.cache.host=Host
|
||||
|
||||
config.http_config=Конфигуриране на HTTP
|
||||
config.http.access_control_allow_origin=Access control allow origin
|
||||
|
||||
config.attachment_config=Attachment configuration
|
||||
config.attachment.enabled=Enabled
|
||||
config.attachment.path=Path
|
||||
config.attachment.allowed_types=Allowed types
|
||||
config.attachment.max_size=Size limit
|
||||
config.attachment.max_files=Files limit
|
||||
|
||||
config.release_config=Release configuration
|
||||
config.release.attachment.enabled=Attachment enabled
|
||||
config.release.attachment.allowed_types=Attachment allowed types
|
||||
config.release.attachment.max_size=Attachment size limit
|
||||
config.release.attachment.max_files=Attachment files limit
|
||||
|
||||
config.picture_config=Конфигурация на изображения
|
||||
config.picture_service=Услуги за снимки
|
||||
config.disable_gravatar=Изключи Gravatar
|
||||
config.enable_federated_avatar=Включи външни аватари
|
||||
config.picture.avatar_upload_path=User avatar upload path
|
||||
config.picture.repo_avatar_upload_path=Repository avatar upload path
|
||||
config.picture.gravatar_source=Gravatar source
|
||||
config.picture.disable_gravatar=Disable Gravatar
|
||||
config.picture.enable_federated_avatar=Enable federated avatars
|
||||
|
||||
config.mirror_config=Mirror configuration
|
||||
config.mirror.default_interval=Default interval
|
||||
|
||||
config.webhook_config=Конфигурация на уеб-куки
|
||||
config.webhook.types=Types
|
||||
config.webhook.deliver_timeout=Deliver timeout
|
||||
config.webhook.skip_tls_verify=Skip TLS verify
|
||||
|
||||
config.git_config=Конфигурация на git
|
||||
config.git_disable_diff_highlight=Забрани оцветяване на синтаксис при преглед на разлики
|
||||
config.git_max_diff_lines=Максимален брой различни редове (за файл)
|
||||
config.git_max_diff_line_characters=Максимален брой различни символи (на ред)
|
||||
config.git_max_diff_files=Максимален брой променени файлове (при показване)
|
||||
config.git_gc_args=Аргументи на GC
|
||||
config.git_migrate_timeout=Време за отказ при миграция
|
||||
config.git_mirror_timeout=Време за отказ при синхр. на огледало
|
||||
config.git_clone_timeout=Време за отказ при клониране
|
||||
config.git_pull_timeout=Време за отказ при сливане
|
||||
config.git_gc_timeout=Време за отказ при GC
|
||||
config.git.disable_diff_highlight=Disable diff syntax highlight
|
||||
config.git.max_diff_lines=Diff lines limit (for a single file)
|
||||
config.git.max_diff_line_characters=Diff characters limit (for a single line)
|
||||
config.git.max_diff_files=Diff files limit (for a single diff)
|
||||
config.git.gc_args=GC arguments
|
||||
config.git.migrate_timeout=Migration timeout
|
||||
config.git.mirror_timeout=Mirror fetch timeout
|
||||
config.git.clone_timeout=Clone timeout
|
||||
config.git.pull_timeout=Pull timeout
|
||||
config.git.gc_timeout=GC timeout
|
||||
|
||||
config.lfs_config=LFS configuration
|
||||
config.lfs.storage=Storage
|
||||
config.lfs.objects_path=Objects path
|
||||
|
||||
config.log_config=Конфигурация на журнал
|
||||
config.log_mode=Mode
|
||||
config.log_options=Options
|
||||
config.log_file_root_path=Път към журнал
|
||||
config.log_mode=Режим
|
||||
config.log_options=Настройки
|
||||
|
||||
monitor.cron=Cron задачи
|
||||
monitor.name=Име
|
||||
@@ -1237,7 +1383,6 @@ notices.delete_success=Системните съобщения са изтрит
|
||||
|
||||
[action]
|
||||
create_repo=създаде хранилище <a href="%s"> %s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=преименува хранилище от <code>%[1]s</code> на <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=предаде към <a href="%[1]s/src/%[2]s">%[3]s</a> в <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Сравнение между тези %d ревизии
|
||||
@@ -1250,10 +1395,14 @@ create_pull_request=`създаде заявка за сливане <a href="%s
|
||||
close_pull_request=`затвори заявка за сливане <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
reopen_pull_request=`повторно отвори заявка за сливане <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`обедини заявка за сливане <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
create_branch=създаде клон <a href="%[1]s/src/%[2]s"> %[3]s</a> % <a href="%[1]s">[4]s</a>
|
||||
delete_branch=изтри клон <code>%[2]s</code> % <a href="%[1]s">[3]s</a>
|
||||
push_tag=предаде маркер <a href="%s/src/%s">%[2]s</a> към <a href="%[1]s">[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=изтри етикет <code>%[2]s</code> % <a href="%[1]s">[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=преди
|
||||
@@ -1275,6 +1424,7 @@ months=%[2]s %[1]d месеца
|
||||
years=%[2]s %[1]d години
|
||||
raw_seconds=секунди
|
||||
raw_minutes=минути
|
||||
raw_hours=hours
|
||||
|
||||
[dropzone]
|
||||
default_message=Тук пуснете файлове с влачене или просто щракнете за избор на файл за качване.
|
||||
|
||||
@@ -9,7 +9,6 @@ sign_out=Odhlásit se
|
||||
sign_up=Registrovat se
|
||||
register=Registrovat se
|
||||
website=Webové stránky
|
||||
version=Verze
|
||||
page=Strana
|
||||
template=Šablona
|
||||
language=Jazyk
|
||||
@@ -23,10 +22,10 @@ password=Heslo
|
||||
re_type=Znovu zadat
|
||||
captcha=CAPTCHA
|
||||
|
||||
repository=Repositář
|
||||
repository=Repozitář
|
||||
organization=Organizace
|
||||
mirror=Zrcadlo
|
||||
new_repo=Nový repositář
|
||||
new_repo=Nový repozitář
|
||||
new_migrate=Nové přenesení
|
||||
new_mirror=Nové zrcadlo
|
||||
new_fork=Nový repositář rozštěpení
|
||||
@@ -44,19 +43,24 @@ issues=Úkoly
|
||||
|
||||
cancel=Zrušit
|
||||
|
||||
[status]
|
||||
page_not_found=Page Not Found
|
||||
internal_server_error=Internal Server Error
|
||||
|
||||
[install]
|
||||
install=Instalace
|
||||
title=Kroky instalace pro první běh
|
||||
title=Kroky instalace pro první spuštění
|
||||
docker_helper=Spouštíte-li Gogs uvnitř Dockeru, přečtěte si prosím pečlivě <a target="_blank" href="%s">návod</a>, než něco změníte na této stránce!
|
||||
requite_db_desc=Gogs vyžaduje MySQL, PostgreSQL, SQLite3, MSSQL nebo TiDB.
|
||||
requite_db_desc=Gogs requires MySQL, PostgreSQL, SQLite3 or TiDB (via MySQL protocol).
|
||||
db_title=Nastavení databáze
|
||||
db_type=Typ databáze
|
||||
host=Server
|
||||
user=Uživatel
|
||||
password=Heslo
|
||||
db_name=Název databáze
|
||||
db_schema=Schema
|
||||
db_helper=Prosím, pro MySQL použijte INNODB engine se znakovou sadou utf8_general_ci.
|
||||
ssl_mode=SSL Mód
|
||||
ssl_mode=SSL režim
|
||||
path=Cesta
|
||||
sqlite_helper=Cesta k SQLite3 databázi. <br>Prosím, použijte absolutní cestu, pokud startujete Gogs jako službu.
|
||||
err_empty_db_path=Cesta k SQLite3 databázi nemůže být prázdná.
|
||||
@@ -81,9 +85,10 @@ http_port_helper=Číslo portu, na kterém aplikace naslouchá.
|
||||
app_url=URL aplikace
|
||||
app_url_helper=Toto ovlivňuje URL klonů skrze HTTP/HTTPS a odkazů v e-mailech.
|
||||
log_root_path=Adresář systémových záznamů
|
||||
log_root_path_helper=Adresář, kam se budou zapisovat systémové záznamy.
|
||||
log_root_path_helper=Adresář, kam se budou zapisovat soubory se systémovými záznamy.
|
||||
enable_console_mode=Povolit režim konzole
|
||||
enable_console_mode_popup=Mimo zápisu do souboru vytisknout systémové záznamy i do konzole.
|
||||
default_branch=Default Branch
|
||||
|
||||
optional_title=Dodatečná nastavení
|
||||
email_title=Nastavení e-mailové služby
|
||||
@@ -119,11 +124,13 @@ sqlite3_not_available=Vaše verze vydání Gogs nepodporuje SQLite3, prosím st
|
||||
invalid_db_setting=Nastavení databáze není správné: %v
|
||||
invalid_repo_path=Kořenový adresář repositáře není správný: %v
|
||||
run_user_not_match=Uživatel pro spuštění není aktuální uživatel: %s -> %s
|
||||
smtp_host_missing_port=V adrese SMTP serveru chybí číslo portu.
|
||||
invalid_smtp_from=Hodnota položky SMTP Od: není zadána správně: %v
|
||||
save_config_failed=Uložení konfigurace se nezdařilo: %v
|
||||
init_failed=Nepodařilo se inicializovat aplikaci: %v
|
||||
invalid_admin_setting=Nastavení účtu správce není správné: %v
|
||||
install_success=Vítejte! Jsme rádi, že jste si vybrali Gogs. Bavte se a opatrujte se.
|
||||
invalid_log_root_path=Kořenový adresář systémových záznamů není správný: %v
|
||||
invalid_log_root_path=Kořenový adresář souborů systémových záznamů není správný: %v
|
||||
|
||||
[home]
|
||||
uname_holder=Uživatelské jméno nebo e-mailová adresa
|
||||
@@ -148,26 +155,36 @@ search=Vyhledat
|
||||
create_new_account=Vytvořit nový účet
|
||||
register_hepler_msg=Již máte účet? Přihlašte se!
|
||||
social_register_hepler_msg=Již máte účet? Připojte se!
|
||||
disable_register_prompt=Omlouvám se, ale registrace jsou vypnuty. Prosím, spojte se správcem systému.
|
||||
disable_register_mail=Omlouvám se, e-mailové služby byly vypnuty. Prosím, spojte se správce serveru.
|
||||
disable_register_prompt=Omlouváme se, ale registrace jsou vypnuty. Kontaktujte správce systému.
|
||||
disable_register_mail=Omlouváme se, ale e-mailové služby jsou vypnuté. Kontaktujte správce systému.
|
||||
auth_source=Zdroj ověření
|
||||
local=Lokální
|
||||
remember_me=Zapamatovat si mne
|
||||
forgot_password=Zapomenuté heslo
|
||||
forget_password=Zapomněli jste heslo?
|
||||
sign_up_now=Potřebujete účet? Zaregistrujte se.
|
||||
confirmation_mail_sent_prompt=Nový potvrzovací e-mail byl zaslán na <b>%s</b>, prosím, zkontrolujte si vaši doručenou poštu během následující %d hodin pro dokončení registračního procesu.
|
||||
confirmation_mail_sent_prompt=Na adresu <b>%s</b> byl zaslán nový potvrzovací e-mail. Zkontrolujte prosím vaši doručenou poštu během následujících %d hodin pro dokončení registračního procesu.
|
||||
active_your_account=Aktivujte si váš účet
|
||||
prohibit_login=Přihlášení zakázáno
|
||||
prohibit_login_desc=Vašemu účtu je zakázáno se přihlásit, kontaktujte prosím správce serveru.
|
||||
resent_limit_prompt=Omlouvám se, ale před chvílí jste požádal o aktivační e-mail. Prosím, počkejte 3 minuty a pak to zkuste znovu.
|
||||
resent_limit_prompt=Omlouváme se, ale před chvílí jste požádal o zaslání aktivačního e-mailu. Počkejte prosím 3 minuty a pak to zkuste znovu.
|
||||
has_unconfirmed_mail=Zdravím, %s, máte nepotvrzenou e-mailovou adresu (<b>%s</b>). Pokud jste nedostali potvrzovací e-mail nebo potřebujete zaslat nový, klikněte prosím na tlačítko níže.
|
||||
resend_mail=Klikněte zde pro odeslání aktivačního e-mailu
|
||||
send_reset_mail=Klikněte zde pro (znovu)poslání e-mailu pro změnu vašeho hesla
|
||||
resend_mail=Klikněte zde pro opakované odeslání aktivačního e-mailu
|
||||
send_reset_mail=Klikněte zde pro (opakované) odeslání e-mailu pro obnovu vašeho hesla
|
||||
reset_password=Obnova vašeho hesla
|
||||
invalid_code=Omlouvám se, ale kód potvrzení vašeho e-mailu vypršel nebo není správný.
|
||||
invalid_code=Omlouváme se, ale kód z vašeho potvrzovacího e-mailu už vypršel nebo není správný.
|
||||
reset_password_helper=Klikněte zde pro obnovu vašeho hesla
|
||||
password_too_short=Délka hesla musí být minimálně 6 znaků.
|
||||
non_local_account=Externí účty nemohou měnit hesla přes Gogs.
|
||||
|
||||
login_two_factor=Dvoufaktorové ověření
|
||||
login_two_factor_passcode=Přístupový kód ověření
|
||||
login_two_factor_enter_recovery_code=Zadejte obnovovací kód dvoufaktorového ověření
|
||||
login_two_factor_recovery=Obnovení dvoufaktorového ověření
|
||||
login_two_factor_recovery_code=Obnovovací kód
|
||||
login_two_factor_enter_passcode=Zadejte přístupový kód dvoufaktorového ověření
|
||||
login_two_factor_invalid_recovery_code=Obnovovací kód již byl použit nebo není platný.
|
||||
|
||||
[mail]
|
||||
activate_account=Prosím, aktivujte si váš účet
|
||||
activate_email=Ověřte vaši e-mailovou adresu
|
||||
@@ -186,7 +203,7 @@ RepoName=Název repositáře
|
||||
Email=E-mailová adresa
|
||||
Password=Heslo
|
||||
Retype=Zadejte znovu heslo
|
||||
SSHTitle=Název klíče SSH
|
||||
SSHTitle=Název SSH klíče
|
||||
HttpsUrl=HTTPS URL
|
||||
PayloadUrl=URL nákladu
|
||||
TeamName=Název týmu
|
||||
@@ -201,18 +218,18 @@ TreeName=Cesta k souboru
|
||||
Content=Obsah
|
||||
|
||||
require_error=` nemůže být prázdný.`
|
||||
alpha_dash_error=` musí být pouze písmena, číslice či znaky - a _ .`
|
||||
alpha_dash_dot_error=` musí být pouze písmena, číslice, tečka, čárka či znaky - a _ .`
|
||||
alpha_dash_dot_slash_error=` musí být validní písmena, čísla nebo pomlčka, podtržítko či tečka, čárka a nebo lomítka.`
|
||||
size_error=` musí být minimálně velikosti %s.`
|
||||
alpha_dash_error=` smí obsahovat pouze písmena, číslice, pomlčku a podtržítko.`
|
||||
alpha_dash_dot_error=` smí obsahovat pouze písmena, číslice, tečku, čárku, pomlčku a podtržítko.`
|
||||
alpha_dash_dot_slash_error=` smí obsahovat pouze písmena, číslice, tečku, čárku, pomlčku, podtržítko a lomítko.`
|
||||
size_error=` musí mít velikost %s.`
|
||||
min_size_error=` musí obsahovat nejméně %s znaků.`
|
||||
max_size_error=` musí obsahovat maximálně %s znaků.`
|
||||
email_error=` není správná e-mailová adresa.`
|
||||
url_error=` není správná URL.`
|
||||
email_error=` není platná e-mailová adresa.`
|
||||
url_error=` není platná URL.`
|
||||
include_error=` musí obsahovat řetězec '%s'.`
|
||||
unknown_error=Neznámá chyba:
|
||||
captcha_incorrect=Zadaná CAPTCHA se neshoduje.
|
||||
password_not_match=Heslo a heslo pro potvrzení nejsou shodné.
|
||||
password_not_match=Heslo a jeho potvrzení se neshodují.
|
||||
|
||||
username_been_taken=Uživatelské jméno je již obsazeno.
|
||||
repo_name_been_taken=Název repositáře je již obsazen.
|
||||
@@ -220,26 +237,27 @@ org_name_been_taken=Název organizace je již obsazen.
|
||||
team_name_been_taken=Název týmu je již obsazen.
|
||||
email_been_used=E-mailová adresa je již použita.
|
||||
username_password_incorrect=Chybné uživatelské jméno nebo heslo.
|
||||
auth_source_mismatch=Vybraný zdroj ověření není propojen s uživatelem.
|
||||
enterred_invalid_repo_name=Ujistěte se, prosím, že zadaný název repositáře je správný.
|
||||
enterred_invalid_owner_name=Ujistěte se, prosím, že jméno vlastníka je zadáno správně.
|
||||
enterred_invalid_password=Ujistěte se, prosím, že zadané heslo je správné.
|
||||
user_not_exist=Zadaný uživatel neexistuje.
|
||||
last_org_owner=Odstranění posledního uživatele z týmu vlastníka není dovoleno, neboť vždy musí v každé organizaci existovat jeden vlastník.
|
||||
last_org_owner=Odstranění posledního uživatele z týmu vlastníků není dovoleno, protože každá organizace musí mít alespoň jednoho vlastníka.
|
||||
|
||||
invalid_ssh_key=Omlouvám se, ale není možné ověřit váš klíč SSH: %s
|
||||
unable_verify_ssh_key=Gogs nemohl ověřit váš klíč SSH, ale předpokládáme, že je platný, nicméně zkontrolujte jej prosím.
|
||||
invalid_ssh_key=Omlouváme se, ale váš SSH klíč není možné ověřit: %s
|
||||
unable_verify_ssh_key=Gogs nemohl ověřit váš SSH klíč, ale budeme předpokládat, že je platný. Přesto ho prosím zkontrolujte.
|
||||
auth_failed=Ověření selhalo: %v
|
||||
|
||||
still_own_repo=Váš účet stále vlastní minimálně jeden repositář. Musíte je nejdříve smazat nebo předat.
|
||||
still_has_org=Váš účet je stále členem minimálně jedné organizace. Je nutné ji nejdříve opustit nebo smazat vaše členství.
|
||||
still_own_repo=Váš účet stále vlastní nějaké repositáře. Nejdříve je musíte smazat nebo někomu předat.
|
||||
still_has_org=Váš účet je stále členem nějaké organizace. Je nutné ji nejdříve opustit nebo se vzdát členství.
|
||||
org_still_own_repo=Tato organizace stále vlastní repositáře, musíte je nejdříve smazat nebo předat.
|
||||
|
||||
target_branch_not_exist=Cílová větev neexistuje.
|
||||
|
||||
[user]
|
||||
change_avatar=Změnit vaši uživatelskou ikonu
|
||||
join_on=Připojil se dne
|
||||
repositories=Repositáře
|
||||
join_on=Zaregistroval se dne
|
||||
repositories=Repozitáře
|
||||
activity=Veřejná aktivita
|
||||
followers=Sledující
|
||||
starred=Oblíbené repositáře
|
||||
@@ -247,14 +265,14 @@ following=Sledovaní
|
||||
follow=Sledovat
|
||||
unfollow=Přestat sledovat
|
||||
|
||||
form.name_reserved=Uživatelské jméno '%s' je rezervováno.
|
||||
form.name_pattern_not_allowed=Vzor uživatelského jména '%s' není povolen.
|
||||
form.name_not_allowed=User name or pattern %q is not allowed.
|
||||
|
||||
[settings]
|
||||
profile=Profil
|
||||
password=Heslo
|
||||
avatar=Uživatelská ikona
|
||||
ssh_keys=Klíče SSH
|
||||
ssh_keys=SSH klíče
|
||||
security=Bezpečnost
|
||||
repos=Repositáře
|
||||
orgs=Organizace
|
||||
applications=Aplikace
|
||||
@@ -299,39 +317,62 @@ delete_email=Smazat
|
||||
email_deletion=Smazání e-mailové adresy
|
||||
email_deletion_desc=Smazání této e-mailové adresy odstraní návazné informace z vašeho účtu. Chcete pokračovat?
|
||||
email_deletion_success=E-mailová adresa byla smazána!
|
||||
email_deletion_primary=Cannot delete primary email address.
|
||||
add_new_email=Přidat novou e-mailovou adresu
|
||||
add_email=Přidat e-mailovou adresu
|
||||
add_email_confirmation_sent=Nový potvrzovací e-mail byl odeslán na adresu '%s', prosím zkontrolujte si vaši doručenou poštu během následujících %d hodin pro dokončení procesu potvrzení.
|
||||
add_email_success=Vaše nová e-mailová adresa byla přidána.
|
||||
|
||||
manage_ssh_keys=Správa klíčů SSH
|
||||
manage_ssh_keys=Správa SSH klíčů
|
||||
add_key=Přidat klíč
|
||||
ssh_desc=Toto je seznam klíčů SSH vašeho účtu. Jelikož tyto samotné klíče umožňují přístup k vašim repositářům, je velmi důležité, abyste je rozpoznal.
|
||||
ssh_helper=<strong>Nevíte jak?</strong> Podívejte se do příručky GitHubu na to <a href="%s">vytvoření vlastních klíčů SSH</a> nebo vyřešte <a href="%s">bežné problémy</a>, se kterými se můžete potkat při použití SSH.
|
||||
add_new_key=Přidat klíč SSH
|
||||
ssh_desc=Toto je seznam SSH klíčů vašeho účtu. Jelikož SSH klíče umožňují komukoliv plný přístup k vašim repositářům, je velmi důležité, abyste si byli jistí, že jsou skutečně vaše.
|
||||
ssh_helper=<strong>Nevíte jak?</strong> Podívejte se do příručky GitHubu jak si <a href="%s">vytvořit vlastní SSH klíč</a>, nebo na <a href="%s">řešení častých problémů</a>, na které můžete narazit při používání SSH.
|
||||
add_new_key=Přidat SSH klíč
|
||||
ssh_key_been_used=Obsah veřejného klíče byl použit.
|
||||
ssh_key_name_used=Veřejný klíč se stejným jménem již existuje.
|
||||
key_name=Název klíče
|
||||
key_content=Obsah
|
||||
add_key_success=Nový klíč SSH '%s' byl přidán!
|
||||
add_key_success=Byl přidán nový SSH klíč '%s'!
|
||||
delete_key=Smazat
|
||||
ssh_key_deletion=Smazání klíče SSH
|
||||
ssh_key_deletion=Smazání SSH klíče
|
||||
ssh_key_deletion_desc=Smazání tohoto klíče SSH odstraní všechny související přístupy k vašemu účtu. Chcete pokračovat?
|
||||
ssh_key_deletion_success=Klíč SSH byl smazán!
|
||||
ssh_key_deletion_success=SSH klíč byl úspěšně smazán!
|
||||
add_on=Přidán dne
|
||||
last_used=Naposledy použit dne
|
||||
no_activity=Žádná aktuální aktivita
|
||||
key_state_desc=Tento klíč je používán posledních 7 dní
|
||||
token_state_desc=Tato poukázka je používána posledních 7 dní
|
||||
|
||||
manage_social=Správa propojených sociálních účtů
|
||||
social_desc=Toto je seznam propojených sociálních účtů. Odpojte kterékoliv připojení, které nepoznáváte.
|
||||
unbind=Odpojit
|
||||
unbind_success=Sociální účet byl odpojen.
|
||||
two_factor=Dvoufaktorové ověření
|
||||
two_factor_status=Stav:
|
||||
two_factor_on=Zapnuto
|
||||
two_factor_off=Vypnuto
|
||||
two_factor_enable=Povoleno
|
||||
two_factor_disable=Zakázáno
|
||||
two_factor_view_recovery_codes=Uložte <a href="%s%s">vaše obnovovací kódy</a> na bezpečném místě. Můžete je použít jako přístupové kódy v případě, kdy ztratíte přístup k vaší ověřovací aplikaci.
|
||||
two_factor_http=Již nebudete mít možnost použít vaše přihlašovací údaje pro operace přes HTTP/HTTPS. Prosíme, vytvořte a používejte <a href="%[1]s%[2]s">osobní přístupové poukázky</a> jako vaše přístupové údaje, např. <code>%[3]s</code>.
|
||||
two_factor_enable_title=Povolit dvoufaktorové ověřování
|
||||
two_factor_scan_qr=Prosím, použijte vaši ověřovací aplikaci pro naskenování tohoto obrázku:
|
||||
two_factor_or_enter_secret=Nebo zadejte tajný kód:
|
||||
two_factor_then_enter_passcode=Pak zadejte přístupový kód:
|
||||
two_factor_verify=Ověřit
|
||||
two_factor_invalid_passcode=Zadaný přístupový kód není platný, prosím, zkuste to znova!
|
||||
two_factor_reused_passcode=Kód, který jste zadali už byl použit. Prosím, zkuste jiný!
|
||||
two_factor_enable_error=Povolení dvoufaktorového ověření selhalo: %v
|
||||
two_factor_enable_success=Dvoufaktorové ověření bylo pro váš účet povoleno!
|
||||
two_factor_recovery_codes_title=Obnovovací kódy dvoufaktorového ověření
|
||||
two_factor_recovery_codes_desc=Obnovovací kódy se používají, když dočasně ztratíte přístup k vaší ověřovací aplikaci. Každý obnovovací kód může být použit pouze jednou, <b>prosím, uchovejte tyto kódy na bezpečném míste</b>.
|
||||
two_factor_regenerate_recovery_codes=Vygenerovat znovu obnovovací kódy
|
||||
two_factor_regenerate_recovery_codes_error=Vygenerování obnovovacích kódů selhalo: %v
|
||||
two_factor_regenerate_recovery_codes_success=Nové obnovovací kódy byly vygenerovány!
|
||||
two_factor_disable_title=Zakázat dvoufaktorové ověření
|
||||
two_factor_disable_desc=Úroveň zabezpečení vaše účtu se s vypnutím dvoufaktorového ověření sníží. Chcete pokračovat?
|
||||
two_factor_disable_success=Dvoufaktorové ověření bylo zakázáno!
|
||||
|
||||
manage_access_token=Správa osobních přístupových poukázek
|
||||
generate_new_token=Vygenerovat novou poukázku
|
||||
tokens_desc=Poukázky, které jste vygeneroval, mohou být použity pro přístup k Gogs API.
|
||||
access_token_tips=The personal access token may be used as either username or password. It is recommended to use the "x-access-token" as the username and the personal access token as the password for Git applications.
|
||||
new_token_desc=Každá poukázka má úplný přístup k vašemu účtu.
|
||||
token_name=Název poukázky
|
||||
generate_token=Vygenerovat poukázku
|
||||
@@ -340,6 +381,7 @@ delete_token=Smazat
|
||||
access_token_deletion=Smazání osobní přístupové poukázky
|
||||
access_token_deletion_desc=Smazáním této osobní přístupové poukázky odstraní všechen související přístup aplikace. Chcete pokračovat?
|
||||
delete_token_success=Osobní přístupová poukázka byla odstraněna! Nezapomeňte také změnit nastavení vaší aplikace.
|
||||
token_name_exists=Poukázka se stejným jménem již existtuje.
|
||||
|
||||
orgs.none=Nejste členem žádné organizace.
|
||||
orgs.leave_title=Opustit organizaci
|
||||
@@ -361,7 +403,9 @@ owner=Vlastník
|
||||
repo_name=Název repositáře
|
||||
repo_name_helper=Dobrý název repositáře se většinou skládá z krátkých, zapamatovatelných a unikátních klíčových slov.
|
||||
visibility=Viditelnost
|
||||
unlisted=Unlisted
|
||||
visiblity_helper=Tento repositář je <span class="ui red text">soukromý</span>
|
||||
unlisted_helper=This repository is <span class="ui red text">Unlisted</span>
|
||||
visiblity_helper_forced=Správce vynutil na všech nových repositářích, aby byly <span class="ui red text">soukromé</span>
|
||||
visiblity_fork_helper=(Změna této hodnoty ovlivní všechny repositáře rozštěpení)
|
||||
clone_helper=Potřebujete pomoci s klonováním? Navštivte <a target="_blank" href="%s">nápovědu</a>!
|
||||
@@ -387,10 +431,11 @@ mirror_last_synced=Naposledy synchronizováno
|
||||
watchers=Sledující
|
||||
stargazers=Sledující
|
||||
forks=Rozštěpení
|
||||
repo_description_helper=Popis repozitáře. Maximální délka 512 znaků.
|
||||
repo_description_length=Dostupné znaky
|
||||
|
||||
form.reach_limit_of_creation=Vlastník dosáhl maximálního počtu %d vytvořených repositořů.
|
||||
form.name_reserved=Název repositáře '%s' je rezervován.
|
||||
form.name_pattern_not_allowed=Vzor názvu repositáře '%s' není povolen.
|
||||
form.name_not_allowed=Repository name or pattern %q is not allowed.
|
||||
|
||||
need_auth=Ověření je vyžadováno
|
||||
migrate_type=Typ přenesení
|
||||
@@ -401,6 +446,7 @@ migrate.clone_address_desc=Toto může být HTTP/HTTPS/GIT URL.
|
||||
migrate.clone_address_desc_import_local=Máte povoleno přenést repositář pomocí lokální cesty na serveru.
|
||||
migrate.permission_denied=Není vám dovoleno importovat místní repositáře.
|
||||
migrate.invalid_local_path=Neplatná místní cesta, buď neexistuje nebo není adresářem.
|
||||
migrate.clone_address_resolved_to_blocked_local_address=Clone address resolved to a local network address that is implicitly blocked.
|
||||
migrate.failed=Přenesení selhalo: %v
|
||||
|
||||
mirror_from=zrcadlo
|
||||
@@ -429,7 +475,7 @@ filter_branch_and_tag=Filtr pro větev nebo značku
|
||||
branches=Větve
|
||||
tags=Značky
|
||||
issues=Úkoly
|
||||
pulls=Požadavky na natažení
|
||||
pulls=Pull Requesty
|
||||
labels=Štítky
|
||||
milestones=Milníky
|
||||
commits=Revize
|
||||
@@ -448,6 +494,8 @@ branches.stale_branches=Zastaralé větve
|
||||
branches.all=Všechny větve
|
||||
branches.updated_by=%[2]s změnil %[1]s
|
||||
branches.change_default_branch=Změnit výchozí větev
|
||||
branches.default_deletion_not_allowed=Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed=Cannot delete a protected branch.
|
||||
|
||||
editor.new_file=Nový soubor
|
||||
editor.upload_file=Nahrát soubor
|
||||
@@ -484,6 +532,7 @@ editor.file_changed_while_editing=Obsah souboru se změnil od začátku úprav.
|
||||
editor.file_already_exists=Soubor '%s' již v tomto repositáři existuje.
|
||||
editor.no_changes_to_show=Žádné změny k zobrazení.
|
||||
editor.fail_to_update_file=Vytvoření nebo změna souboru '%s' skončila chybou: %v
|
||||
editor.fail_to_delete_file=Nepodařilo se smazat soubor '%s' kvůli chybě: %v
|
||||
editor.add_subdir=Přidat podadresář...
|
||||
editor.unable_to_upload_files=Nepodařilo se nahrát soubor do '%s'. Chyba: %v
|
||||
editor.upload_files_to_dir=Nahrát soubory do '%s'
|
||||
@@ -586,6 +635,7 @@ pulls.compare_compare=porovnat
|
||||
pulls.filter_branch=Filtrovat větev
|
||||
pulls.no_results=Nebyly nalezeny žádné výsledky.
|
||||
pulls.nothing_to_compare=Není co porovnávat, protože základ a hlavní větve jsou shodné.
|
||||
pulls.nothing_merge_base=Není co porovnávat, protože tyto dvě větve mají úplně jinou historii.
|
||||
pulls.has_pull_request=`Požadavek na natažení mezi těmito větvemi již existuje: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Vytvořit požadavek na natažení
|
||||
pulls.title_desc=chce sloučit %[1]d revizí z větve <code>%[2]s</code> do větve <code>%[3]s</code>
|
||||
@@ -601,6 +651,9 @@ pulls.is_checking=Kontrola rozporů stále pokračuje, prosím obnovte za někol
|
||||
pulls.can_auto_merge_desc=Tento požadavek na natažení může být automaticky sloučen.
|
||||
pulls.cannot_auto_merge_desc=Tento požadavek na natažení nemůže být automaticky sloučen, neboť se v něm nachází rozpory.
|
||||
pulls.cannot_auto_merge_helper=Prosím proveďte sloučení ručně, aby byly vyřešeny rozpory.
|
||||
pulls.create_merge_commit=Vytvořit slučovací commit
|
||||
pulls.rebase_before_merging=Rebase před slučováním
|
||||
pulls.commit_description=Popis Commitu
|
||||
pulls.merge_pull_request=Sloučit požadavek na natažení
|
||||
pulls.open_unmerged_pull_exists=`Nemůžete znovuotevřít požadavek na natažení, neboť požadavek na natažení ze stejného repositáře se stejnými informacemi pro sloučení již existuje (#%d) a čeká na sloučení.`
|
||||
pulls.delete_branch=Smazat větev
|
||||
@@ -610,7 +663,7 @@ milestones.new=Nový milník
|
||||
milestones.open_tab=%d otevřených
|
||||
milestones.close_tab=%d zavřených
|
||||
milestones.closed=Zavřen %s
|
||||
milestones.no_due_date=Bez lhůty dokončení
|
||||
milestones.no_due_date=Bez termínu dokončení
|
||||
milestones.open=Otevřít
|
||||
milestones.close=Zavřít
|
||||
milestones.new_subheader=Vytvořte milníky k organizaci vašich úkolů.
|
||||
@@ -622,17 +675,17 @@ milestones.clear=Zrušit
|
||||
milestones.invalid_due_date_format=Formát data termínu je neplatný, musí být 'rrrr-mm-dd'.
|
||||
milestones.create_success=Milník '%s' byl vytvořen!
|
||||
milestones.edit=Upravit milník
|
||||
milestones.edit_subheader=Zadejte lepší popis milníků, aby lidé nebyli zmateni.
|
||||
milestones.edit_subheader=Zadejte lepší popis milníků pro snazší orientaci ostatních.
|
||||
milestones.cancel=Zrušit
|
||||
milestones.modify=Změnit milník
|
||||
milestones.edit_success=Změny milníku '%s' byly uloženy!
|
||||
milestones.deletion=Smazání milníku
|
||||
milestones.deletion_desc=Smazání tohoto milníku jej smaže také ze všech návazných úkolech. Chcete pokračovat?
|
||||
milestones.deletion_desc=Smazání tohoto milníku jej smaže také ze všech návazných úkolů. Chcete pokračovat?
|
||||
milestones.deletion_success=Milník byl smazán!
|
||||
|
||||
wiki=Wiki
|
||||
wiki.welcome=Vítejte ve Wiki!
|
||||
wiki.welcome_desc=Wiki je místo pro vaši společnou dokumentaci projektu a návodů jak jej zlepšit.
|
||||
wiki.welcome_desc=Wiki je místo pro vaši společnou dokumentaci projektu a návody, jak jej zlepšit.
|
||||
wiki.create_first_page=Vytvořte první stránku
|
||||
wiki.page=Stránka
|
||||
wiki.filter_page=Filtr stránky
|
||||
@@ -658,12 +711,12 @@ settings.collaboration.undefined=Neurčeno
|
||||
settings.branches=Větve
|
||||
settings.branches_bare=Nemůžete spravovat větve pro holý repositář. Prosím, odešlete nejdříve nějaký obsah.
|
||||
settings.default_branch=Výchozí větev
|
||||
settings.default_branch_desc=Výchozí větev je považována za "základní" větev pro zápisy změn revizí, požadavky na natažení a on-line úpravy.
|
||||
settings.default_branch_desc=Výchozí větev je považována za "hlavní" větev pro zápisy změn revizí, požadavky na natažení a on-line úpravy.
|
||||
settings.update=Změnit
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_unsupported=Změna výchozí větve není podporována verzí Gitu, která je na serveru.
|
||||
settings.update_default_branch_success=Výchozí větev tohoto repositáře byla změněna!
|
||||
settings.protected_branches=Chráněné větve
|
||||
settings.protected_branches_desc=Ochrana větví před vynuceným odesláním a náhodným smazáním. Schválený seznam uživatelů ukládající zápisy revizí.
|
||||
settings.protected_branches_desc=Ochrana větví před vynuceným odesláním, náhodným smazáním a uživateli na schváleném seznamu.
|
||||
settings.choose_a_branch=Vyberte větev...
|
||||
settings.branch_protection=Ochrana větví
|
||||
settings.branch_protection_desc=Prosím vyberte možnosti ochrany větve <b>%s</b>.
|
||||
@@ -693,19 +746,21 @@ settings.use_internal_wiki=Použít vestavěný systém Wiki
|
||||
settings.allow_public_wiki_desc=Povolit veřejný přístup k wiki, přestože se jedná o soukromý repositář
|
||||
settings.use_external_wiki=Používat externí Wiki
|
||||
settings.external_wiki_url=URL externí Wiki
|
||||
settings.external_wiki_url_desc=Návštěvníci budou při kliknutí na záložku přesměrování na tuto URL.
|
||||
settings.external_wiki_url_desc=Návštěvníci budou po kliknutí na danou záložku přesměrováni na tuto URL.
|
||||
settings.issues_desc=Povolit systém úkolů
|
||||
settings.use_internal_issue_tracker=Povolit věstavěný odlehčený systém úkolů
|
||||
settings.allow_public_issues_desc=Povolit veřejný přístup k úkolům, přestože se jedná o soukromý repositář
|
||||
settings.use_external_issue_tracker=Použít externí systém úkolů
|
||||
settings.external_tracker_url=URL externí evidence úkolů
|
||||
settings.external_tracker_url_desc=Návštěvníci budou po kliknutí na danou záložku přesměrováni na danou adresu.
|
||||
settings.external_tracker_url_desc=Návštěvníci budou po kliknutí na danou záložku přesměrováni na tuto URL.
|
||||
settings.tracker_url_format=Formát URL externího systému úkolů
|
||||
settings.tracker_issue_style=Styl pojmenování externího systému úkolů:
|
||||
settings.tracker_issue_style=Styl pojmenování úkolů v externím systému úkolů:
|
||||
settings.tracker_issue_style.numeric=Číselný
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumerický
|
||||
settings.tracker_url_format_desc=Můžete použít zástupné výrazy <code>{user} {repo} {index}</code> pro uživatelské jméno, název repositáře a index úkolu.
|
||||
settings.pulls_desc=Povolit požadavky na natažení, aby mohly být příspěvky veřejnosti akceptovány
|
||||
settings.tracker_url_format_desc=Můžete použít zástupné výrazy <code>{user} {repo} {index}</code> pro uživatelské jméno, název repositáře a číslo úkolu.
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignorovat změny v netisknutelných znacích
|
||||
settings.pulls.allow_rebase_merge=Povolit použití rebase pro sloučení revizí
|
||||
settings.danger_zone=Nebezpečná zóna
|
||||
settings.cannot_fork_to_same_owner=Nemůžete rozštěpit repositář jejímu vlastníkovi.
|
||||
settings.new_owner_has_same_repo=Nový vlastník již repositář se stejným názvem má. Vyberte, prosím, jiné jméno.
|
||||
@@ -717,7 +772,7 @@ settings.convert_succeed=Repositář byl převeden na běžný typ.
|
||||
settings.transfer=Předat vlastnictví
|
||||
settings.transfer_desc=Předat tento repositář jinému uživateli nebo organizaci, ve které jste správce.
|
||||
settings.transfer_notices_1=- Ztratíte přístup, pokud nový vlastník je samostatný uživatel.
|
||||
settings.transfer_notices_2=- Přístup vám bude zachován, pokud nový vlastník je organizace a vy jste jedním z vlastníků.
|
||||
settings.transfer_notices_2=- Přístup vám bude zachován, pokud nový vlastník je organizace a vy jste jedním z jejích vlastníků.
|
||||
settings.transfer_form_title=Zadejte prosím následující informace pro potvrzení operace:
|
||||
settings.wiki_delete=Smazat data Wiki
|
||||
settings.wiki_delete_desc=Pokud smažete data Wiki, nebude možné se vrátit. Buďte si, prosím, jist.
|
||||
@@ -742,8 +797,10 @@ settings.collaborator_deletion_desc=Tento uživatel po tom, co bude smazán, ji
|
||||
settings.remove_collaborator_success=Spolupracovník byl smazán.
|
||||
settings.search_user_placeholder=Hledat uživatele...
|
||||
settings.org_not_allowed_to_be_collaborator=Není dovoleno přidat organizaci jako spolupracovníka.
|
||||
settings.add_webhook=Přidat webový háček
|
||||
settings.hooks_desc=Webové háčky jsou podobné základním spouštím HTTP POST událostí. Kdykoliv se něco stane v Gogs, bude postaráno o oznámení specifikovanému cílovému serveru. Více se o daném dozvíte v <a target="_blank" href="%s">příručce webových háčků</a>.
|
||||
settings.webhooks.add_new=Add a new webhook:
|
||||
settings.webhooks.choose_a_type=Choose a type...
|
||||
settings.add_webhook=Přidat webový háček
|
||||
settings.webhook_deletion=Smazat webový háček
|
||||
settings.webhook_deletion_desc=Smazáním tohoto webového háčku dojte také ke smazání veškerých informací o něm a také historie volání. Chcete pokračovat?
|
||||
settings.webhook_deletion_success=Webový háček byl smazán!
|
||||
@@ -757,20 +814,22 @@ settings.webhook.response=Odpověď
|
||||
settings.webhook.headers=Hlavičky
|
||||
settings.webhook.payload=Datová část
|
||||
settings.webhook.body=Tělo zprávy
|
||||
settings.webhook.err_cannot_parse_payload_url=Cannot parse payload URL: %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address=Payload URL resolved to a local network address that is implicitly blocked.
|
||||
settings.githooks_desc=Jelikož háčky Gitu jsou spravovány Gitem samotným, můžete v seznamu níže upravit soubory podporovaných háčku k provádění uživatelských operací.
|
||||
settings.githook_edit_desc=Je-li háček neaktivní, bude zobrazen vzorový obsah. Nebude-li zadán žádný obsah, háček bude vypnut.
|
||||
settings.githook_name=Název háčku
|
||||
settings.githook_content=Obsah háčku
|
||||
settings.update_githook=Změnit háček
|
||||
settings.add_webhook_desc=Gogs zašle požadavek typu <code>POST</code> na zadanou URL, společně s informacemi o události, která nastala. Můžete také specifikovat, jaký datový formát se má použít po spuštění daného háčku (JSON, x-www-form-urlencoded, XML atp.). Více informací je k nalezení v našem <a target="_blank" href="%s">Návodu na webové háčky</a>.
|
||||
settings.payload_url=URL obsahu
|
||||
settings.payload_url=URL nákladu
|
||||
settings.content_type=Typ obsahu
|
||||
settings.secret=Tajný klíč
|
||||
settings.secret_desc=Tajný klíč bude odeslán jako SHA256 HMAC hexadecimální přehled použítím hlavičky <code>X-Gogs-Signature</code>.
|
||||
settings.secret_desc=Tajný klíč bude odeslán jako SHA256 HMAC hexadecimální přehled nákladu použítím hlavičky <code>X-Gogs-Signature</code>.
|
||||
settings.slack_username=Uživatelské jméno
|
||||
settings.slack_icon_url=URL ikony uživatele
|
||||
settings.slack_color=Barva
|
||||
settings.event_desc=Kdyby měl být webový háček spouštěn?
|
||||
settings.event_desc=Kdyby měl být tento webový háček spouštěn?
|
||||
settings.event_push_only=Jen pouze při události <code>odeslání</code>.
|
||||
settings.event_send_everything=Potřebuji <strong>vše</strong>.
|
||||
settings.event_choose=Nech mne vybrat, co potřebuji.
|
||||
@@ -784,10 +843,10 @@ settings.event_push=Odeslat
|
||||
settings.event_push_desc=Odeslání pomocí Gitu do repositáře
|
||||
settings.event_issues=Úkoly
|
||||
settings.event_issues_desc=Úkol, který je otevřen, uzavřen, znovuotevřen, změněn, přiřazen, nepřiřazen, mající změněn štítek, smazán štítek, mající přiřazen milník, nemající přiřazen milník.
|
||||
settings.event_issue_comment=Komentář k úkolu
|
||||
settings.event_issue_comment_desc=Komentář k úkolu vytvořen, upraven nebo smazán.
|
||||
settings.event_pull_request=Požadavek na natažení
|
||||
settings.event_pull_request_desc=Požadavek na natažení otevřen, uzavřen, znovuotevřen, změněn, přiřazen, nepřiřazen, změněn štítek, smazán štítek, mající nastaven štítek, zrušeno nastavení štítku nebo synchronizován.
|
||||
settings.event_issue_comment=Komentář k úkolu
|
||||
settings.event_issue_comment_desc=Komentář k úkolu vytvořen, upraven nebo smazán.
|
||||
settings.event_release=Vydání
|
||||
settings.event_release_desc=Vydání vystaveno v repositáři.
|
||||
settings.active=Aktivní
|
||||
@@ -800,13 +859,14 @@ settings.recent_deliveries=Nedávné dodávky
|
||||
settings.hook_type=Typ háčku
|
||||
settings.add_slack_hook_desc=Přidat integraci <a href="%s">Slacku</a> do vašeho repositáře.
|
||||
settings.add_discord_hook_desc=Přidat integraci <a href="%s">Discord</a> do vašeho repositáře.
|
||||
settings.add_dingtalk_hook_desc=Přidat integraci <a href="%s">Dingtalk</a> do vašeho repositáře.
|
||||
settings.slack_token=Poukázka
|
||||
settings.slack_domain=Doména
|
||||
settings.slack_channel=Kanál
|
||||
settings.deploy_keys=Klíče pro nasazení
|
||||
settings.deploy_keys_helper=<b>Přichycen při činu!</b> Pokud chcete přidat osobní veřejné klíče, zadejte je prosím v <a href="%s%s">nastavení vašeho účtu</a>.
|
||||
settings.add_deploy_key=Přidat klíč pro nasazení
|
||||
settings.deploy_key_desc=Klíče pro nasazení mají pouze přístup ke čtení. Nejsou stejné jako osobní klíče SSH.
|
||||
settings.deploy_key_desc=Klíče pro nasazení mají pouze přístup ke čtení. Nejsou stejné jako SSH klíče osobního účtu.
|
||||
settings.no_deploy_keys=Žádné klíče pro nasazení nebyly ještě přidány.
|
||||
settings.title=Název
|
||||
settings.deploy_key_content=Obsah
|
||||
@@ -816,6 +876,8 @@ settings.add_key_success=Nový klíč pro nasazení '%s' byl přidán!
|
||||
settings.deploy_key_deletion=Smazat klíč pro nasazení
|
||||
settings.deploy_key_deletion_desc=Smazání toho klíče pro nasazení smaže také veškerý k němu svázaný přístup do tohoto repositáře. Chcete pokračovat?
|
||||
settings.deploy_key_deletion_success=Klíč pro nasazení byl smazán!
|
||||
settings.description_desc=Popis repozitáře. Maximální délka 512 znaků.
|
||||
settings.description_length=Dostupné znaky
|
||||
|
||||
diff.browse_source=Procházet zdrojové kódy
|
||||
diff.parent=rodič
|
||||
@@ -823,12 +885,12 @@ diff.commit=revize
|
||||
diff.data_not_available=Rozdílová data nejsou dostupná.
|
||||
diff.show_diff_stats=Ukázat statistiku rozdílových dat
|
||||
diff.show_split_view=Rozdělené zobrazení
|
||||
diff.show_unified_view=Jednotný pohled
|
||||
diff.show_unified_view=Jednotné zobrazení
|
||||
diff.stats_desc=<strong> %d změnil soubory</strong>, kde provedl <strong>%d přidání</strong> a <strong>%d odebrání</strong>
|
||||
diff.bin=binární
|
||||
diff.view_file=Zobrazit soubor
|
||||
diff.file_suppressed=Diff nebyl zobrazen, protože je příliš veliký
|
||||
diff.too_many_files=Některé soubory nejsou zobrazny, neboť je v této revizi změněno mnoho souborů
|
||||
diff.file_suppressed=Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
|
||||
diff.too_many_files=Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů
|
||||
|
||||
release.releases=Vydání
|
||||
release.new_release=Nové vydání
|
||||
@@ -871,7 +933,7 @@ people=Lidé
|
||||
invite_someone=Přizvěte někoho
|
||||
teams=Týmy
|
||||
lower_members=členové
|
||||
lower_repositories=repositáře
|
||||
lower_repositories=repozitáře
|
||||
create_new_team=Vytvořit nový tým
|
||||
org_desc=Popis
|
||||
team_name=Název týmu
|
||||
@@ -880,9 +942,8 @@ team_name_helper=Tento název budete používat při zmiňovaní týmu v konverz
|
||||
team_desc_helper=Popište prosím tento tým
|
||||
team_permission_desc=Jakou úroveň přístupu má mít tento tým?
|
||||
|
||||
form.name_reserved=Název organizace '%s' je již rezervován.
|
||||
form.name_pattern_not_allowed=Vzor názvu organizace '%s' není povolen.
|
||||
form.team_name_reserved=Název týmu '%s' je vyhrazen.
|
||||
form.name_not_allowed=Organization name or pattern %q is not allowed.
|
||||
form.team_name_not_allowed=Team name or pattern %q is not allowed.
|
||||
|
||||
settings=Nastavení
|
||||
settings.options=Možnosti
|
||||
@@ -935,9 +996,9 @@ teams.delete_team_success=Daný tým byl smazán.
|
||||
teams.read_permission_desc=Členství v tom týmu poskytuje právo <strong>čtení</strong>: členové mohou číst z a vytvářet klony repositářů týmu.
|
||||
teams.write_permission_desc=Členství v tom týmu poskytuje právo <strong>zápisu</strong>: členové mohou číst z a odesílat do repositářů týmu.
|
||||
teams.admin_permission_desc=Členství v tom týmu poskytuje právo <strong>správce</strong>: členové mohou číst z, odesílat do a přidávat spolupracovníky do repositářů týmu.
|
||||
teams.repositories=Repositáře týmu
|
||||
teams.repositories=Repozitáře týmu
|
||||
teams.search_repo_placeholder=Hledat repositář...
|
||||
teams.add_team_repository=Přidat repositář týmu
|
||||
teams.add_team_repository=Přidat repozitář týmu
|
||||
teams.remove_repo=Odstranit
|
||||
teams.add_nonexistent_repo=Repositář, který se snažíte přidat, neexistuje. Nejdříve jej vytvořte, prosím.
|
||||
|
||||
@@ -945,7 +1006,7 @@ teams.add_nonexistent_repo=Repositář, který se snažíte přidat, neexistuje.
|
||||
dashboard=Přehled
|
||||
users=Uživatelé
|
||||
organizations=Organizace
|
||||
repositories=Repositáře
|
||||
repositories=Repozitáře
|
||||
authentication=Způsoby ověření
|
||||
config=Nastavení
|
||||
notices=Systémová oznámení
|
||||
@@ -954,12 +1015,19 @@ first_page=První
|
||||
last_page=Poslední
|
||||
total=Celkem: %d
|
||||
|
||||
dashboard.build_info=Informace o sestavení
|
||||
dashboard.app_ver=Verze aplikace
|
||||
dashboard.git_version=Git verze
|
||||
dashboard.go_version=Go verze
|
||||
dashboard.build_time=Čas sestavení
|
||||
dashboard.build_commit=Commit sestavení
|
||||
dashboard.statistic=Statistika
|
||||
dashboard.operations=Operace
|
||||
dashboard.system_status=Stav sledování systému
|
||||
dashboard.statistic_info=Databáze Gogs obsahuje <b>%d</b> uživatelů, <b>%d</b> organizací, <b>%d</b> veřejných klíčů, <b>%d</b> repositářů, <b>%d</b> hlídání, <b>%d</b> oblíbení, <b>%d</b> akcí, <b>%d</b> přístupů, <b>%d</b> úkolů, <b>%d</b> komentářů, <b>%d</b> sociálních účtů, <b>%d</b> sledování, <b>%d</b> zrcadel, <b>%d</b> vydání, <b>%d</b> zdrojů přihlášení, <b>%d</b> webových háčků, <b>%d</b> milníků, <b>%d</b> štítků, <b>%d</b> háčků, <b>%d</b> týmů, <b>%d</b> úkolů změn, <b>%d</b> příloh.
|
||||
dashboard.operation_name=Název operace
|
||||
dashboard.operation_switch=Přepnout
|
||||
dashboard.select_operation_to_run=Please select operation to run
|
||||
dashboard.operation_run=Spustit
|
||||
dashboard.clean_unbind_oauth=Smazat odpojené asociace OAuth2
|
||||
dashboard.clean_unbind_oauth_success=Všechny odpojené asociace OAuth2 byly smazány.
|
||||
@@ -1008,7 +1076,7 @@ dashboard.total_gc_pause=Celková pauza GC
|
||||
dashboard.last_gc_pause=Poslední pauza GC
|
||||
dashboard.gc_times=Časy GC
|
||||
|
||||
users.user_manage_panel=Uživatelský panel
|
||||
users.user_manage_panel=Panel správy uživatelů
|
||||
users.new_account=Vytvořit nový účet
|
||||
users.name=Jméno
|
||||
users.activated=Aktivován
|
||||
@@ -1046,16 +1114,17 @@ repos.repo_manage_panel=Panel správy repositářů
|
||||
repos.owner=Vlastník
|
||||
repos.name=Název
|
||||
repos.private=Soukromý
|
||||
repos.watches=Sledovači
|
||||
repos.watches=Sledujících
|
||||
repos.stars=Oblíbení
|
||||
repos.issues=Úkoly
|
||||
repos.size=Velikost
|
||||
|
||||
auths.auth_manage_panel=Panel správy způsobů ověřování
|
||||
auths.auth_sources=Zdroje ověření
|
||||
auths.new=Přidat nový zdroj
|
||||
auths.name=Název
|
||||
auths.type=Typ
|
||||
auths.enabled=Povolený
|
||||
auths.default=Výchozí
|
||||
auths.updated=Změněné
|
||||
auths.auth_type=Typ ověření
|
||||
auths.auth_name=Název ověření
|
||||
@@ -1064,15 +1133,21 @@ auths.domain=Doména
|
||||
auths.host=Server
|
||||
auths.port=Port
|
||||
auths.bind_dn=Připojení DN
|
||||
auths.bind_dn_helper=Můžete použít '%s' jako zástupný znak pro uživatelské jméno, například DOM\%s
|
||||
auths.bind_password=Heslo připojení
|
||||
auths.bind_password_helper=Upozornění: Toto heslo je ukládáno nešifrované. Nepoužívejte pro správcovské účty.
|
||||
auths.user_base=Výchozí místo hledání uživatelů
|
||||
auths.user_dn=DN uživatele
|
||||
auths.attribute_username=Uživatelské jméno
|
||||
auths.attribute_username_placeholder=Zanechat prázdné pro použití hodnoty pole uživatelského jména z přihlašovacího formuláře.
|
||||
auths.attribute_name=Křestní jméno
|
||||
auths.attribute_surname=Příjmení
|
||||
auths.attribute_mail=E-mailová adresa
|
||||
auths.attribute_username=Atribut uživatelského jména
|
||||
auths.attribute_username_placeholder=Nechte toto pole prázdné pro použití hodnoty pole uživatelského jména z přihlašovacího formuláře.
|
||||
auths.attribute_name=Atribut křestního jména
|
||||
auths.attribute_surname=Atribut příjmení
|
||||
auths.attribute_mail=Atribut e-mailové adresy
|
||||
auths.verify_group_membership=Ověřovat členství ve skupině
|
||||
auths.group_search_base_dn=Základní DN pro vyhledávání skupin
|
||||
auths.group_filter=Skupinový filtr
|
||||
auths.group_attribute_contain_user_list=Skupinový atribut, který obsahuje seznam uživatelů
|
||||
auths.user_attribute_listed_in_group=Atribut uživatele (ve skupině)
|
||||
auths.attributes_in_bind=Vyzvednout atributy v kontextu Bind DN
|
||||
auths.filter=Uživatelský filtr
|
||||
auths.admin_filter=Správcovský filtr
|
||||
@@ -1086,9 +1161,9 @@ auths.enable_tls=Povolit šifrování TLS
|
||||
auths.skip_tls_verify=Přeskočit ověření TLS
|
||||
auths.pam_service_name=Název služby PAM
|
||||
auths.enable_auto_register=Povolit zaregistrování se
|
||||
auths.tips=Tipy
|
||||
auths.edit=Upravit nastavení ověřování
|
||||
auths.activated=Tento způsob ověřování je aktivní
|
||||
auths.default_auth=Toto ověření je výchozí zdroj přihlášení
|
||||
auths.new_success=Nový způsob ověřování '%s' byl přidán.
|
||||
auths.update_success=Nastavení ověřování bylo změněno.
|
||||
auths.update=Změnit nastavení ověřování
|
||||
@@ -1098,115 +1173,186 @@ auths.delete_auth_desc=Tento způsob ověřování bude smazán, chcete pokračo
|
||||
auths.still_in_used=Tento způsob ověřování je stále používán některými uživateli. Prosím, nejdříve změňte u těchto uživatelů typ ověřování na jiný.
|
||||
auths.deletion_success=Způsob ověřování byl smazán!
|
||||
auths.login_source_exist=Zdroj přihlášení '%s' již existuje.
|
||||
auths.github_api_endpoint=Koncový bod API
|
||||
|
||||
config.not_set=(není nastaveno)
|
||||
config.server_config=Nastavení serveru
|
||||
config.app_name=Název aplikace
|
||||
config.app_ver=Verze aplikace
|
||||
config.app_url=URL aplikace
|
||||
config.domain=Doména
|
||||
config.offline_mode=Režim off-line
|
||||
config.disable_router_log=Vypnout systémové záznamy směrovače
|
||||
config.brand_name=Název značky
|
||||
config.run_user=Účet pro spouštění
|
||||
config.run_mode=Režim spouštění
|
||||
config.git_version=Verze Gitu
|
||||
config.static_file_root_path=Kořenový adresář statického souboru
|
||||
config.log_file_root_path=Kořenový adresář souboru systémových záznamů
|
||||
config.reverse_auth_user=Uživatel obráceného ověření
|
||||
config.server.external_url=Externí URL
|
||||
config.server.domain=Doména
|
||||
config.server.protocol=Protokol
|
||||
config.server.http_addr=HTTP adresa
|
||||
config.server.http_port=HTTP port
|
||||
config.server.cert_file=Soubor certifikátu
|
||||
config.server.key_file=Soubor klíče
|
||||
config.server.tls_min_version=Minimální verze TLS
|
||||
config.server.unix_socket_permission=Oprávnění Unix socket
|
||||
config.server.local_root_url=Místní URL kořenového adresáře
|
||||
config.server.offline_mode=Offline režim
|
||||
config.server.disable_router_log=Disable router log
|
||||
config.server.enable_gzip=Povolit Gzip
|
||||
config.server.app_data_path=Cesta dat aplikace
|
||||
config.server.load_assets_from_disk=Load assets from disk
|
||||
config.server.landing_url=Landing URL
|
||||
|
||||
config.ssh_config=Nastavení SSH
|
||||
config.ssh_enabled=Povolený
|
||||
config.ssh_start_builtin_server=Spustit vestavěný server
|
||||
config.ssh_domain=Doména
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Port pro naslouchání
|
||||
config.ssh_root_path=Kořenová cesta
|
||||
config.ssh_key_test_path=Cesta testu klíčů
|
||||
config.ssh_keygen_path=Cesta ke generátoru klíčů ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Kontrola minimální velikosti klíčů
|
||||
config.ssh_minimum_key_sizes=Minimální velikost klíčů
|
||||
config.ssh.enabled=Povoleno
|
||||
config.ssh.domain=Vystavená doména
|
||||
config.ssh.port=Vystavený port
|
||||
config.ssh.root_path=Kořenová cesta
|
||||
config.ssh.keygen_path=Keygen path
|
||||
config.ssh.key_test_path=Key test path
|
||||
config.ssh.minimum_key_size_check=Kontrola minimální velikosti klíčů
|
||||
config.ssh.minimum_key_sizes=Minimální velikost klíčů
|
||||
config.ssh.rewrite_authorized_keys_at_start=Rewrite "authorized_keys" at start
|
||||
config.ssh.start_builtin_server=Start builtin server
|
||||
config.ssh.listen_host=Listen host
|
||||
config.ssh.listen_port=Listen port
|
||||
config.ssh.server_ciphers=Serverové šifry
|
||||
config.ssh.server_macs=Server MACs
|
||||
config.ssh.server_algorithms=Server algorithms
|
||||
|
||||
config.repo_config=Nastavení repositáře
|
||||
config.repo_root_path=Kořenový adresář repositářů
|
||||
config.script_type=Typ skriptu
|
||||
config.repo_force_private=Vynutit soukromé
|
||||
config.max_creation_limit=Maximální lhůta pro vytvoření
|
||||
config.preferred_licenses=Upřednostňované licence
|
||||
config.disable_http_git=Vypnout HTTP Git
|
||||
config.enable_local_path_migration=Povolit migraci z místní cesty
|
||||
config.commits_fetch_concurrency=Souběžnost vyzvednutí revizí
|
||||
config.repo.root_path=Kořenová cesta
|
||||
config.repo.script_type=Typ skriptu
|
||||
config.repo.ansi_chatset=ANSI charset
|
||||
config.repo.force_private=Force private
|
||||
config.repo.max_creation_limit=Max creation limit
|
||||
config.repo.preferred_licenses=Upřednostňované licence
|
||||
config.repo.disable_http_git=Disable HTTP Git
|
||||
config.repo.enable_local_path_migration=Enable local path migration
|
||||
config.repo.enable_raw_file_render_mode=Enable raw file render mode
|
||||
config.repo.commits_fetch_concurrency=Commits fetch concurrency
|
||||
config.repo.editor.line_wrap_extensions=Editor line wrap extensions
|
||||
config.repo.editor.previewable_file_modes=Editor previewable file modes
|
||||
config.repo.upload.enabled=Upload enabled
|
||||
config.repo.upload.temp_path=Upload temporary path
|
||||
config.repo.upload.allowed_types=Upload allowed types
|
||||
config.repo.upload.file_max_size=Upload file size limit
|
||||
config.repo.upload.max_files=Upload files limit
|
||||
|
||||
config.db_config=Nastavení databáze
|
||||
config.db_type=Typ
|
||||
config.db_host=Server
|
||||
config.db_name=Název
|
||||
config.db_user=Uživatel
|
||||
config.db_ssl_mode=Režim SSL
|
||||
config.db_ssl_mode_helper=(pouze pro 'postgres')
|
||||
config.db_path=Cesta
|
||||
config.db_path_helper=(pro "sqlite3" a "tidb")
|
||||
config.db.type=Type
|
||||
config.db.host=Host
|
||||
config.db.name=Name
|
||||
config.db.schema=Schema
|
||||
config.db.schema_helper=(for "postgres" only)
|
||||
config.db.user=User
|
||||
config.db.ssl_mode=SSL mode
|
||||
config.db.ssl_mode_helper=(for "postgres" only)
|
||||
config.db.path=Path
|
||||
config.db.path_helper=(for "sqlite3"only)
|
||||
config.db.max_open_conns=Maximum open connections
|
||||
config.db.max_idle_conns=Maximum idle connections
|
||||
|
||||
config.service_config=Nastavení služby
|
||||
config.register_email_confirm=Vyžadovat potvrzení e-mailu
|
||||
config.disable_register=Vypnout registraci
|
||||
config.show_registration_button=Ukázat tlačítko registrace
|
||||
config.require_sign_in_view=Vyžadovat zobrazení přihlášení
|
||||
config.mail_notify=Upozornění e-mailem
|
||||
config.disable_key_size_check=Vypnout kontrolu minimální velikosti klíčů
|
||||
config.enable_captcha=Povolit službu CAPTCHA
|
||||
config.active_code_lives=Doba života aktivního kódu
|
||||
config.reset_password_code_lives=Lhůta kódu pro obnovu hesla
|
||||
config.security_config=Security configuration
|
||||
config.security.login_remember_days=Login remember days
|
||||
config.security.cookie_remember_name=Remember cookie
|
||||
config.security.cookie_username=Username cookie
|
||||
config.security.cookie_secure=Enable secure cookie
|
||||
config.security.reverse_proxy_auth_user=Reverse proxy authentication header
|
||||
config.security.enable_login_status_cookie=Enable login status cookie
|
||||
config.security.login_status_cookie_name=Login status cookie
|
||||
config.security.local_network_allowlist=Local network allowlist
|
||||
|
||||
config.webhook_config=Nastavení webových háčků
|
||||
config.queue_length=Délka fronty
|
||||
config.deliver_timeout=Časový limit doručení
|
||||
config.skip_tls_verify=Přeskočit ověření TLS
|
||||
config.email_config=Email configuration
|
||||
config.email.enabled=Enabled
|
||||
config.email.subject_prefix=Subject prefix
|
||||
config.email.host=Host
|
||||
config.email.from=From
|
||||
config.email.user=User
|
||||
config.email.disable_helo=Disable HELO
|
||||
config.email.helo_hostname=HELO hostname
|
||||
config.email.skip_verify=Skip certificate verify
|
||||
config.email.use_certificate=Use custom certificate
|
||||
config.email.cert_file=Certificate file
|
||||
config.email.key_file=Key file
|
||||
config.email.use_plain_text=Use plain text
|
||||
config.email.add_plain_text_alt=Add plain text alternative
|
||||
config.email.send_test_mail=Send test email
|
||||
config.email.test_mail_failed=Failed to send test email to '%s': %v
|
||||
config.email.test_mail_sent=Test email has been sent to '%s'.
|
||||
|
||||
config.mailer_config=Nastavení odesílání e-mailů
|
||||
config.mailer_enabled=Povolený
|
||||
config.mailer_disable_helo=Vypnout HELO
|
||||
config.mailer_name=Název
|
||||
config.mailer_host=Server
|
||||
config.mailer_user=Uživatel
|
||||
config.send_test_mail=Odeslat zkušební E-mail
|
||||
config.test_mail_failed=Odeslání testovacího e-mailu na '%s' selhalo: %v
|
||||
config.test_mail_sent=Zkušební e-mail byl odeslán na '%s'.
|
||||
config.auth_config=Authentication configuration
|
||||
config.auth_custom_logout_url=Custom logout URL
|
||||
config.auth.activate_code_lives=Activate code lives
|
||||
config.auth.reset_password_code_lives=Reset password code lives
|
||||
config.auth.require_email_confirm=Require email confirmation
|
||||
config.auth.require_sign_in_view=Require sign in view
|
||||
config.auth.disable_registration=Disable registration
|
||||
config.auth.enable_registration_captcha=Enable registration captcha
|
||||
config.auth.enable_reverse_proxy_authentication=Enable reverse proxy authentication
|
||||
config.auth.enable_reverse_proxy_auto_registration=Enable reverse proxy auto registration
|
||||
config.auth.reverse_proxy_authentication_header=Reverse proxy authentication header
|
||||
|
||||
config.oauth_config=Nastavení ověření OAuth
|
||||
config.oauth_enabled=Povolený
|
||||
|
||||
config.cache_config=Nastavení mezipaměti
|
||||
config.cache_adapter=Adaptér mezipaměti
|
||||
config.cache_interval=Interval mezipaměti
|
||||
config.cache_conn=Připojení mezipaměti
|
||||
config.user_config=User configuration
|
||||
config.user.enable_email_notify=Enable email notification
|
||||
|
||||
config.session_config=Nastavení relace
|
||||
config.session_provider=Poskytovatel relace
|
||||
config.provider_config=Nastavení poskytovatele
|
||||
config.cookie_name=Název souboru cookie
|
||||
config.enable_set_cookie=Povolit nastavení cookie
|
||||
config.gc_interval_time=Čas intervalu GC
|
||||
config.session_life_time=Doba trvání relace
|
||||
config.https_only=Pouze protokol HTTPS
|
||||
config.cookie_life_time=Doba života souboru cookie
|
||||
config.session.provider=Provider
|
||||
config.session.provider_config=Provider config
|
||||
config.session.cookie_name=Cookie
|
||||
config.session.https_only=HTTPS only
|
||||
config.session.gc_interval=GC interval
|
||||
config.session.max_life_time=Max life time
|
||||
config.session.csrf_cookie_name=CSRF cookie
|
||||
|
||||
config.cache_config=Nastavení mezipaměti
|
||||
config.cache.adapter=Adapter
|
||||
config.cache.interval=GC interval
|
||||
config.cache.host=Host
|
||||
|
||||
config.http_config=Nastavení HTTP
|
||||
config.http.access_control_allow_origin=Access control allow origin
|
||||
|
||||
config.attachment_config=Attachment configuration
|
||||
config.attachment.enabled=Enabled
|
||||
config.attachment.path=Path
|
||||
config.attachment.allowed_types=Allowed types
|
||||
config.attachment.max_size=Size limit
|
||||
config.attachment.max_files=Files limit
|
||||
|
||||
config.release_config=Release configuration
|
||||
config.release.attachment.enabled=Attachment enabled
|
||||
config.release.attachment.allowed_types=Attachment allowed types
|
||||
config.release.attachment.max_size=Attachment size limit
|
||||
config.release.attachment.max_files=Attachment files limit
|
||||
|
||||
config.picture_config=Nastavení ikony uživatele
|
||||
config.picture_service=Služba ikon uživatelů
|
||||
config.disable_gravatar=Vypnout službu Gravatar
|
||||
config.enable_federated_avatar=Povolit jednotné ikony uživatelů
|
||||
config.picture.avatar_upload_path=User avatar upload path
|
||||
config.picture.repo_avatar_upload_path=Repository avatar upload path
|
||||
config.picture.gravatar_source=Gravatar source
|
||||
config.picture.disable_gravatar=Disable Gravatar
|
||||
config.picture.enable_federated_avatar=Enable federated avatars
|
||||
|
||||
config.mirror_config=Mirror configuration
|
||||
config.mirror.default_interval=Default interval
|
||||
|
||||
config.webhook_config=Nastavení webových háčků
|
||||
config.webhook.types=Types
|
||||
config.webhook.deliver_timeout=Deliver timeout
|
||||
config.webhook.skip_tls_verify=Skip TLS verify
|
||||
|
||||
config.git_config=Konfigurace Gitu
|
||||
config.git_disable_diff_highlight=Vypnout zvýraznění syntaxe v rozdílovém zobrazení
|
||||
config.git_max_diff_lines=Maximální počet rozdílných řádků jednoho souboru
|
||||
config.git_max_diff_line_characters=Maximální počet zobrazených rozdílných znaků jedné řádky
|
||||
config.git_max_diff_files=Maximální počet zobrazených rozdílných souborů
|
||||
config.git_gc_args=Parametry GC
|
||||
config.git_migrate_timeout=Časová lhůta přenesení
|
||||
config.git_mirror_timeout=Časový limit aktualizace zrcadla
|
||||
config.git_clone_timeout=Časový limit operace naklonování
|
||||
config.git_pull_timeout=Časový limit operace stažení
|
||||
config.git_gc_timeout=Časový limit operace GC
|
||||
config.git.disable_diff_highlight=Disable diff syntax highlight
|
||||
config.git.max_diff_lines=Diff lines limit (for a single file)
|
||||
config.git.max_diff_line_characters=Diff characters limit (for a single line)
|
||||
config.git.max_diff_files=Diff files limit (for a single diff)
|
||||
config.git.gc_args=GC arguments
|
||||
config.git.migrate_timeout=Migration timeout
|
||||
config.git.mirror_timeout=Mirror fetch timeout
|
||||
config.git.clone_timeout=Clone timeout
|
||||
config.git.pull_timeout=Pull timeout
|
||||
config.git.gc_timeout=GC timeout
|
||||
|
||||
config.lfs_config=LFS configuration
|
||||
config.lfs.storage=Storage
|
||||
config.lfs.objects_path=Objects path
|
||||
|
||||
config.log_config=Nastavení systémových záznamů
|
||||
config.log_file_root_path=Kořenový adresář souboru systémových záznamů
|
||||
config.log_mode=Režim
|
||||
config.log_options=Možnosti
|
||||
|
||||
@@ -1237,9 +1383,8 @@ notices.delete_success=Systémová upozornění byla smazána.
|
||||
|
||||
[action]
|
||||
create_repo=vytvořil repositář <a href="%s">%s</a>
|
||||
fork_repo=rozštěpil repositář do <a href="%s">%s</a>
|
||||
rename_repo=přejmenoval repositář z <code>%[1]s</code> na <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=odeslal do <a href="%[1]s/src/%[2]s">%[3]s</a> v <a href="%[1]s">%[4]s</a>
|
||||
commit_repo=odeslal do větve <a href="%[1]s/src/%[2]s">%[3]s</a> v repositáři <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Zobrazit porovnání pro tyto %d revize
|
||||
transfer_repo=předal repositář <code>%s</code> uživateli/organizaci <a href="%s">%s</a>
|
||||
create_issue=`vytvořil úkol <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
@@ -1252,8 +1397,12 @@ reopen_pull_request=`znovuotevřel požadavek na natažení <a href="%s/pulls/%s
|
||||
merge_pull_request=`sloučil požadavek na natažení <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=vytvořil novou větev <a href="%[1]s/src/%[2]s">%[3]s</a> v <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=smazal větev <code>%[2]s</code> v <a href="%[1]s">%[3]s</a>
|
||||
push_tag=odeslal značku <a href="%s/src/%s">%[2]s</a> do <a href="%[1]s">%[3]s</a>
|
||||
push_tag=odeslal značku <a href="%s/src/%s">%[2]s</a> do repositáře <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=smazána značka <code>%[2]s</code> v <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=rozštěpil repositář do <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synchronizoval/a novou referenci <a href="%s/src/%s">%[2]s</a> do <a href="%[1]s">%[3]s</a> ze zrcadla
|
||||
mirror_sync_delete=synchronizoval/a a smazal/a referenci <code>%[2]s</code> v <a href="%[1]s">%[3]s</a> ze zrcadla
|
||||
|
||||
[tool]
|
||||
ago=před
|
||||
@@ -1275,6 +1424,7 @@ months=%[2]s %[1]d měsíci
|
||||
years=%[2]s %[1]d roky
|
||||
raw_seconds=sekundy
|
||||
raw_minutes=minuty
|
||||
raw_hours=hours
|
||||
|
||||
[dropzone]
|
||||
default_message=Přetáhněte soubory sem nebo stiskněte Nahrát.
|
||||
|
||||
@@ -9,7 +9,6 @@ sign_out=Abmelden
|
||||
sign_up=Registrieren
|
||||
register=Registrieren
|
||||
website=Webseite
|
||||
version=Version
|
||||
page=Seite
|
||||
template=Vorlage
|
||||
language=Sprache
|
||||
@@ -44,17 +43,22 @@ issues=Issues
|
||||
|
||||
cancel=Abbrechen
|
||||
|
||||
[status]
|
||||
page_not_found=Seite nicht gefunden
|
||||
internal_server_error=Interner Serverfehler
|
||||
|
||||
[install]
|
||||
install=Installation
|
||||
title=Installationsschritte für den ersten Start
|
||||
docker_helper=Wenn Gogs innerhalb von Docker läuft, lesen Sie sich bitte den <a target="_blank" href="%s">Leitfaden</a> genau durch, bevor Sie irgendwas auf dieser Seite ändern!
|
||||
requite_db_desc=Gogs benötigt MySQL, PostgreSQL, SQLite3, MSSQL oder TiDB.
|
||||
docker_helper=Wenn Gogs innerhalb von Docker läuft, lesen Sie sich bitte den <a target="_blank" href="%s">Leitfaden</a> genau durch, bevor Sie etwas auf dieser Seite ändern!
|
||||
requite_db_desc=Gogs benötigt MySQL, PostgreSQL, SQLite3 oder TiDB (mit MySQL-Protokoll)
|
||||
db_title=Datenbankeinstellungen
|
||||
db_type=Datenbanktyp
|
||||
host=Host
|
||||
user=Benutzer
|
||||
password=Passwort
|
||||
db_name=Datenbankname
|
||||
db_schema=Schema
|
||||
db_helper=Bitte verwenden Sie in MySQL die InnoDB-Engine mit dem Zeichensatz utf8_general_ci.
|
||||
ssl_mode=SSL-Modus
|
||||
path=Pfad
|
||||
@@ -84,6 +88,7 @@ log_root_path=Logdateipfad
|
||||
log_root_path_helper=Verzeichnis in das Logdateien geschrieben werden.
|
||||
enable_console_mode=Konsolen-Modus einschalten
|
||||
enable_console_mode_popup=Zusätzlich zum Datei-Modus, zeige Logs auch in der Konsole.
|
||||
default_branch=Standard Branch
|
||||
|
||||
optional_title=Optionale Einstellungen
|
||||
email_title=E-Mail-Service Einstellungen
|
||||
@@ -119,8 +124,10 @@ sqlite3_not_available=Ihre Gogs-Version unterstützt SQLite3 nicht. Bitte laden
|
||||
invalid_db_setting=Datenbankeinstellungen sind nicht korrekt: %v
|
||||
invalid_repo_path=Repository Verzeichnis ist ungültig: %v
|
||||
run_user_not_match=Der ausführende Benutzer ist nicht der aktuelle Benutzer: %s -> %s
|
||||
smtp_host_missing_port=In der Adresse des SMTP Host fehlt die Portnummer.
|
||||
invalid_smtp_from=SMTP Absender Feld ist nicht gültig: %v
|
||||
save_config_failed=Fehler beim Speichern der Konfiguration: %v
|
||||
init_failed=Fehler beim Initialisieren der Anwendung: %v
|
||||
invalid_admin_setting=Admin-Konto Einstellungen sind ungültig: %v
|
||||
install_success=Herzlich Willkommen! Wir sind froh, dass Sie sich für Gogs entschieden haben. Wir wünschen viel Vergnügen damit.
|
||||
invalid_log_root_path=Pfad zum Log-Verzeichnis ist ungültig: %v
|
||||
@@ -150,6 +157,8 @@ register_hepler_msg=Haben Sie bereits ein Konto? Jetzt anmelden!
|
||||
social_register_hepler_msg=Haben Sie bereits ein Konto? Jetzt verknüpfen!
|
||||
disable_register_prompt=Es tut uns leid, die Registrierung wurde deaktiviert. Bitte wenden Sie sich an den Administrator.
|
||||
disable_register_mail=Es tut uns leid, die Bestätigung der Registrierungs-E-Mail wurde deaktiviert.
|
||||
auth_source=Authentifizierungsquelle
|
||||
local=Lokal
|
||||
remember_me=Angemeldet bleiben
|
||||
forgot_password=Passwort vergessen
|
||||
forget_password=Passwort vergessen?
|
||||
@@ -168,6 +177,14 @@ reset_password_helper=Hier klicken, um das Passwort zurückzusetzen
|
||||
password_too_short=Das Passwort muss mindenstens 6 Zeichen lang sein.
|
||||
non_local_account=Nicht-lokale Konten können Passwörter nicht via Gogs ändern.
|
||||
|
||||
login_two_factor=Zwei-Faktor-Authentifizierung
|
||||
login_two_factor_passcode=PIN
|
||||
login_two_factor_enter_recovery_code=Geben Sie einen Wiederherstellungscode für die Zwei-Faktor-Authentifizierung ein
|
||||
login_two_factor_recovery=Zwei-Faktor-Wiederherstellung
|
||||
login_two_factor_recovery_code=Wiederherstellungscode
|
||||
login_two_factor_enter_passcode=Geben Sie die Zwei-Faktor-Authentifizierungs PIN ein
|
||||
login_two_factor_invalid_recovery_code=Der Wiederherstellungscode wurde schon benutzt oder ist nicht gültig.
|
||||
|
||||
[mail]
|
||||
activate_account=Bitte aktivieren Sie Ihr Konto
|
||||
activate_email=Bestätigen Sie Ihre E-Mail-Adresse
|
||||
@@ -220,6 +237,7 @@ org_name_been_taken=Organisationsname ist bereits vergeben.
|
||||
team_name_been_taken=Teamname ist bereits vergeben.
|
||||
email_been_used=E-Mail-Adresse wird bereits verwendet.
|
||||
username_password_incorrect=Benutzername oder Passwort ist nicht korrekt.
|
||||
auth_source_mismatch=Die ausgewählte Authentifizierungsquelle ist dem Benutzer nicht zugeordnet.
|
||||
enterred_invalid_repo_name=Bitte achten Sie darauf, dass der von Ihnen eingegebene Repository-Name korrekt ist.
|
||||
enterred_invalid_owner_name=Bitte achten Sie darauf, dass der eingegebene Name des Besitzers korrekt ist.
|
||||
enterred_invalid_password=Bitte achten Sie darauf, dass das eingegebene Passwort richtig ist.
|
||||
@@ -247,14 +265,14 @@ following=Folge ich
|
||||
follow=Folgen
|
||||
unfollow=Nicht mehr folgen
|
||||
|
||||
form.name_reserved=Der Benutzername '%s' ist reserviert.
|
||||
form.name_pattern_not_allowed=Benutzernamen der Form '%s' sind nicht erlaubt.
|
||||
form.name_not_allowed=Benutzername oder Muster %q ist nicht erlaubt.
|
||||
|
||||
[settings]
|
||||
profile=Profil
|
||||
password=Passwort
|
||||
avatar=Profilbild
|
||||
ssh_keys=SSH-Schlüssel
|
||||
security=Sicherheit
|
||||
repos=Repositories
|
||||
orgs=Organisationen
|
||||
applications=Anwendungen
|
||||
@@ -299,6 +317,7 @@ delete_email=Löschen
|
||||
email_deletion=E-Mail löschen
|
||||
email_deletion_desc=Das Löschen dieser E-Mail Adresse wird alle Informationen entfernen, die mit dieser E-Mail Adresse verknüpft sind. Wollen Sie fortfahren?
|
||||
email_deletion_success=E-Mail-Adresse wurde erfolgreich gelöscht!
|
||||
email_deletion_primary=Die primäre E-Mail-Adresse kann nicht gelöscht werden.
|
||||
add_new_email=Neue E-Mail-Adresse hinzufügen
|
||||
add_email=E-Mail-Adresse hinzufügen
|
||||
add_email_confirmation_sent=Eine neue Bestätigungsmail wurde an '%s' gesendet, bitte überprüfen Sie Ihren Posteingang innerhalb von %d Stunden um die Bestätigung abzuschließen.
|
||||
@@ -309,7 +328,7 @@ add_key=Schlüssel hinzufügen
|
||||
ssh_desc=Dies ist eine Liste aller SSH-Schlüssel, die Ihrem Konto zugeordnet sind. Bitte entfernen Sie alle Schlüssel, die Ihnen nicht bekannt sind.
|
||||
ssh_helper=<strong>Brauchen Sie Hilfe?</strong> Hier ist eine Anleitung zum <a href="%s">Erzeugen von SSH-Schlüsseln</a> oder <a href="%s">Lösen einfacher SSH-Probleme</a>.
|
||||
add_new_key=SSH-Schlüssel hinzufügen
|
||||
ssh_key_been_used=Inhalt des öffentlichen Schlüssels wurde verwendet.
|
||||
ssh_key_been_used=Inhalt des öffentlichen Schlüssels wurde bereits verwendet.
|
||||
ssh_key_name_used=Ein öffentlicher Schlüssel mit diesem Namen existiert bereits.
|
||||
key_name=Schlüsselname
|
||||
key_content=Inhalt
|
||||
@@ -324,14 +343,36 @@ no_activity=Keine neuen Aktivitäten
|
||||
key_state_desc=Dieser Schlüssel wurde in den letzten 7 Tagen verwendet
|
||||
token_state_desc=Dieses Token wurde in den letzten 7 Tagen benutzt
|
||||
|
||||
manage_social=Verknüpfte soziale Konten verwalten
|
||||
social_desc=Dies ist eine Liste verknüpfter sozialer Konten. Bitte entfernen Sie alle Verknüpfungen, die Ihnen nicht bekannt sind.
|
||||
unbind=Verknüpfung entfernen
|
||||
unbind_success=Die Verknüpfung zum sozialen Konto wurde entfernt.
|
||||
two_factor=Zwei-Faktor-Authentifizierung
|
||||
two_factor_status=Status:
|
||||
two_factor_on=Ein
|
||||
two_factor_off=Aus
|
||||
two_factor_enable=Aktivieren
|
||||
two_factor_disable=Deaktivieren
|
||||
two_factor_view_recovery_codes=Betrachten und verwahren Sie <a href="%s%s">Ihre Wiederherstellungscodes</a> an einem sicheren Ort. Sie können diese als Passwort-Code nutzen, auch wenn Sie den Zugriff zu Ihrer Authentifizierungsanwendung verloren haben.
|
||||
two_factor_http=Für HTTP/HTTPS-Operationen können Sie keine schlichten Benutzernamen und Passwörter mehr nutzen. Bitte erstellen und benutzen Sie ein <a href="%[1]s%[2]s">Persönliches Zugriffs-Token</a> als Ihre Anmeldeinformation, z.B. <code>%[3]s</code>.
|
||||
two_factor_enable_title=Zwei-Faktor-Authentifizierung aktivieren
|
||||
two_factor_scan_qr=Bitte benutzen Sie Ihre Authentifizierungsanwendung, um das Bild zu scannen:
|
||||
two_factor_or_enter_secret=Oder geben Sie Ihren Geheim-Code ein:
|
||||
two_factor_then_enter_passcode=Geben Sie die PIN ein:
|
||||
two_factor_verify=Bestätigen
|
||||
two_factor_invalid_passcode=Die eingegebene PIN ist ungültig. Bitte versuchen Sie es erneut!
|
||||
two_factor_reused_passcode=Der von dir eingegebene Passcode wurde bereits verwendet, bitte probiere einen anderen!
|
||||
two_factor_enable_error=Einschalten der Zwei-Faktor-Authentifizierung ist fehlgeschlagen: %v
|
||||
two_factor_enable_success=Die Zwei-Faktor-Authentifizierung wurde für Ihr Konto erfolgreich aktiviert!
|
||||
two_factor_recovery_codes_title=Zwei-Faktor-Authentifizierung-Wiederherstellungscodes
|
||||
two_factor_recovery_codes_desc=Wiederherstellungscodes sind dazu gedacht, verwendet zu werden, wenn Sie vorübergehend keinen Zugriff zu Ihrer Authentifizierungsanwendung haben. Jeder Wiederherstellungscode kann nur einmal verwendet werden. <b>Bitte bewahren Sie diese Codes an einem sicheren Ort auf</b>.
|
||||
two_factor_regenerate_recovery_codes=Wiederherstellungscodes neu generieren
|
||||
two_factor_regenerate_recovery_codes_error=Das erneute Generieren der Wiederherstellungscodes ist fehlgeschlagen: %v
|
||||
two_factor_regenerate_recovery_codes_success=Die neuen Wiederherstellungscodes wurden erfolgreich generiert!
|
||||
two_factor_disable_title=Zwei-Faktor-Authentifizierung deaktivieren
|
||||
two_factor_disable_desc=Das Sicherheitsniveau Ihres Kontos wird deutlich reduziert sein, nachdem die Zwei-Faktor-Authentifizierung deaktiviert wurde. Möchten Sie fortfahren?
|
||||
two_factor_disable_success=Die Zwei-Faktor-Authentifizierung wurde erfolgreich deaktiviert!
|
||||
|
||||
manage_access_token=Verwaltung persönlicher Zugangs-Token
|
||||
generate_new_token=Neues Token erzeugen
|
||||
tokens_desc=Die von Ihnen erzeugten Token können zum Zugriff auf die Gogs-API verwendet werden.
|
||||
access_token_tips=Der persönliche Zugangs-Token kann entweder als Benutzername oder als Passwort verwendet werden. Es wird empfohlen den "x-access-token" als Benutzernamen und den persönlichen Zugangs-Token als Passwort für Git-Anwendungen zu verwenden.
|
||||
new_token_desc=Jeder Token erlaubt vollen Zugriff auf ihr Konto.
|
||||
token_name=Token-Name
|
||||
generate_token=Token generieren
|
||||
@@ -340,6 +381,7 @@ delete_token=Löschen
|
||||
access_token_deletion=Persönlichen Token entfernen
|
||||
access_token_deletion_desc=Das Löschen dieses persönlichen Zugangs-Tokens wird alle zugehörigen Zugriffe der Anwendung entfernen. Möchten Sie fortfahren?
|
||||
delete_token_success=Persönlicher Zugriffs-Token wurde erfolgreich entfernt! Vergessen Sie nicht Ihre Anwendung zu aktualisieren.
|
||||
token_name_exists=Token mit dem gleichen Namen existiert bereits.
|
||||
|
||||
orgs.none=Sie sind kein Mitglied einer Organisation.
|
||||
orgs.leave_title=Organisation verlassen
|
||||
@@ -347,8 +389,8 @@ orgs.leave_desc=Sie verlieren den Zugriff auf alle Repositories und Teams nach d
|
||||
|
||||
repos.leave=Verlassen
|
||||
repos.leave_title=Repository verlassen
|
||||
repos.leave_desc=Der Zugriff zum Repository wird verloren gehen, nachdem diese verlassen wird. Möchten Sie fortfahren?
|
||||
repos.leave_success=Sie haben die Repository '%s' erfolgreich verlassen!
|
||||
repos.leave_desc=Der Zugang zum Repository wird verloren gehen, wenn Sie es verlassen. Möchten Sie fortfahren?
|
||||
repos.leave_success=Sie haben das Repository '%s' erfolgreich verlassen!
|
||||
|
||||
delete_account=Konto löschen
|
||||
delete_prompt=Diese Aktion wird Ihr Konto dauerhaft löschen und kann <strong>NICHT</strong> rückgängig gemacht werden!
|
||||
@@ -361,7 +403,9 @@ owner=Besitzer
|
||||
repo_name=Repository-Name
|
||||
repo_name_helper=Ein guter Repository-Name besteht gewöhnlich aus kurzen, leicht zu merkenden und eindeutigen Schlüsselworten.
|
||||
visibility=Sichtbarkeit
|
||||
unlisted=Ungelistet
|
||||
visiblity_helper=Dieses Repository ist <span class="ui red text">privat</span>
|
||||
unlisted_helper=Dieses Repository ist <span class="ui red text">nicht gelistet</span>
|
||||
visiblity_helper_forced=Der Administrator hat festgelegt, dass alle neuen Repositories <span class="ui red text">privat</span> sein müssen
|
||||
visiblity_fork_helper=(Eine Änderung dieses Wertes wirkt sich auf alle Forks aus)
|
||||
clone_helper=Brauchen Sie Hilfe beim Klonen? Hier gibt es <a target="_blank" href="%s">Hilfe</a>!
|
||||
@@ -387,10 +431,11 @@ mirror_last_synced=Zuletzt synchronisiert
|
||||
watchers=Beobachter
|
||||
stargazers=In Favoriten von
|
||||
forks=Forks
|
||||
repo_description_helper=Beschreibung des Repository. Maximal 512 Zeichen.
|
||||
repo_description_length=Verfügbare Zeichen
|
||||
|
||||
form.reach_limit_of_creation=Der Besitzer hat die maximale Anzahl von %d erstellbaren Repositories erreicht.
|
||||
form.name_reserved=Repository-Name '%s' ist reserviert.
|
||||
form.name_pattern_not_allowed=Repository-Namen der Form '%s' sind nicht erlaubt.
|
||||
form.name_not_allowed=Repository name or pattern %q is not allowed.
|
||||
|
||||
need_auth=Authorisierung benötigt
|
||||
migrate_type=Migrationstyp
|
||||
@@ -401,6 +446,7 @@ migrate.clone_address_desc=Dies kann eine HTTP/HTTPS/GIT-URL sein.
|
||||
migrate.clone_address_desc_import_local=Sie dürfen auch ein Repository vom lokalen Serverpfad migrieren.
|
||||
migrate.permission_denied=Ihnen fehlen die Rechte zum Importieren lokaler Repositories.
|
||||
migrate.invalid_local_path=Der lokale Pfad ist ungültig, existiert nicht oder ist kein Ordner.
|
||||
migrate.clone_address_resolved_to_blocked_local_address=Klonadresse in eine lokale Netzwerkadresse aufgelöst, die implizit blockiert ist.
|
||||
migrate.failed=Fehler bei Migration: %v
|
||||
|
||||
mirror_from=Mirror von
|
||||
@@ -420,7 +466,7 @@ quick_guide=Kurzanleitung
|
||||
clone_this_repo=Dieses Repository klonen
|
||||
create_new_repo_command=Erstellen Sie ein neues Repository mittels der Kommandozeile
|
||||
push_exist_repo=Bestehendes Repository von der Kommandozeile pushen
|
||||
bare_message=Diese Repository hat noch keinen Inhalt.
|
||||
bare_message=Dieses Repository hat noch keinen Inhalt.
|
||||
|
||||
files=Dateien
|
||||
branch=Branch
|
||||
@@ -448,6 +494,8 @@ branches.stale_branches=Alte Branches
|
||||
branches.all=Alle Branches
|
||||
branches.updated_by=Aktualisiert %[1]s von %[2]s
|
||||
branches.change_default_branch=Ändere Standard-Branch
|
||||
branches.default_deletion_not_allowed=Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed=Cannot delete a protected branch.
|
||||
|
||||
editor.new_file=Neue Datei
|
||||
editor.upload_file=Datei hochladen
|
||||
@@ -484,6 +532,7 @@ editor.file_changed_while_editing=Seit dem Start der Bearbeitung hat sich die Da
|
||||
editor.file_already_exists=Eine Datei mit dem Namen '%s' existiert bereits in diesem Repository.
|
||||
editor.no_changes_to_show=Keine Änderungen vorhanden.
|
||||
editor.fail_to_update_file=Fehler beim Ändern/Erstellen der Datei '%s'. Fehler: %v
|
||||
editor.fail_to_delete_file=Fehler beim Löschen der Datei '%s'. Fehler: %v
|
||||
editor.add_subdir=Unterverzeichnis erstellen...
|
||||
editor.unable_to_upload_files=Fehler beim Hochladen der Dateien zu '%s'. Fehler: %v
|
||||
editor.upload_files_to_dir=Dateien hochladen nach '%s'
|
||||
@@ -586,6 +635,7 @@ pulls.compare_compare=vergleichen
|
||||
pulls.filter_branch=Branch filtern
|
||||
pulls.no_results=Keine Ergebnisse verfügbar.
|
||||
pulls.nothing_to_compare=Es gibt nichts zu vergleichen, da Base- und Head-Branch gleich sind.
|
||||
pulls.nothing_merge_base=Es gibt nichts zu vergleichen, da beide Zweige eine komplett unterschiedliche Historie haben.
|
||||
pulls.has_pull_request=`Es existiert bereits ein Pull-Request zwischen diesen beiden Zielen: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Pull-Request erstellen
|
||||
pulls.title_desc=möchte %[1]d Commits von <code>%[2]s</code> nach <code>%[3]s</code> zusammenführen
|
||||
@@ -601,6 +651,9 @@ pulls.is_checking=Die Konfliktprüfung läuft noch. Bitte aktualisieren Sie die
|
||||
pulls.can_auto_merge_desc=Dieser Pull-Request kann automatisch zusammengeführt werden.
|
||||
pulls.cannot_auto_merge_desc=Dieser Pull-Request kann nicht automatisch zusammengeführt werden, da es Konflikte gibt.
|
||||
pulls.cannot_auto_merge_helper=Bitte manuell zusammenführen, um die Konflikte zu lösen.
|
||||
pulls.create_merge_commit=Erstelle einen Merge-Commit
|
||||
pulls.rebase_before_merging=Rebase vor dem Zusammenführen
|
||||
pulls.commit_description=Commit Beschreibung
|
||||
pulls.merge_pull_request=Pull-Request zusammenführen
|
||||
pulls.open_unmerged_pull_exists=`Sie können diesen Pull-Request nicht wieder öffnen, da bereits ein offener Pull-Request (#%d) aus dem selben Repository mit den gleichen Merge-Informationen existiert und auf das Zusammenführen wartet.`
|
||||
pulls.delete_branch=Zweig löschen
|
||||
@@ -611,8 +664,8 @@ milestones.open_tab=%d offen
|
||||
milestones.close_tab=%d geschlossen
|
||||
milestones.closed=Geschlossen %s
|
||||
milestones.no_due_date=Kein Fälligkeitsdatum
|
||||
milestones.open=Offen
|
||||
milestones.close=Geschlossen
|
||||
milestones.open=Öffnen
|
||||
milestones.close=Schließen
|
||||
milestones.new_subheader=Erstellen Sie Meilensteine, um ihre Issues zu organisieren.
|
||||
milestones.create=Meilenstein erstellen
|
||||
milestones.title=Titel
|
||||
@@ -660,7 +713,7 @@ settings.branches_bare=Branches leerer Repositories können nicht verwaltet werd
|
||||
settings.default_branch=Standard-Branch
|
||||
settings.default_branch_desc=Der Standard-Branch gilt als Basis für Commits, Pull-Requests und Online-Bearbeitung.
|
||||
settings.update=Aktualisieren
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_unsupported=Die Änderung des Standard-Branch wird von der Git-Version auf dem Server nicht unterstützt.
|
||||
settings.update_default_branch_success=Standard-Branch dieses Repositories wurde erfolgreich aktualisiert!
|
||||
settings.protected_branches=Protected Branches
|
||||
settings.protected_branches_desc=Schützt Branches vor forcierten Pushes und versehentlichem Löschen. Comitter können freigeschaltet werden.
|
||||
@@ -690,13 +743,13 @@ settings.change_reponame_prompt=Diese Änderung wirkt sich darauf aus, wie sich
|
||||
settings.advanced_settings=Erweiterte Einstellungen
|
||||
settings.wiki_desc=Wiki einschalten
|
||||
settings.use_internal_wiki=Eingebautes Wiki verwenden
|
||||
settings.allow_public_wiki_desc=Erlaube öffentlichen Zugang zum Wiki, auch wenn die Repository privat ist.
|
||||
settings.allow_public_wiki_desc=Erlaube öffentlichen Zugang zum Wiki, auch wenn das Repository privat ist
|
||||
settings.use_external_wiki=Externes Wiki verwenden
|
||||
settings.external_wiki_url=Externe Wiki URL
|
||||
settings.external_wiki_url_desc=Besucher werden auf diese URL umgeleitet, wenn sie auf den Tab klicken.
|
||||
settings.issues_desc=Issue-Tracker einschalten
|
||||
settings.use_internal_issue_tracker=Eingebauten Issue-Tracker verwenden
|
||||
settings.allow_public_issues_desc=Erlaube öffentlichen Zugriff auf Issues, auch wenn die Repository privat ist.
|
||||
settings.allow_public_issues_desc=Erlaube öffentlichen Zugriff auf Issues, auch wenn das Repository privat ist
|
||||
settings.use_external_issue_tracker=Externes Issue-System verwenden
|
||||
settings.external_tracker_url=URL eines externen Issue Trackers
|
||||
settings.external_tracker_url_desc=Besucher werden auf diese URL umgeleitet, wenn sie auf den Tab klicken.
|
||||
@@ -705,7 +758,9 @@ settings.tracker_issue_style=Namenskonvention des externen Issue-Trackers:
|
||||
settings.tracker_issue_style.numeric=Numerisch
|
||||
settings.tracker_issue_style.alphanumeric=Alphanumerisch
|
||||
settings.tracker_url_format_desc=Sie können die Platzhalter <code>{user} {repo} {index}</code> für den Benutzernamen, den Namen des Repositories und die Issue-Nummer verwenden.
|
||||
settings.pulls_desc=Pull-Requests aktivieren, um öffentliche Mitwirkung zu ermöglichen
|
||||
settings.pulls_desc=Erlaube Pull-Requests zur Zusammenarbeit von Repositories und Branches
|
||||
settings.pulls.ignore_whitespace=Ignoriere whitespace Änderungen
|
||||
settings.pulls.allow_rebase_merge=Die Verwendung von Rebase erlauben, um Commits zu mergen
|
||||
settings.danger_zone=Gefahrenzone
|
||||
settings.cannot_fork_to_same_owner=Besitzer kann das Repository nicht forken.
|
||||
settings.new_owner_has_same_repo=Der neue Eigentümer hat bereits ein Repository mit dem gleichen Namen. Bitte wählen Sie einen anderen Namen.
|
||||
@@ -715,12 +770,12 @@ settings.convert_notices_1=- Dieser Vorgang wandelt das Mirror-Repository in ein
|
||||
settings.convert_confirm=Umwandlung bestätigen
|
||||
settings.convert_succeed=Das Repository wurde erfolgreich in ein normales Repository umgewandelt.
|
||||
settings.transfer=Besitz übertragen
|
||||
settings.transfer_desc=Dieses Repository auf einen anderen Benutzer bzw. eine Organisation in der Sie Admin-Rechte haben übertragen.
|
||||
settings.transfer_desc=Dieses Repository auf einen anderen Benutzer oder eine Organisation, in der Sie Admin-Rechte haben, übertragen.
|
||||
settings.transfer_notices_1=- Sie werden keinen Zugriff mehr haben, wenn der neue Besitzer ein individueller Benutzer ist.
|
||||
settings.transfer_notices_2=- Sie werden weiterhin Zugriff haben, wenn der neue Besitzer eine Organisation ist und Sie einer der Besitzer sind.
|
||||
settings.transfer_form_title=Bitte geben Sie die folgenden Informationen ein, um die Operation zu bestätigen:
|
||||
settings.wiki_delete=Wiki-Daten löschen
|
||||
settings.wiki_delete_desc=Das Löschen von Wiki Daten kann nicht rückgängig gemacht werden. Bitte seien Sie vorsichtig.
|
||||
settings.wiki_delete_desc=Das Löschen von Wiki-Daten kann nicht rückgängig gemacht werden. Bitte seien Sie vorsichtig.
|
||||
settings.wiki_delete_notices_1=- Dies löscht und deaktiviert das Wiki für %s
|
||||
settings.wiki_deletion_success=Repository Wiki Daten erfolgreich gelöscht.
|
||||
settings.delete=Dieses Repository löschen
|
||||
@@ -742,8 +797,10 @@ settings.collaborator_deletion_desc=Nach dem Löschen wird dieser Benutzer keine
|
||||
settings.remove_collaborator_success=Mitarbeiter wurde entfernt.
|
||||
settings.search_user_placeholder=Benutzer suchen...
|
||||
settings.org_not_allowed_to_be_collaborator=Eine Organisation kann nicht als Mitarbeiter hinzugefügt werden.
|
||||
settings.add_webhook=Webhook hinzufügen
|
||||
settings.hooks_desc=Webhooks erlauben es Ihnen, externe Dienste zu informieren, wenn etwas Bestimmtes in Ihrem Repository passiert. Gogs sendet dann einen POST-Request an alle angegebenen URLs. Erfahren Sie mehr in unserem <a target="_blank" href="%s">Webhooks Guide</a>.
|
||||
settings.webhooks.add_new=Einen neuen Webhook hinzufügen:
|
||||
settings.webhooks.choose_a_type=Typ auswählen...
|
||||
settings.add_webhook=Webhook hinzufügen
|
||||
settings.webhook_deletion=Webhook entfernen
|
||||
settings.webhook_deletion_desc=Das Löschen dieses Webhooks wird alle zugehörigen Informationen und den Übertragungsverlauf entfernen. Wirklich fortfahren?
|
||||
settings.webhook_deletion_success=Webhook wurde erfolgreich entfernt!
|
||||
@@ -757,6 +814,8 @@ settings.webhook.response=Antwort
|
||||
settings.webhook.headers=Kopfzeilen
|
||||
settings.webhook.payload=Nutzdaten
|
||||
settings.webhook.body=Inhalt
|
||||
settings.webhook.err_cannot_parse_payload_url=Payload URL kann nicht analysiert werden: %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address=Die Payload-URL wurde in eine lokale Netzwerkadresse aufgelöst, die implizit blockiert ist.
|
||||
settings.githooks_desc=Git-Hooks werden von Git selbst bereitgestellt. Sie können die Dateien der unterstützten Hooks in der Liste unten bearbeiten, um eigene Operationen einzubinden.
|
||||
settings.githook_edit_desc=Wenn ein Hook inaktiv ist, wird der Standardinhalt benutzt. Lassen Sie den Inhalt leer, um den Hook zu deaktivieren.
|
||||
settings.githook_name=Hook-Name
|
||||
@@ -784,10 +843,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push auf ein Repository
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue geöffnet, geschlossen, wieder geöffnet, bearbeitet, zugewiesen, nicht zugewiesen, Label aktualisiert, Label gelöscht, einem Meilenstein zugewiesen oder davon entfernt.
|
||||
settings.event_issue_comment=Issue-Kommentar
|
||||
settings.event_issue_comment_desc=Issue-Kommentar angelegt, geändert oder gelöscht.
|
||||
settings.event_pull_request=Pull-Request
|
||||
settings.event_pull_request_desc=Pull-Request geöffnet, geschlossen, wieder geöffnet, bearbeitet, zugewiesen, nicht zugewiesen, Label aktualisiert, Label gelöscht, einem Meilenstein zugewiesen, davon entfernt oder synchronisiert.
|
||||
settings.event_issue_comment=Issue-Kommentar
|
||||
settings.event_issue_comment_desc=Issue-Kommentar angelegt, geändert oder gelöscht.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release in Repository veröffentlicht.
|
||||
settings.active=Aktiv
|
||||
@@ -800,6 +859,7 @@ settings.recent_deliveries=Letzte Zustellungen
|
||||
settings.hook_type=Hook Typ
|
||||
settings.add_slack_hook_desc=Fügen Sie <a href="%s">Slack</a>-Integration zu Ihrem Repository hinzu.
|
||||
settings.add_discord_hook_desc=Fügen Sie <a href="%s">Discord</a>-Integration zu Ihrem Repository hinzu.
|
||||
settings.add_dingtalk_hook_desc=<a href="%s">Dingtalk</a>-Integration zu deinem Repository hinzufügen.
|
||||
settings.slack_token=Token
|
||||
settings.slack_domain=Domain
|
||||
settings.slack_channel=Kanal
|
||||
@@ -816,6 +876,8 @@ settings.add_key_success=Der Deploy-Schlüssel '%s' wurde erfolgreich hinzugefü
|
||||
settings.deploy_key_deletion=Deploy-Schlüssel löschen
|
||||
settings.deploy_key_deletion_desc=Nach dem Löschen dieses Deploy-Schlüssels werden entsprechende Zugriffe auf dieses Repository nicht mehr möglich sein. Möchten Sie wirklich fortfahren?
|
||||
settings.deploy_key_deletion_success=Deploy-Schlüssel wurde erfolgreich gelöscht!
|
||||
settings.description_desc=Beschreibung des Repository. Maximal 512 Zeichen.
|
||||
settings.description_length=Verfügbare Zeichen
|
||||
|
||||
diff.browse_source=Quellcode durchsuchen
|
||||
diff.parent=Ursprung
|
||||
@@ -880,9 +942,8 @@ team_name_helper=Unter diesem Namen können Sie in Diskussionen auf das Team ver
|
||||
team_desc_helper=Worum geht es bei diesem Team?
|
||||
team_permission_desc=Welche Berechtigungsstufe soll das Team haben?
|
||||
|
||||
form.name_reserved=Organisationsname '%s' ist bereits vergeben.
|
||||
form.name_pattern_not_allowed=Organisationsnamen der Form '%s' sind nicht erlaubt.
|
||||
form.team_name_reserved=Der Teamname '%s' ist reserviert.
|
||||
form.name_not_allowed=Organisationsname oder Muster %q ist nicht zulässig.
|
||||
form.team_name_not_allowed=Benutzername oder Muster %q ist nicht erlaubt.
|
||||
|
||||
settings=Einstellungen
|
||||
settings.options=Optionen
|
||||
@@ -954,12 +1015,19 @@ first_page=Erste
|
||||
last_page=Letzte
|
||||
total=Gesamt: %d
|
||||
|
||||
dashboard.build_info=Build-Informationen
|
||||
dashboard.app_ver=Anwendungsversion
|
||||
dashboard.git_version=Git-Version
|
||||
dashboard.go_version=Go-Version
|
||||
dashboard.build_time=Build-Zeit
|
||||
dashboard.build_commit=Build-Commit
|
||||
dashboard.statistic=Statistik
|
||||
dashboard.operations=Operationen
|
||||
dashboard.system_status=Systemmonitor-Status
|
||||
dashboard.statistic_info=Gogs Datenbank hat <b>%d</b> Benutzer, <b>%d</b> Organisationen, <b>%d</b> öffentliche Schlüssel, <b>%d</b> Repositories, <b>%d</b> Beobachtet, <b>%d</b> Favoriten, <b>%d</b> Aktionen, <b>%d</b> Zugriffe, <b>%d</b> Issues, <b>%d</b> Kommentare, <b>%d</b> Konten sozialer Medien, <b>%d</b> Folgende, <b>%d</b> Mirror, <b>%d</b> Releases, <b>%d</b> Login-Quellen, <b>%d</b> Webhooks, <b>%d</b> Meilensteine, <b>%d</b> Label, <b>%d</b> Hook-Tasks, <b>%d</b> Teams, <b>%d</b> Aktualisierungs-Tasks, <b>%d</b> Anhänge.
|
||||
dashboard.operation_name=Name der Operation
|
||||
dashboard.operation_switch=Wechseln
|
||||
dashboard.select_operation_to_run=Bitte wählen Sie den auszuführenden Vorgang aus
|
||||
dashboard.operation_run=Ausführen
|
||||
dashboard.clean_unbind_oauth=Nicht verbundene OAuths bereinigen
|
||||
dashboard.clean_unbind_oauth_success=Alle nicht verbundenen OAuth-Tokens wurden gelöscht.
|
||||
@@ -973,7 +1041,7 @@ dashboard.git_gc_repos=Garbage Collection auf Repositories ausführen
|
||||
dashboard.git_gc_repos_success=Garbage Collection wurde auf allen Repositories erfolgreich ausgeführt.
|
||||
dashboard.resync_all_sshkeys=Datei '.ssh/authorized_keys' neu anlegen (Achtung: Schlüssel, die nicht zu Gogs gehören gehen verloren)
|
||||
dashboard.resync_all_sshkeys_success=Alle öffentlichen Keys wurden erfolgreich neu geschrieben.
|
||||
dashboard.resync_all_hooks=Synchronisiere pre-receive, update und post-receive Hooks für alle Repositorien
|
||||
dashboard.resync_all_hooks=Synchronisiere pre-receive, update und post-receive Hooks für alle Repositories
|
||||
dashboard.resync_all_hooks_success=Pre-receive, update und post-receive Hooks aller Repositorien wurden erfolgreich synchronisiert.
|
||||
dashboard.reinit_missing_repos=Alle Repository-Datensätze mit verloren gegangenen Git-Dateien neu initialisieren
|
||||
dashboard.reinit_missing_repos_success=Alle Repository-Datensätze, die Git-Dateien verloren haben wurden erfolgreich neu initialisiert.
|
||||
@@ -1051,11 +1119,12 @@ repos.stars=Favoriten
|
||||
repos.issues=Issues
|
||||
repos.size=Größe
|
||||
|
||||
auths.auth_manage_panel=Authentifizierung
|
||||
auths.auth_sources=Authentifizierungsquelle
|
||||
auths.new=Neue Quelle hinzufügen
|
||||
auths.name=Name
|
||||
auths.type=Typ
|
||||
auths.enabled=Aktiviert
|
||||
auths.default=Standard
|
||||
auths.updated=Aktualisiert
|
||||
auths.auth_type=Authentifizierungstyp
|
||||
auths.auth_name=Authentifizierungsname
|
||||
@@ -1064,15 +1133,21 @@ auths.domain=Domain
|
||||
auths.host=Host
|
||||
auths.port=Port
|
||||
auths.bind_dn=DN binden
|
||||
auths.bind_dn_helper=Sie können "%s" als Platzhalter für den Benutzernamen einsetzen, z.B. DOM\%s
|
||||
auths.bind_password=Passwort binden
|
||||
auths.bind_password_helper=Achtung: Das Passwort wird im Klartext gespeichert. Benutzen Sie kein Konto mit hoher Berechtigungsstufe.
|
||||
auths.user_base=Basis für Benutzersuche
|
||||
auths.user_dn=Benutzer-DN
|
||||
auths.attribute_username=Attribut Benutzername
|
||||
auths.attribute_username_placeholder=Leer lassen, um den Wert aus dem Anmeldeformular als Benutzernamen zu verwenden.
|
||||
auths.attribute_name=Attribut Vorname
|
||||
auths.attribute_name=Vornamenattribut
|
||||
auths.attribute_surname=Attribut Nachname
|
||||
auths.attribute_mail=Attribut E-Mail
|
||||
auths.verify_group_membership=Überprüfen der Gruppenmitgliedschaft
|
||||
auths.group_search_base_dn=Gruppensuche Basisdomainname
|
||||
auths.group_filter=Gruppenfilter
|
||||
auths.group_attribute_contain_user_list=Gruppenattribut, beinhaltet die Benutzerliste
|
||||
auths.user_attribute_listed_in_group=Benutzerattribut in der Gruppenliste
|
||||
auths.attributes_in_bind=Hole Attribute im Bind-Kontext
|
||||
auths.filter=Benutzerfilter
|
||||
auths.admin_filter=Admin Filter
|
||||
@@ -1086,9 +1161,9 @@ auths.enable_tls=TLS-Verschlüsselung aktivieren
|
||||
auths.skip_tls_verify=TLS-Prüfung überspringen
|
||||
auths.pam_service_name=PAM Dienstname
|
||||
auths.enable_auto_register=Automatische Registrierung aktivieren
|
||||
auths.tips=Tipps
|
||||
auths.edit=Authentifizierungseinstellungen bearbeiten
|
||||
auths.activated=Diese Authentifizierung ist aktiv
|
||||
auths.default_auth=Diese Authentifizierungsmethode ist die Vorgabe
|
||||
auths.new_success=Neue Authentifizierung '%s' wurde erfolgreich hinzugefügt.
|
||||
auths.update_success=Die Authentifizierungseinstellungen wurden erfolgreich aktualisiert.
|
||||
auths.update=Authentifizierungseinstellungen aktualisieren
|
||||
@@ -1098,115 +1173,186 @@ auths.delete_auth_desc=Diese Authentifizierung wird gelöscht. Möchten Sie fort
|
||||
auths.still_in_used=Diese Authentifizierung wird noch von einigen Benutzern verwendet. Bitte löschen Sie diese Benutzer oder ändern Sie deren Anmeldetyp.
|
||||
auths.deletion_success=Authentifizierung wurde erfolgreich gelöscht!
|
||||
auths.login_source_exist=Login-Quelle '%s' ist bereits vorhanden.
|
||||
auths.github_api_endpoint=API Endpunkt
|
||||
|
||||
config.not_set=(nicht festgelegt)
|
||||
config.server_config=Serverkonfiguration
|
||||
config.app_name=Name der Anwendung
|
||||
config.app_ver=Anwendungsversion
|
||||
config.app_url=Anwendungs-URL
|
||||
config.domain=Domain
|
||||
config.offline_mode=Offline-Modus
|
||||
config.disable_router_log=Router-Log deaktivieren
|
||||
config.brand_name=Markenname
|
||||
config.run_user=Ausführender Benutzer
|
||||
config.run_mode=Laufzeit-Modus
|
||||
config.git_version=Git Version
|
||||
config.static_file_root_path=Verzeichnis für statische Dateien
|
||||
config.log_file_root_path=Log-Verzeichnis
|
||||
config.reverse_auth_user=Nutzer bei Reverse-Authentifizierung
|
||||
config.server.external_url=Externe URL
|
||||
config.server.domain=Domäne
|
||||
config.server.protocol=Protokoll
|
||||
config.server.http_addr=HTTP-Adresse
|
||||
config.server.http_port=HTTP-Port
|
||||
config.server.cert_file=Zertifikatsdatei
|
||||
config.server.key_file=Schlüsseldatei
|
||||
config.server.tls_min_version=Minimale TLS-Version
|
||||
config.server.unix_socket_permission=Unix-Socket-Berechtigung
|
||||
config.server.local_root_url=Lokale Root-URL
|
||||
config.server.offline_mode=Offline-Modus
|
||||
config.server.disable_router_log=Router-Log deaktivieren
|
||||
config.server.enable_gzip=Gzip aktivieren
|
||||
config.server.app_data_path=Anwendungsdatenpfad
|
||||
config.server.load_assets_from_disk=Assets von Festplatte laden
|
||||
config.server.landing_url=Startseite
|
||||
|
||||
config.ssh_config=SSH Konfiguration
|
||||
config.ssh_enabled=Aktiviert
|
||||
config.ssh_start_builtin_server=Eingebauten Server starten
|
||||
config.ssh_domain=Domain
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Listen Port
|
||||
config.ssh_root_path=Verzeichnis
|
||||
config.ssh_key_test_path=Schlüssel-Test-Pfad
|
||||
config.ssh_keygen_path=Keygen ('ssh-keygen') Pfad
|
||||
config.ssh_minimum_key_size_check=Prüfung der Mindestschlüssellänge
|
||||
config.ssh_minimum_key_sizes=Minimale Schlüssellängen
|
||||
config.ssh.enabled=Aktiviert
|
||||
config.ssh.domain=Exponierte Domain
|
||||
config.ssh.port=Exponierter Port
|
||||
config.ssh.root_path=Wurzelpfad
|
||||
config.ssh.keygen_path=Keygenpfad
|
||||
config.ssh.key_test_path=Schlüsseltestpfad
|
||||
config.ssh.minimum_key_size_check=Prüfung der Mindestschlüssellänge
|
||||
config.ssh.minimum_key_sizes=Mindestschlüssellängen
|
||||
config.ssh.rewrite_authorized_keys_at_start=Beim Start "authorized_keys" umschreiben
|
||||
config.ssh.start_builtin_server=Eingebauten Server starten
|
||||
config.ssh.listen_host=Listen-Host
|
||||
config.ssh.listen_port=Listen-Port
|
||||
config.ssh.server_ciphers=Serverchiffren
|
||||
config.ssh.server_macs=Server MACs
|
||||
config.ssh.server_algorithms=Server-Algorithmen
|
||||
|
||||
config.repo_config=Repository-Konfiguration
|
||||
config.repo_root_path=Repository-Verzeichnis
|
||||
config.script_type=Skript-Typ
|
||||
config.repo_force_private=Erzwinge privat
|
||||
config.max_creation_limit=Maximal erstellbare Anzahl
|
||||
config.preferred_licenses=Bevorzugte Lizenzen
|
||||
config.disable_http_git=Deaktiviere HTTP-Git
|
||||
config.enable_local_path_migration=Erlaube Migration von lokalem Pfad
|
||||
config.commits_fetch_concurrency=Anzahl gleichzeitiger Commit-/Fetch-Prozesse
|
||||
config.repo.root_path=Wurzelpfad
|
||||
config.repo.script_type=Skript-Typ
|
||||
config.repo.ansi_chatset=ANSI-Zeichensatz
|
||||
config.repo.force_private=Privat erzwingen
|
||||
config.repo.max_creation_limit=Maximales Erstellungslimit
|
||||
config.repo.preferred_licenses=Bevorzugte Lizenzen
|
||||
config.repo.disable_http_git=HTTP-Git deaktivieren
|
||||
config.repo.enable_local_path_migration=Lokale Pfadmigration aktivieren
|
||||
config.repo.enable_raw_file_render_mode=Darstellen von Roh-Dateien aktivieren
|
||||
config.repo.commits_fetch_concurrency=Anzahl gleichzeitiger Commit-/Fetch-Prozesse
|
||||
config.repo.editor.line_wrap_extensions=Editor Erweiterungen für Zeilenumbrüche
|
||||
config.repo.editor.previewable_file_modes=Vorschau der Dateimodi des Editors
|
||||
config.repo.upload.enabled=Upload aktiviert
|
||||
config.repo.upload.temp_path=Temporärer Pfad für Uploads
|
||||
config.repo.upload.allowed_types=Erlaubte Upload-Typen
|
||||
config.repo.upload.file_max_size=Upload-Dateigrößenlimit
|
||||
config.repo.upload.max_files=Upload-Dateilimit
|
||||
|
||||
config.db_config=Datenbankkonfiguration
|
||||
config.db_type=Typ
|
||||
config.db_host=Host
|
||||
config.db_name=Name
|
||||
config.db_user=Benutzer
|
||||
config.db_ssl_mode=SSL-Modus
|
||||
config.db_ssl_mode_helper=(nur für "postgres")
|
||||
config.db_path=Verzeichnis
|
||||
config.db_path_helper=(für "sqlite3" und "tidb")
|
||||
config.db.type=Typ
|
||||
config.db.host=Host
|
||||
config.db.name=Name
|
||||
config.db.schema=Schema
|
||||
config.db.schema_helper=(nur für "postgres")
|
||||
config.db.user=Benutzer
|
||||
config.db.ssl_mode=SSL-Modus
|
||||
config.db.ssl_mode_helper=(nur für "postgres")
|
||||
config.db.path=Pfad
|
||||
config.db.path_helper=(nur für "sqlite3")
|
||||
config.db.max_open_conns=Maximale Anzahl offener Verbindungen
|
||||
config.db.max_idle_conns=Maximale Leerlaufverbindungen
|
||||
|
||||
config.service_config=Service-Konfiguration
|
||||
config.register_email_confirm=E-Mail-Bestätigung bei Registrierung
|
||||
config.disable_register=Registrierung deaktivieren
|
||||
config.show_registration_button=Schaltfläche Registrieren anzeigen
|
||||
config.require_sign_in_view=Ansehen erfordert Anmeldung
|
||||
config.mail_notify=E-Mail-Benachrichtigung
|
||||
config.disable_key_size_check=Prüfung der Mindestschlüssellänge deaktiveren
|
||||
config.enable_captcha=Captcha aktivieren
|
||||
config.active_code_lives=Aktivierungscode Lebensdauer
|
||||
config.reset_password_code_lives=Passwortcode Lebensdauer
|
||||
config.security_config=Sicherheitskonfiguration
|
||||
config.security.login_remember_days=Anzahl Tage zum Speichern des Logins
|
||||
config.security.cookie_remember_name=Cookie merken
|
||||
config.security.cookie_username=Benutzernamen-Cookie
|
||||
config.security.cookie_secure=Sicheres Cookie aktivieren
|
||||
config.security.reverse_proxy_auth_user=Reverse-Proxy-Authentifizierungs-Header
|
||||
config.security.enable_login_status_cookie=Login-Status-Cookie aktivieren
|
||||
config.security.login_status_cookie_name=Login-Status-Cookie
|
||||
config.security.local_network_allowlist=Zulassungsliste für lokale Netzwerke
|
||||
|
||||
config.webhook_config=Webhook-Konfiguration
|
||||
config.queue_length=Warteschlangenlänge
|
||||
config.deliver_timeout=Zeitlimit für Zustellung
|
||||
config.skip_tls_verify=TLS verifikation überspringen
|
||||
config.email_config=E-Mail-Konfiguration
|
||||
config.email.enabled=Aktiviert
|
||||
config.email.subject_prefix=Betreff-Präfix
|
||||
config.email.host=Host
|
||||
config.email.from=Von
|
||||
config.email.user=Benutzer
|
||||
config.email.disable_helo=HELO deaktivieren
|
||||
config.email.helo_hostname=HELO Hostname
|
||||
config.email.skip_verify=Zertifikatsüberprüfung überspringen
|
||||
config.email.use_certificate=Benutzerdefiniertes Zertifikat verwenden
|
||||
config.email.cert_file=Zertifikatsdatei
|
||||
config.email.key_file=Schlüsseldatei
|
||||
config.email.use_plain_text=Klartext verwenden
|
||||
config.email.add_plain_text_alt=Klartext-Alternative hinzufügen
|
||||
config.email.send_test_mail=Test-E-Mail senden
|
||||
config.email.test_mail_failed=Fehler beim Senden der Test-E-Mail an '%s': %v
|
||||
config.email.test_mail_sent=Test-E-Mail wurde an '%s ' gesendet.
|
||||
|
||||
config.mailer_config=Mailer-Konfiguration
|
||||
config.mailer_enabled=Aktiviert
|
||||
config.mailer_disable_helo=HELO Deaktivieren
|
||||
config.mailer_name=Name
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Benutzer
|
||||
config.send_test_mail=Test-E-Mail senden
|
||||
config.test_mail_failed=Das Senden der Test-E-Mail an '%s': %v ist fehlgeschlagen
|
||||
config.test_mail_sent=Test-E-Mail wurde an '%s' gesendet.
|
||||
config.auth_config=Authentifizierungskonfiguration
|
||||
config.auth_custom_logout_url=Custom logout URL
|
||||
config.auth.activate_code_lives=Aktivierungscode Lebensdauer
|
||||
config.auth.reset_password_code_lives=Gültigkeitsdauer Zurücksetzungs-Code
|
||||
config.auth.require_email_confirm=E-Mail-Bestätigung erforderlich
|
||||
config.auth.require_sign_in_view=Anmeldung erforderlich
|
||||
config.auth.disable_registration=Registrierung deaktivieren
|
||||
config.auth.enable_registration_captcha=Registrierungs-Captcha aktivieren
|
||||
config.auth.enable_reverse_proxy_authentication=Reverse-Proxy-Authentifizierung aktivieren
|
||||
config.auth.enable_reverse_proxy_auto_registration=Automatische Reverse-Proxy-Registrierung aktivieren
|
||||
config.auth.reverse_proxy_authentication_header=Reverse-Proxy-Authentifizierungs-Header
|
||||
|
||||
config.oauth_config=OAuth-Konfiguration
|
||||
config.oauth_enabled=Aktiviert
|
||||
|
||||
config.cache_config=Cache-Konfiguration
|
||||
config.cache_adapter=Cache-Adapter
|
||||
config.cache_interval=Cache-Intervall
|
||||
config.cache_conn=Cache-Anbindung
|
||||
config.user_config=Benutzerkonfiguration
|
||||
config.user.enable_email_notify=E-Mail-Benachrichtigung aktivieren
|
||||
|
||||
config.session_config=Session-Konfiguration
|
||||
config.session_provider=Session-Provider
|
||||
config.provider_config=Provider-Einstellungen
|
||||
config.cookie_name=Cookie-Name
|
||||
config.enable_set_cookie=Cookies verwenden
|
||||
config.gc_interval_time=GC-Intervall
|
||||
config.session_life_time=Session-Lebensdauer
|
||||
config.https_only=Nur HTTPS
|
||||
config.cookie_life_time=Cookie-Lebensdauer
|
||||
config.session.provider=Anbieter
|
||||
config.session.provider_config=Anbieter-Konfiguration
|
||||
config.session.cookie_name=Cookie
|
||||
config.session.https_only=Nur HTTPS
|
||||
config.session.gc_interval=GC-Intervall
|
||||
config.session.max_life_time=Maximale Lebensdauer
|
||||
config.session.csrf_cookie_name=CSRF-Cookie
|
||||
|
||||
config.cache_config=Cache-Konfiguration
|
||||
config.cache.adapter=Adapter
|
||||
config.cache.interval=GC-Intervall
|
||||
config.cache.host=Host
|
||||
|
||||
config.http_config=HTTP-Konfiguration
|
||||
config.http.access_control_allow_origin=Access-Control-Allow-Origin
|
||||
|
||||
config.attachment_config=Anhang-Konfiguration
|
||||
config.attachment.enabled=Aktiviert
|
||||
config.attachment.path=Pfad
|
||||
config.attachment.allowed_types=Erlaubte Typen
|
||||
config.attachment.max_size=Größenlimit
|
||||
config.attachment.max_files=Dateilimit
|
||||
|
||||
config.release_config=Release-Konfiguration
|
||||
config.release.attachment.enabled=Anhang aktiviert
|
||||
config.release.attachment.allowed_types=Erlaubte Anhang-Typen
|
||||
config.release.attachment.max_size=Größenlimit für Anhang
|
||||
config.release.attachment.max_files=Dateilimit für Anhang
|
||||
|
||||
config.picture_config=Konfiguration der Profilbilder
|
||||
config.picture_service=Bildservice
|
||||
config.disable_gravatar=Gravatar deaktivieren
|
||||
config.enable_federated_avatar=Föderierte Profilbilder einschalten
|
||||
config.picture.avatar_upload_path=Benutzer-Avatar Upload-Pfad
|
||||
config.picture.repo_avatar_upload_path=Repository-Avatar Upload-Pfad
|
||||
config.picture.gravatar_source=Gravatar-Quelle
|
||||
config.picture.disable_gravatar=Gravatar deaktivieren
|
||||
config.picture.enable_federated_avatar=Föderierte Avatare aktivieren
|
||||
|
||||
config.mirror_config=Mirror-Konfiguration
|
||||
config.mirror.default_interval=Standardintervall
|
||||
|
||||
config.webhook_config=Webhook-Konfiguration
|
||||
config.webhook.types=Typen
|
||||
config.webhook.deliver_timeout=Zeitlimit für Zustellung
|
||||
config.webhook.skip_tls_verify=TLS-Prüfung überspringen
|
||||
|
||||
config.git_config=Git Konfiguration
|
||||
config.git_disable_diff_highlight=Diff Syntaxhervorhebung ausschalten
|
||||
config.git_max_diff_lines=Max Diff Zeilen (in einer Datei)
|
||||
config.git_max_diff_line_characters=Max Diff Zeichen (in einer Zeile)
|
||||
config.git_max_diff_files=Max Diff Dateien (Anzeige)
|
||||
config.git_gc_args=GC-Argumente
|
||||
config.git_migrate_timeout=Zeitlimit für Migration
|
||||
config.git_mirror_timeout=Zeitlimit für Mirror-Aktualisierung
|
||||
config.git_clone_timeout=Zeitlimit für Clone
|
||||
config.git_pull_timeout=Zeitlimit für Pull
|
||||
config.git_gc_timeout=Zeitlimit für GC
|
||||
config.git.disable_diff_highlight=Diff-Syntaxhervorhebung ausschalten
|
||||
config.git.max_diff_lines=Zeilenlimit für Diff (für eine einzelne Datei)
|
||||
config.git.max_diff_line_characters=Zeichenlimit für Diff (für eine einzelne Datei)
|
||||
config.git.max_diff_files=Dateilimit für Diff (für einen einzelnen Diff)
|
||||
config.git.gc_args=GC-Argumente
|
||||
config.git.migrate_timeout=Zeitlimit für Migration
|
||||
config.git.mirror_timeout=Zeitlimit zum Spiegeln
|
||||
config.git.clone_timeout=Clone-Timeout
|
||||
config.git.pull_timeout=Pull-Timeout
|
||||
config.git.gc_timeout=GC-Timeout
|
||||
|
||||
config.lfs_config=LFS-Konfiguration
|
||||
config.lfs.storage=Speicher
|
||||
config.lfs.objects_path=Objektpfad
|
||||
|
||||
config.log_config=Konfiguration des Loggings
|
||||
config.log_file_root_path=Log-Verzeichnis
|
||||
config.log_mode=Modus
|
||||
config.log_options=Optionen
|
||||
|
||||
@@ -1237,7 +1383,6 @@ notices.delete_success=Systemmitteilungen wurden erfolgreich gelöscht.
|
||||
|
||||
[action]
|
||||
create_repo=hat das Repository <a href="%s">%s</a> erstellt
|
||||
fork_repo=hat das Repository nach <a href="%s">%s</a> geforkt
|
||||
rename_repo=hat das Repository von <code>%[1]s</code> zu <a href="%[2]s">%[3]s</a> umbenannt
|
||||
commit_repo=hat auf <a href="%[1]s/src/%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a> gepusht
|
||||
compare_commits=Zeige Vergleich für diese %d Commits
|
||||
@@ -1249,11 +1394,15 @@ comment_issue=`hat Issue <a href="%s/issues/%s">%s#%[2]s</a> kommentiert`
|
||||
create_pull_request=`hat Pull-Request <a href="%s/pulls/%s">%s#%[2]s</a> erstellt`
|
||||
close_pull_request=`hat Pull-Request <a href="%s/pulls/%s">%s#%[2]s</a> geschlossen`
|
||||
reopen_pull_request=`hat den Pull-Request <a href="%s/pulls/%s">%s#%[2]s</a> wieder geöffnet`
|
||||
merge_pull_request=`hat Pull-Request <a href="%s/pulls/%s">%s#%[2]s</a> zuammengeführt`
|
||||
merge_pull_request=`hat Pull-Request <a href="%s/pulls/%s">%s#%[2]s</a> zusammengeführt`
|
||||
create_branch=hat neuen Branch <a href="%[1]s/src/%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a> angelegt
|
||||
delete_branch=hat Branch <code>%[2]s</code> in <a href="%[1]s">%[3]s</a> gelöscht
|
||||
push_tag=hat Tag <a href="%s/src/%s">%[2]s</a> auf <a href="%[1]s">%[3]s</a> gepusht
|
||||
delete_tag=hat Tag <code>%[2]s</code> in <a href="%[1]s">%[3]s</a> gelöscht
|
||||
fork_repo=hat das Repository nach <a href="%s">%s</a> geforkt
|
||||
mirror_sync_push=hat auf <a href="%[1]s/src/%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a> gepusht
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=vor
|
||||
@@ -1275,6 +1424,7 @@ months=%[2]s %[1]d Monaten
|
||||
years=%[2]s %[1]d Jahren
|
||||
raw_seconds=Sekunden
|
||||
raw_minutes=Minuten
|
||||
raw_hours=Stunden
|
||||
|
||||
[dropzone]
|
||||
default_message=Zum Hochladen hier klicken oder Datei hier ablegen.
|
||||
|
||||
1511
conf/locale/locale_en-GB.ini
Normal file
1511
conf/locale/locale_en-GB.ini
Normal file
File diff suppressed because it is too large
Load Diff
@@ -9,7 +9,6 @@ sign_out = Sign Out
|
||||
sign_up = Sign Up
|
||||
register = Register
|
||||
website = Website
|
||||
version = Version
|
||||
page = Page
|
||||
template = Template
|
||||
language = Language
|
||||
@@ -44,17 +43,22 @@ issues = Issues
|
||||
|
||||
cancel = Cancel
|
||||
|
||||
[status]
|
||||
page_not_found = Page Not Found
|
||||
internal_server_error = Internal Server Error
|
||||
|
||||
[install]
|
||||
install = Installation
|
||||
title = Install Steps For First-time Run
|
||||
docker_helper = If you're running Gogs inside Docker, please read <a target="_blank" href="%s">Guidelines</a> carefully before you change anything in this page!
|
||||
requite_db_desc = Gogs requires MySQL, PostgreSQL, SQLite3, MSSQL or TiDB.
|
||||
requite_db_desc = Gogs requires MySQL, PostgreSQL, SQLite3 or TiDB (via MySQL protocol).
|
||||
db_title = Database Settings
|
||||
db_type = Database Type
|
||||
host = Host
|
||||
user = User
|
||||
password = Password
|
||||
db_name = Database Name
|
||||
db_schema = Schema
|
||||
db_helper = Please use INNODB engine with utf8_general_ci charset for MySQL.
|
||||
ssl_mode = SSL Mode
|
||||
path = Path
|
||||
@@ -84,6 +88,7 @@ log_root_path = Log Path
|
||||
log_root_path_helper = Directory to write log files to.
|
||||
enable_console_mode = Enable Console Mode
|
||||
enable_console_mode_popup = In addition to file mode, also print logs to console.
|
||||
default_branch = Default Branch
|
||||
|
||||
optional_title = Optional Settings
|
||||
email_title = Email Service Settings
|
||||
@@ -107,20 +112,21 @@ enable_captcha = Enable Captcha
|
||||
enable_captcha_popup = Require validate captcha for user self-registration.
|
||||
require_sign_in_view = Enable Require Sign In to View Pages
|
||||
require_sign_in_view_popup = Only signed in users can view pages, visitors will only be able to see sign in/up pages.
|
||||
admin_setting_desc = You do not have to create an admin account right now, user whoever ID=1 will gain admin access automatically.
|
||||
admin_setting_desc = You don't need to create an admin account right now. The first user in the users table will be automatically granted admin access.
|
||||
admin_title = Admin Account Settings
|
||||
admin_name = Username
|
||||
admin_password = Password
|
||||
confirm_password = Confirm Password
|
||||
admin_email = Admin Email
|
||||
install_gogs = Install Gogs
|
||||
test_git_failed = Fail to test 'git' command: %v
|
||||
sqlite3_not_available = Your release version does not support SQLite3, please download the official binary version from %s, NOT the gobuild version.
|
||||
test_git_failed = Failed to test 'git' command: %v
|
||||
invalid_db_setting = Database setting is not correct: %v
|
||||
invalid_repo_path = Repository root path is invalid: %v
|
||||
run_user_not_match = Run user isn't the current user: %s -> %s
|
||||
invalid_smtp_from = SMTP From field is not valid: %v
|
||||
save_config_failed = Fail to save configuration: %v
|
||||
smtp_host_missing_port = SMTP Host port missing from address.
|
||||
invalid_smtp_from = SMTP From field is invalid: %v
|
||||
save_config_failed = Failed to save configuration: %v
|
||||
init_failed = Failed to initialize application: %v
|
||||
invalid_admin_setting = Admin account setting is invalid: %v
|
||||
install_success = Welcome! We're glad that you chose Gogs, have fun and take care.
|
||||
invalid_log_root_path = Log root path is invalid: %v
|
||||
@@ -150,6 +156,8 @@ register_hepler_msg = Already have an account? Sign in now!
|
||||
social_register_hepler_msg = Already have an account? Bind now!
|
||||
disable_register_prompt = Sorry, registration has been disabled. Please contact the site administrator.
|
||||
disable_register_mail = Sorry, email services are disabled. Please contact the site administrator.
|
||||
auth_source = Authentication Source
|
||||
local = Local
|
||||
remember_me = Remember Me
|
||||
forgot_password= Forgot Password
|
||||
forget_password = Forgot password?
|
||||
@@ -157,17 +165,25 @@ sign_up_now = Need an account? Sign up now.
|
||||
confirmation_mail_sent_prompt = A new confirmation email has been sent to <b>%s</b>, please check your inbox within the next %d hours to complete the registration process.
|
||||
active_your_account = Activate Your Account
|
||||
prohibit_login = Login Prohibited
|
||||
prohibit_login_desc = Your account is prohibited to login, please contact site admin.
|
||||
prohibit_login_desc = Your account is prohibited from logging in. Please contact the site admin.
|
||||
resent_limit_prompt = Sorry, you already requested an activation email recently. Please wait 3 minutes then try again.
|
||||
has_unconfirmed_mail = Hi %s, you have an unconfirmed email address (<b>%s</b>). If you haven't received a confirmation email or need to resend a new one, please click on the button below.
|
||||
has_unconfirmed_mail = Hi %s, you have an unconfirmed email address (<b>%s</b>). If you haven't received a confirmation email or need to receive a new one, please click the button below.
|
||||
resend_mail = Click here to resend your activation email
|
||||
send_reset_mail = Click here to (re)send your password reset email
|
||||
reset_password = Reset Your Password
|
||||
invalid_code = Sorry, your confirmation code has expired or not valid.
|
||||
reset_password_helper = Click here to reset your password
|
||||
password_too_short = Password length cannot be less then 6.
|
||||
password_too_short = Password length must be at least 6 characters.
|
||||
non_local_account = Non-local accounts cannot change passwords through Gogs.
|
||||
|
||||
login_two_factor = Two-factor Authentication
|
||||
login_two_factor_passcode = Authentication Passcode
|
||||
login_two_factor_enter_recovery_code = Enter a two-factor recovery code
|
||||
login_two_factor_recovery = Two-factor Recovery
|
||||
login_two_factor_recovery_code = Recovery Code
|
||||
login_two_factor_enter_passcode = Enter a two-factor passcode
|
||||
login_two_factor_invalid_recovery_code = Recovery code already used or invalid.
|
||||
|
||||
[mail]
|
||||
activate_account = Please activate your account
|
||||
activate_email = Verify your email address
|
||||
@@ -201,10 +217,10 @@ TreeName = File path
|
||||
Content = Content
|
||||
|
||||
require_error = ` cannot be empty.`
|
||||
alpha_dash_error = ` must be valid alpha or numeric or dash(-_) characters.`
|
||||
alpha_dash_dot_error = ` must be valid alpha or numeric or dash(-_) or dot characters.`
|
||||
alpha_dash_dot_slash_error = ` must be valid alpha or numeric or dash(-_) or dot characters or slashes.`
|
||||
size_error = ` must be size %s.`
|
||||
alpha_dash_error = ` must be alphanumeric or dash(-_) characters.`
|
||||
alpha_dash_dot_error = ` must be alphanumeric or dash(-_) or dot characters.`
|
||||
alpha_dash_dot_slash_error = ` must be alphanumeric, dash (-_), dot or slash characters.`
|
||||
size_error = ` size must be %s.`
|
||||
min_size_error = ` must contain at least %s characters.`
|
||||
max_size_error = ` must contain at most %s characters.`
|
||||
email_error = ` is not a valid email address.`
|
||||
@@ -220,14 +236,15 @@ org_name_been_taken = Organization name has already been taken.
|
||||
team_name_been_taken = Team name has already been taken.
|
||||
email_been_used = Email address has already been used.
|
||||
username_password_incorrect = Username or password is not correct.
|
||||
auth_source_mismatch = The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name = Please make sure that the repository name you entered is correct.
|
||||
enterred_invalid_owner_name = Please make sure that the owner name you entered is correct.
|
||||
enterred_invalid_password = Please make sure the that password you entered is correct.
|
||||
user_not_exist = Given user does not exist.
|
||||
last_org_owner = Removing the last user from a owner team isn't allowed, as there must always be at least one owner in any given organization.
|
||||
last_org_owner = Removing the last remaining user from an owner team is not allowed, as an organization must always have at least one owner.
|
||||
|
||||
invalid_ssh_key = Sorry, we're not able to verify your SSH key: %s
|
||||
unable_verify_ssh_key = Gogs cannot verify your SSH key, but we assume that it is valid, please double-check it.
|
||||
invalid_ssh_key = Sorry, verification of your SSH key failed: %s
|
||||
unable_verify_ssh_key = Gogs cannot verify your SSH key, but it's assumed to be valid. Please double-check it.
|
||||
auth_failed = Authentication failed: %v
|
||||
|
||||
still_own_repo = Your account still has ownership over at least one repository, you have to delete or transfer them first.
|
||||
@@ -247,14 +264,14 @@ following = Following
|
||||
follow = Follow
|
||||
unfollow = Unfollow
|
||||
|
||||
form.name_reserved = Username '%s' is reserved.
|
||||
form.name_pattern_not_allowed = Username pattern '%s' is not allowed.
|
||||
form.name_not_allowed = User name or pattern %q is not allowed.
|
||||
|
||||
[settings]
|
||||
profile = Profile
|
||||
password = Password
|
||||
avatar = Avatar
|
||||
ssh_keys = SSH Keys
|
||||
security = Security
|
||||
repos = Repositories
|
||||
orgs = Organizations
|
||||
applications = Applications
|
||||
@@ -287,7 +304,7 @@ old_password = Current Password
|
||||
new_password = New Password
|
||||
retype_new_password = Retype New Password
|
||||
password_incorrect = Current password is not correct.
|
||||
change_password_success = Your password was successfully changed. You can now sign using this new password.
|
||||
change_password_success = Your password was successfully changed and can now be used for logging in.
|
||||
password_change_disabled = Non-local type users are not allowed to change their password.
|
||||
|
||||
emails = Email Addresses
|
||||
@@ -299,8 +316,9 @@ delete_email = Delete
|
||||
email_deletion = Email Deletion
|
||||
email_deletion_desc = Deleting this email address will remove related information from your account. Do you want to continue?
|
||||
email_deletion_success = Email has been deleted successfully!
|
||||
email_deletion_primary = Cannot delete primary email address.
|
||||
add_new_email = Add new email address
|
||||
add_email = Add email
|
||||
add_email = Add Email
|
||||
add_email_confirmation_sent = A new confirmation email has been sent to '%s', please check your inbox within the next %d hours to complete the confirmation process.
|
||||
add_email_success = Your new email address was successfully added.
|
||||
|
||||
@@ -324,14 +342,36 @@ no_activity = No recent activity
|
||||
key_state_desc = This key is used in last 7 days
|
||||
token_state_desc = This token is used in last 7 days
|
||||
|
||||
manage_social = Manage Associated Social Accounts
|
||||
social_desc = This is a list of associated social accounts. Remove any binding that you do not recognize.
|
||||
unbind = Unbind
|
||||
unbind_success = Social account has been unbound.
|
||||
two_factor = Two-factor Authentication
|
||||
two_factor_status = Status:
|
||||
two_factor_on = On
|
||||
two_factor_off = Off
|
||||
two_factor_enable = Enable
|
||||
two_factor_disable = Disable
|
||||
two_factor_view_recovery_codes = View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
|
||||
two_factor_http = For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
|
||||
two_factor_enable_title = Enable Two-factor Authentication
|
||||
two_factor_scan_qr = Please use your authentication application to scan the image:
|
||||
two_factor_or_enter_secret = Or enter the secret:
|
||||
two_factor_then_enter_passcode = Then enter passcode:
|
||||
two_factor_verify = Verify
|
||||
two_factor_invalid_passcode = The passcode you entered is not valid, please try again!
|
||||
two_factor_reused_passcode = The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error = Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success = Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title = Two-factor Authentication Recovery Codes
|
||||
two_factor_recovery_codes_desc = Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
|
||||
two_factor_regenerate_recovery_codes = Regenerate Recovery Codes
|
||||
two_factor_regenerate_recovery_codes_error = Regenerate recovery codes failed: %v
|
||||
two_factor_regenerate_recovery_codes_success = New recovery codes has been generated successfully!
|
||||
two_factor_disable_title = Disable Two-factor Authentication
|
||||
two_factor_disable_desc = Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
|
||||
two_factor_disable_success = Two-factor authentication has disabled successfully!
|
||||
|
||||
manage_access_token = Manage Personal Access Tokens
|
||||
generate_new_token = Generate New Token
|
||||
tokens_desc = Tokens you have generated that can be used to access the Gogs APIs.
|
||||
access_token_tips=The personal access token may be used as either username or password. It is recommended to use the "x-access-token" as the username and the personal access token as the password for Git applications.
|
||||
new_token_desc = Each token will have full access to your account.
|
||||
token_name = Token Name
|
||||
generate_token = Generate Token
|
||||
@@ -340,6 +380,7 @@ delete_token = Delete
|
||||
access_token_deletion = Personal Access Token Deletion
|
||||
access_token_deletion_desc = Delete this personal access token will remove all related accesses of application. Do you want to continue?
|
||||
delete_token_success = Personal access token has been removed successfully! Don't forget to update your application as well.
|
||||
token_name_exists = Token with same name already exists.
|
||||
|
||||
orgs.none = You are not a member of any organizations.
|
||||
orgs.leave_title = Leave organization
|
||||
@@ -361,7 +402,9 @@ owner = Owner
|
||||
repo_name = Repository Name
|
||||
repo_name_helper = A good repository name is usually composed of short, memorable and unique keywords.
|
||||
visibility = Visibility
|
||||
unlisted = Unlisted
|
||||
visiblity_helper = This repository is <span class="ui red text">Private</span>
|
||||
unlisted_helper = This repository is <span class="ui red text">Unlisted</span>
|
||||
visiblity_helper_forced = Site admin has forced all new repositories to be <span class="ui red text">Private</span>
|
||||
visiblity_fork_helper = (Change of this value will affect all forks)
|
||||
clone_helper = Need help cloning? Visit <a target="_blank" href="%s">Help</a>!
|
||||
@@ -387,10 +430,11 @@ mirror_last_synced = Last Synced
|
||||
watchers = Watchers
|
||||
stargazers = Stargazers
|
||||
forks = Forks
|
||||
repo_description_helper = Description of repository. Maximum 512 characters length.
|
||||
repo_description_length = Available characters
|
||||
|
||||
form.reach_limit_of_creation = The owner has reached maximum creation limit of %d repositories.
|
||||
form.name_reserved = Repository name '%s' is reserved.
|
||||
form.name_pattern_not_allowed = Repository name pattern '%s' is not allowed.
|
||||
form.name_not_allowed = Repository name or pattern %q is not allowed.
|
||||
|
||||
need_auth = Need Authorization
|
||||
migrate_type = Migration Type
|
||||
@@ -401,6 +445,7 @@ migrate.clone_address_desc = This can be a HTTP/HTTPS/GIT URL.
|
||||
migrate.clone_address_desc_import_local = You're also allowed to migrate a repository by local server path.
|
||||
migrate.permission_denied = You are not allowed to import local repositories.
|
||||
migrate.invalid_local_path = Invalid local path, it does not exist or not a directory.
|
||||
migrate.clone_address_resolved_to_blocked_local_address = Clone address resolved to a local network address that is implicitly blocked.
|
||||
migrate.failed = Migration failed: %v
|
||||
|
||||
mirror_from = mirror of
|
||||
@@ -448,6 +493,8 @@ branches.stale_branches = Stale Branches
|
||||
branches.all = All Branches
|
||||
branches.updated_by = Updated %[1]s by %[2]s
|
||||
branches.change_default_branch = Change Default Branch
|
||||
branches.default_deletion_not_allowed = Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed = Cannot delete a protected branch.
|
||||
|
||||
editor.new_file = New file
|
||||
editor.upload_file = Upload file
|
||||
@@ -484,6 +531,7 @@ editor.file_changed_while_editing = File content has been changed since you star
|
||||
editor.file_already_exists = A file with name '%s' already exists in this repository.
|
||||
editor.no_changes_to_show = There are no changes to show.
|
||||
editor.fail_to_update_file = Failed to update/create file '%s' with error: %v
|
||||
editor.fail_to_delete_file = Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir = Add subdirectory...
|
||||
editor.unable_to_upload_files = Failed to upload files to '%s' with error: %v
|
||||
editor.upload_files_to_dir = Upload files to '%s'
|
||||
@@ -586,6 +634,7 @@ pulls.compare_compare = compare
|
||||
pulls.filter_branch = Filter branch
|
||||
pulls.no_results = No results found.
|
||||
pulls.nothing_to_compare = There is nothing to compare because base and head branches are even.
|
||||
pulls.nothing_merge_base = There is nothing to compare because two branches have completely different history.
|
||||
pulls.has_pull_request = `There is already a pull request between these two targets: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create = Create Pull Request
|
||||
pulls.title_desc = wants to merge %[1]d commits from <code>%[2]s</code> into <code>%[3]s</code>
|
||||
@@ -601,6 +650,9 @@ pulls.is_checking = The conflict checking is still in progress, please refresh p
|
||||
pulls.can_auto_merge_desc = This pull request can be merged automatically.
|
||||
pulls.cannot_auto_merge_desc = This pull request can't be merged automatically because there are conflicts.
|
||||
pulls.cannot_auto_merge_helper = Please merge manually in order to resolve the conflicts.
|
||||
pulls.create_merge_commit = Create a merge commit
|
||||
pulls.rebase_before_merging = Rebase before merging
|
||||
pulls.commit_description = Commit Description
|
||||
pulls.merge_pull_request = Merge Pull Request
|
||||
pulls.open_unmerged_pull_exists = `You can't perform reopen operation because there is already an open pull request (#%d) from same repository with same merge information and is waiting for merging.`
|
||||
pulls.delete_branch = Delete Branch
|
||||
@@ -705,7 +757,9 @@ settings.tracker_issue_style = External Issue Tracker Naming Style:
|
||||
settings.tracker_issue_style.numeric = Numeric
|
||||
settings.tracker_issue_style.alphanumeric = Alphanumeric
|
||||
settings.tracker_url_format_desc = You can use placeholder <code>{user} {repo} {index}</code> for user name, repository name and issue index.
|
||||
settings.pulls_desc = Enable pull requests to accept public contributions
|
||||
settings.pulls_desc = Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace = Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge = Allow use rebase to merge commits
|
||||
settings.danger_zone = Danger Zone
|
||||
settings.cannot_fork_to_same_owner = You cannot fork a repository to its original owner.
|
||||
settings.new_owner_has_same_repo = The new owner already has a repository with same name. Please choose another name.
|
||||
@@ -726,7 +780,7 @@ settings.wiki_deletion_success = Repository wiki data have been erased successfu
|
||||
settings.delete = Delete This Repository
|
||||
settings.delete_desc = Once you delete a repository, there is no going back. Please be certain.
|
||||
settings.delete_notices_1 = - This operation <strong>CANNOT</strong> be undone.
|
||||
settings.delete_notices_2 = - This operation will permanently delete the everything of this repository, including Git data, issues, comments and accesses of collaborators.
|
||||
settings.delete_notices_2 = - This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1 = - All forks will become independent after deletion.
|
||||
settings.deletion_success = Repository has been deleted successfully!
|
||||
settings.update_settings_success = Repository options has been updated successfully.
|
||||
@@ -742,8 +796,10 @@ settings.collaborator_deletion_desc = This user will no longer have collaboratio
|
||||
settings.remove_collaborator_success = Collaborator has been removed.
|
||||
settings.search_user_placeholder = Search user...
|
||||
settings.org_not_allowed_to_be_collaborator = Organization is not allowed to be added as a collaborator.
|
||||
settings.add_webhook = Add Webhook
|
||||
settings.hooks_desc = Webhooks are much like basic HTTP POST event triggers. Whenever something occurs in Gogs, we will handle the notification to the target host you specify. Learn more in this <a target="_blank" href="%s">Webhooks Guide</a>.
|
||||
settings.hooks_desc = Webhooks are much like basic HTTP POST event triggers. Whenever something occurs in Gogs, we will handle the notification to the target host you specify.
|
||||
settings.webhooks.add_new = Add a new webhook:
|
||||
settings.webhooks.choose_a_type = Choose a type...
|
||||
settings.add_webhook = Add webhook
|
||||
settings.webhook_deletion = Delete Webhook
|
||||
settings.webhook_deletion_desc = Delete this webhook will remove its information and all delivery history. Do you want to continue?
|
||||
settings.webhook_deletion_success = Webhook has been deleted successfully!
|
||||
@@ -757,12 +813,14 @@ settings.webhook.response = Response
|
||||
settings.webhook.headers = Headers
|
||||
settings.webhook.payload = Payload
|
||||
settings.webhook.body = Body
|
||||
settings.webhook.err_cannot_parse_payload_url = Cannot parse payload URL: %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address = Payload URL resolved to a local network address that is implicitly blocked.
|
||||
settings.githooks_desc = Git Hooks are powered by Git itself, you can edit files of supported hooks in the list below to perform custom operations.
|
||||
settings.githook_edit_desc = If the hook is inactive, sample content will be presented. Leaving content to an empty value will disable this hook.
|
||||
settings.githook_name = Hook Name
|
||||
settings.githook_content = Hook Content
|
||||
settings.update_githook = Update Hook
|
||||
settings.add_webhook_desc = Gogs will send a <code>POST</code> request to the URL you specify, along with regarding the event that occured. You can also specify what kind of data format you'd like to get upon triggering the hook (JSON, x-www-form-urlencoded, XML, etc). More information can be found in our <a target="_blank" href="%s">Webhooks Guide</a>.
|
||||
settings.add_webhook_desc = Gogs will send a <code>POST</code> request to the URL you specify, along with details regarding the event that occurred. You can also specify what kind of data format you'd like to get upon triggering the hook (JSON, x-www-form-urlencoded, XML, etc). More information can be found in our <a target="_blank" href="%s">Webhooks Guide</a>.
|
||||
settings.payload_url = Payload URL
|
||||
settings.content_type = Content Type
|
||||
settings.secret = Secret
|
||||
@@ -771,9 +829,9 @@ settings.slack_username = Username
|
||||
settings.slack_icon_url = Icon URL
|
||||
settings.slack_color = Color
|
||||
settings.event_desc = When should this webhook be triggered?
|
||||
settings.event_push_only = Just the <code>push</code> event.
|
||||
settings.event_send_everything = I need <strong>everything</strong>.
|
||||
settings.event_choose = Let me choose what I need.
|
||||
settings.event_push_only = Just the <code>push</code> event
|
||||
settings.event_send_everything = I need <strong>everything</strong>
|
||||
settings.event_choose = Let me choose what I need
|
||||
settings.event_create = Create
|
||||
settings.event_create_desc = Branch or tag created
|
||||
settings.event_delete = Delete
|
||||
@@ -784,10 +842,10 @@ settings.event_push = Push
|
||||
settings.event_push_desc = Git push to a repository
|
||||
settings.event_issues = Issues
|
||||
settings.event_issues_desc = Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment = Issue Comment
|
||||
settings.event_issue_comment_desc = Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request = Pull Request
|
||||
settings.event_pull_request_desc = Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment = Issue Comment
|
||||
settings.event_issue_comment_desc = Issue comment created, edited, or deleted.
|
||||
settings.event_release = Release
|
||||
settings.event_release_desc = Release published in a repository.
|
||||
settings.active = Active
|
||||
@@ -800,6 +858,7 @@ settings.recent_deliveries = Recent Deliveries
|
||||
settings.hook_type = Hook Type
|
||||
settings.add_slack_hook_desc = Add <a href="%s">Slack</a> integration to your repository.
|
||||
settings.add_discord_hook_desc = Add <a href="%s">Discord</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc = Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.slack_token = Token
|
||||
settings.slack_domain = Domain
|
||||
settings.slack_channel = Channel
|
||||
@@ -816,6 +875,8 @@ settings.add_key_success = New deploy key '%s' has been added successfully!
|
||||
settings.deploy_key_deletion = Delete Deploy Key
|
||||
settings.deploy_key_deletion_desc = Deleting this deploy key will remove all related accesses for this repository. Do you want to continue?
|
||||
settings.deploy_key_deletion_success = Deploy key has been deleted successfully!
|
||||
settings.description_desc = Description of repository. Maximum 512 characters length.
|
||||
settings.description_length = Available characters
|
||||
|
||||
diff.browse_source = Browse Source
|
||||
diff.parent = parent
|
||||
@@ -880,9 +941,8 @@ team_name_helper = You'll use this name to mention this team in conversations.
|
||||
team_desc_helper = What is this team all about?
|
||||
team_permission_desc = What permission level should this team have?
|
||||
|
||||
form.name_reserved = Organization name '%s' is reserved.
|
||||
form.name_pattern_not_allowed = Organization name pattern '%s' is not allowed.
|
||||
form.team_name_reserved = Team name '%s' is reserved.
|
||||
form.name_not_allowed = Organization name or pattern %q is not allowed.
|
||||
form.team_name_not_allowed = Team name or pattern %q is not allowed.
|
||||
|
||||
settings = Settings
|
||||
settings.options = Options
|
||||
@@ -932,9 +992,9 @@ teams.add_team_member = Add Team Member
|
||||
teams.delete_team_title = Team Deletion
|
||||
teams.delete_team_desc = As this team will be deleted, members of this team may lose access to some repositories. Do you want to continue?
|
||||
teams.delete_team_success = Given team has been deleted successfully.
|
||||
teams.read_permission_desc = This team grants <strong>Read</strong> access: members can view and clone the team's repositories.
|
||||
teams.write_permission_desc = This team grants <strong>Write</strong> access: members can read from and push to the team's repositories.
|
||||
teams.admin_permission_desc = This team grants <strong>Admin</strong> access: members can read from, push to, and add collaborators to the team's repositories.
|
||||
teams.read_permission_desc = Membership in this team grants <strong>Read</strong> access: members can view and clone the team's repositories.
|
||||
teams.write_permission_desc = Membership in this team grants <strong>Write</strong> access: members can read from and push to the team's repositories.
|
||||
teams.admin_permission_desc = Membership in this team grants <strong>Admin</strong> access: members can read from, push to, and add collaborators to the team's repositories.
|
||||
teams.repositories = Team Repositories
|
||||
teams.search_repo_placeholder = Search repository...
|
||||
teams.add_team_repository = Add Team Repository
|
||||
@@ -954,12 +1014,19 @@ first_page = First
|
||||
last_page = Last
|
||||
total = Total: %d
|
||||
|
||||
dashboard.build_info = Build Information
|
||||
dashboard.app_ver = Application version
|
||||
dashboard.git_version = Git version
|
||||
dashboard.go_version = Go version
|
||||
dashboard.build_time = Build time
|
||||
dashboard.build_commit = Build commit
|
||||
dashboard.statistic = Statistics
|
||||
dashboard.operations = Operations
|
||||
dashboard.system_status = System Monitor Status
|
||||
dashboard.statistic_info = Gogs database has <b>%d</b> users, <b>%d</b> organizations, <b>%d</b> public keys, <b>%d</b> repositories, <b>%d</b> watches, <b>%d</b> stars, <b>%d</b> actions, <b>%d</b> accesses, <b>%d</b> issues, <b>%d</b> comments, <b>%d</b> social accounts, <b>%d</b> follows, <b>%d</b> mirrors, <b>%d</b> releases, <b>%d</b> login sources, <b>%d</b> webhooks, <b>%d</b> milestones, <b>%d</b> labels, <b>%d</b> hook tasks, <b>%d</b> teams, <b>%d</b> update tasks, <b>%d</b> attachments.
|
||||
dashboard.operation_name = Operation Name
|
||||
dashboard.operation_switch = Switch
|
||||
dashboard.select_operation_to_run = Please select operation to run
|
||||
dashboard.operation_run = Run
|
||||
dashboard.clean_unbind_oauth = Clean unbound OAuthes
|
||||
dashboard.clean_unbind_oauth_success = All unbind OAuthes have been deleted successfully.
|
||||
@@ -1051,11 +1118,12 @@ repos.stars = Stars
|
||||
repos.issues = Issues
|
||||
repos.size = Size
|
||||
|
||||
auths.auth_manage_panel = Authentication Manage Panel
|
||||
auths.auth_sources = Authentication Sources
|
||||
auths.new = Add New Source
|
||||
auths.name = Name
|
||||
auths.type = Type
|
||||
auths.enabled = Enabled
|
||||
auths.default = Default
|
||||
auths.updated = Updated
|
||||
auths.auth_type = Authentication Type
|
||||
auths.auth_name = Authentication Name
|
||||
@@ -1064,15 +1132,21 @@ auths.domain = Domain
|
||||
auths.host = Host
|
||||
auths.port = Port
|
||||
auths.bind_dn = Bind DN
|
||||
auths.bind_dn_helper = You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_password = Bind Password
|
||||
auths.bind_password_helper = Warning: This password is stored in plain text. Do not use a high privileged account.
|
||||
auths.user_base = User Search Base
|
||||
auths.user_dn = User DN
|
||||
auths.attribute_username = Username attribute
|
||||
auths.attribute_username = Username Attribute
|
||||
auths.attribute_username_placeholder = Leave empty to use sign-in form field value for user name.
|
||||
auths.attribute_name = First name attribute
|
||||
auths.attribute_surname = Surname attribute
|
||||
auths.attribute_mail = Email attribute
|
||||
auths.attribute_name = First Name Attribute
|
||||
auths.attribute_surname = Surname Attribute
|
||||
auths.attribute_mail = Email Attribute
|
||||
auths.verify_group_membership = Verify group membership
|
||||
auths.group_search_base_dn = Group Search Base DN
|
||||
auths.group_filter = Group Filter
|
||||
auths.group_attribute_contain_user_list = Group Attribute Containing List of Users
|
||||
auths.user_attribute_listed_in_group = User Attribute Listed in Group
|
||||
auths.attributes_in_bind = Fetch attributes in Bind DN context
|
||||
auths.filter = User Filter
|
||||
auths.admin_filter = Admin Filter
|
||||
@@ -1086,9 +1160,9 @@ auths.enable_tls = Enable TLS Encryption
|
||||
auths.skip_tls_verify = Skip TLS Verify
|
||||
auths.pam_service_name = PAM Service Name
|
||||
auths.enable_auto_register = Enable Auto Registration
|
||||
auths.tips = Tips
|
||||
auths.edit = Edit Authentication Setting
|
||||
auths.activated = This authentication is activated
|
||||
auths.default_auth = This authentication is default login source
|
||||
auths.new_success = New authentication '%s' has been added successfully.
|
||||
auths.update_success = Authentication setting has been updated successfully.
|
||||
auths.update = Update Authentication Setting
|
||||
@@ -1098,115 +1172,185 @@ auths.delete_auth_desc = This authentication is going to be deleted, do you want
|
||||
auths.still_in_used = This authentication is still used by some users, please delete or convert these users to another login type first.
|
||||
auths.deletion_success = Authentication has been deleted successfully!
|
||||
auths.login_source_exist = Login source '%s' already exists.
|
||||
auths.github_api_endpoint = API Endpoint
|
||||
|
||||
config.server_config = Server Configuration
|
||||
config.app_name = Application Name
|
||||
config.app_ver = Application Version
|
||||
config.app_url = Application URL
|
||||
config.domain = Domain
|
||||
config.offline_mode = Offline Mode
|
||||
config.disable_router_log = Disable Router Log
|
||||
config.run_user = Run User
|
||||
config.run_mode = Run Mode
|
||||
config.git_version = Git Version
|
||||
config.static_file_root_path = Static File Root Path
|
||||
config.log_file_root_path = Log File Root Path
|
||||
config.reverse_auth_user = Reverse Authentication User
|
||||
config.not_set = (not set)
|
||||
config.server_config = Server configuration
|
||||
config.brand_name = Brand name
|
||||
config.run_user = Run user
|
||||
config.run_mode = Run mode
|
||||
config.server.external_url = External URL
|
||||
config.server.domain = Domain
|
||||
config.server.protocol = Protocol
|
||||
config.server.http_addr = HTTP address
|
||||
config.server.http_port = HTTP port
|
||||
config.server.cert_file = Certificate file
|
||||
config.server.key_file = Key file
|
||||
config.server.tls_min_version = Minimum TLS version
|
||||
config.server.unix_socket_permission = Unix socket permission
|
||||
config.server.local_root_url = Local root URL
|
||||
config.server.offline_mode = Offline mode
|
||||
config.server.disable_router_log = Disable router log
|
||||
config.server.enable_gzip = Enable Gzip
|
||||
config.server.app_data_path = Application data path
|
||||
config.server.load_assets_from_disk = Load assets from disk
|
||||
config.server.landing_url = Landing URL
|
||||
|
||||
config.ssh_config = SSH Configuration
|
||||
config.ssh_enabled = Enabled
|
||||
config.ssh_start_builtin_server = Start Builtin Server
|
||||
config.ssh_domain = Domain
|
||||
config.ssh_port = Port
|
||||
config.ssh_listen_port = Listen Port
|
||||
config.ssh_root_path = Root Path
|
||||
config.ssh_key_test_path = Key Test Path
|
||||
config.ssh_keygen_path = Keygen ('ssh-keygen') Path
|
||||
config.ssh_minimum_key_size_check = Minimum Key Size Check
|
||||
config.ssh_minimum_key_sizes = Minimum Key Sizes
|
||||
config.ssh_config = SSH configuration
|
||||
config.ssh.enabled = Enabled
|
||||
config.ssh.domain = Exposed domain
|
||||
config.ssh.port = Exposed port
|
||||
config.ssh.root_path = Root path
|
||||
config.ssh.keygen_path = Keygen path
|
||||
config.ssh.key_test_path = Key test path
|
||||
config.ssh.minimum_key_size_check = Minimum key size check
|
||||
config.ssh.minimum_key_sizes = Minimum key sizes
|
||||
config.ssh.rewrite_authorized_keys_at_start = Rewrite "authorized_keys" at start
|
||||
config.ssh.start_builtin_server = Start builtin server
|
||||
config.ssh.listen_host = Listen host
|
||||
config.ssh.listen_port = Listen port
|
||||
config.ssh.server_ciphers = Server ciphers
|
||||
config.ssh.server_macs = Server MACs
|
||||
config.ssh.server_algorithms = Server algorithms
|
||||
|
||||
config.repo_config = Repository Configuration
|
||||
config.repo_root_path = Repository Root Path
|
||||
config.script_type = Script Type
|
||||
config.repo_force_private = Force Private
|
||||
config.max_creation_limit = Max Creation Limit
|
||||
config.preferred_licenses = Preferred Licenses
|
||||
config.disable_http_git = Disable HTTP Git
|
||||
config.enable_local_path_migration = Enable Local Path Migration
|
||||
config.commits_fetch_concurrency = Commits Fetch Concurrency
|
||||
config.repo_config = Repository configuration
|
||||
config.repo.root_path = Root path
|
||||
config.repo.script_type = Script type
|
||||
config.repo.ansi_chatset = ANSI charset
|
||||
config.repo.force_private = Force private
|
||||
config.repo.max_creation_limit = Max creation limit
|
||||
config.repo.preferred_licenses = Preferred licenses
|
||||
config.repo.disable_http_git = Disable HTTP Git
|
||||
config.repo.enable_local_path_migration = Enable local path migration
|
||||
config.repo.enable_raw_file_render_mode = Enable raw file render mode
|
||||
config.repo.commits_fetch_concurrency = Commits fetch concurrency
|
||||
config.repo.editor.line_wrap_extensions = Editor line wrap extensions
|
||||
config.repo.editor.previewable_file_modes = Editor previewable file modes
|
||||
config.repo.upload.enabled = Upload enabled
|
||||
config.repo.upload.temp_path = Upload temporary path
|
||||
config.repo.upload.allowed_types = Upload allowed types
|
||||
config.repo.upload.file_max_size = Upload file size limit
|
||||
config.repo.upload.max_files = Upload files limit
|
||||
|
||||
config.db_config = Database Configuration
|
||||
config.db_type = Type
|
||||
config.db_host = Host
|
||||
config.db_name = Name
|
||||
config.db_user = User
|
||||
config.db_ssl_mode = SSL Mode
|
||||
config.db_ssl_mode_helper = (for "postgres" only)
|
||||
config.db_path = Path
|
||||
config.db_path_helper = (for "sqlite3" and "tidb")
|
||||
config.db_config = Database configuration
|
||||
config.db.type = Type
|
||||
config.db.host = Host
|
||||
config.db.name = Name
|
||||
config.db.schema = Schema
|
||||
config.db.schema_helper = (for "postgres" only)
|
||||
config.db.user = User
|
||||
config.db.ssl_mode = SSL mode
|
||||
config.db.ssl_mode_helper = (for "postgres" only)
|
||||
config.db.path = Path
|
||||
config.db.path_helper = (for "sqlite3"only)
|
||||
config.db.max_open_conns = Maximum open connections
|
||||
config.db.max_idle_conns = Maximum idle connections
|
||||
|
||||
config.service_config = Service Configuration
|
||||
config.register_email_confirm = Require Email Confirmation
|
||||
config.disable_register = Disable Registration
|
||||
config.show_registration_button = Show Register Button
|
||||
config.require_sign_in_view = Require Sign In View
|
||||
config.mail_notify = Mail Notification
|
||||
config.disable_key_size_check = Disable Minimum Key Size Check
|
||||
config.enable_captcha = Enable Captcha
|
||||
config.active_code_lives = Active Code Lives
|
||||
config.reset_password_code_lives = Reset Password Code Lives
|
||||
config.security_config = Security configuration
|
||||
config.security.login_remember_days = Login remember days
|
||||
config.security.cookie_remember_name = Remember cookie
|
||||
config.security.cookie_username = Username cookie
|
||||
config.security.cookie_secure = Enable secure cookie
|
||||
config.security.reverse_proxy_auth_user = Reverse proxy authentication header
|
||||
config.security.enable_login_status_cookie = Enable login status cookie
|
||||
config.security.login_status_cookie_name = Login status cookie
|
||||
config.security.local_network_allowlist = Local network allowlist
|
||||
|
||||
config.webhook_config = Webhook Configuration
|
||||
config.queue_length = Queue Length
|
||||
config.deliver_timeout = Deliver Timeout
|
||||
config.skip_tls_verify = Skip TLS Verify
|
||||
config.email_config = Email configuration
|
||||
config.email.enabled = Enabled
|
||||
config.email.subject_prefix = Subject prefix
|
||||
config.email.host = Host
|
||||
config.email.from = From
|
||||
config.email.user = User
|
||||
config.email.helo_hostname = HELO hostname
|
||||
config.email.skip_verify = Skip certificate verify
|
||||
config.email.use_certificate = Use custom certificate
|
||||
config.email.cert_file = Certificate file
|
||||
config.email.key_file = Key file
|
||||
config.email.use_plain_text = Use plain text
|
||||
config.email.add_plain_text_alt = Add plain text alternative
|
||||
config.email.send_test_mail = Send test email
|
||||
config.email.test_mail_failed = Failed to send test email to '%s': %v
|
||||
config.email.test_mail_sent = Test email has been sent to '%s'.
|
||||
|
||||
config.mailer_config = Mailer Configuration
|
||||
config.mailer_enabled = Enabled
|
||||
config.mailer_disable_helo = Disable HELO
|
||||
config.mailer_name = Name
|
||||
config.mailer_host = Host
|
||||
config.mailer_user = User
|
||||
config.send_test_mail = Send Test Email
|
||||
config.test_mail_failed = Fail to send test email to '%s': %v
|
||||
config.test_mail_sent = Test email has been sent to '%s'.
|
||||
config.auth_config = Authentication configuration
|
||||
config.auth_custom_logout_url = Custom logout URL
|
||||
config.auth.activate_code_lives = Activate code lives
|
||||
config.auth.reset_password_code_lives = Reset password code lives
|
||||
config.auth.require_email_confirm = Require email confirmation
|
||||
config.auth.require_sign_in_view = Require sign in view
|
||||
config.auth.disable_registration = Disable registration
|
||||
config.auth.enable_registration_captcha = Enable registration captcha
|
||||
config.auth.enable_reverse_proxy_authentication = Enable reverse proxy authentication
|
||||
config.auth.enable_reverse_proxy_auto_registration = Enable reverse proxy auto registration
|
||||
config.auth.reverse_proxy_authentication_header = Reverse proxy authentication header
|
||||
|
||||
config.oauth_config = OAuth Configuration
|
||||
config.oauth_enabled = Enabled
|
||||
config.user_config = User configuration
|
||||
config.user.enable_email_notify = Enable email notification
|
||||
|
||||
config.cache_config = Cache Configuration
|
||||
config.cache_adapter = Cache Adapter
|
||||
config.cache_interval = Cache Interval
|
||||
config.cache_conn = Cache Connection
|
||||
config.session_config = Session configuration
|
||||
config.session.provider = Provider
|
||||
config.session.provider_config = Provider config
|
||||
config.session.cookie_name = Cookie
|
||||
config.session.https_only = HTTPS only
|
||||
config.session.gc_interval = GC interval
|
||||
config.session.max_life_time = Max life time
|
||||
config.session.csrf_cookie_name = CSRF cookie
|
||||
|
||||
config.session_config = Session Configuration
|
||||
config.session_provider = Session Provider
|
||||
config.provider_config = Provider Config
|
||||
config.cookie_name = Cookie Name
|
||||
config.enable_set_cookie = Enable Set Cookie
|
||||
config.gc_interval_time = GC Interval Time
|
||||
config.session_life_time = Session Life Time
|
||||
config.https_only = HTTPS Only
|
||||
config.cookie_life_time = Cookie Life Time
|
||||
config.cache_config = Cache configuration
|
||||
config.cache.adapter = Adapter
|
||||
config.cache.interval = GC interval
|
||||
config.cache.host = Host
|
||||
|
||||
config.picture_config = Picture Configuration
|
||||
config.picture_service = Picture Service
|
||||
config.disable_gravatar = Disable Gravatar
|
||||
config.enable_federated_avatar = Enable Federated Avatars
|
||||
config.http_config = HTTP configuration
|
||||
config.http.access_control_allow_origin = Access control allow origin
|
||||
|
||||
config.git_config = Git Configuration
|
||||
config.git_disable_diff_highlight = Disable Diff Syntax Highlight
|
||||
config.git_max_diff_lines = Max Diff Lines (for a single file)
|
||||
config.git_max_diff_line_characters = Max Diff Characters (for a single line)
|
||||
config.git_max_diff_files = Max Diff Files (to be shown)
|
||||
config.git_gc_args = GC Arguments
|
||||
config.git_migrate_timeout = Migration Timeout
|
||||
config.git_mirror_timeout = Mirror Update Timeout
|
||||
config.git_clone_timeout = Clone Operation Timeout
|
||||
config.git_pull_timeout = Pull Operation Timeout
|
||||
config.git_gc_timeout = GC Operation Timeout
|
||||
config.attachment_config = Attachment configuration
|
||||
config.attachment.enabled = Enabled
|
||||
config.attachment.path = Path
|
||||
config.attachment.allowed_types = Allowed types
|
||||
config.attachment.max_size = Size limit
|
||||
config.attachment.max_files = Files limit
|
||||
|
||||
config.log_config = Log Configuration
|
||||
config.release_config = Release configuration
|
||||
config.release.attachment.enabled = Attachment enabled
|
||||
config.release.attachment.allowed_types = Attachment allowed types
|
||||
config.release.attachment.max_size = Attachment size limit
|
||||
config.release.attachment.max_files = Attachment files limit
|
||||
|
||||
config.picture_config = Picture configuration
|
||||
config.picture.avatar_upload_path = User avatar upload path
|
||||
config.picture.repo_avatar_upload_path = Repository avatar upload path
|
||||
config.picture.gravatar_source = Gravatar source
|
||||
config.picture.disable_gravatar = Disable Gravatar
|
||||
config.picture.enable_federated_avatar = Enable federated avatars
|
||||
|
||||
config.mirror_config = Mirror configuration
|
||||
config.mirror.default_interval = Default interval
|
||||
|
||||
config.webhook_config = Webhook configuration
|
||||
config.webhook.types = Types
|
||||
config.webhook.deliver_timeout = Deliver timeout
|
||||
config.webhook.skip_tls_verify = Skip TLS verify
|
||||
|
||||
config.git_config = Git configuration
|
||||
config.git.disable_diff_highlight = Disable diff syntax highlight
|
||||
config.git.max_diff_lines = Diff lines limit (for a single file)
|
||||
config.git.max_diff_line_characters = Diff characters limit (for a single line)
|
||||
config.git.max_diff_files = Diff files limit (for a single diff)
|
||||
config.git.gc_args = GC arguments
|
||||
config.git.migrate_timeout = Migration timeout
|
||||
config.git.mirror_timeout = Mirror fetch timeout
|
||||
config.git.clone_timeout = Clone timeout
|
||||
config.git.pull_timeout = Pull timeout
|
||||
config.git.gc_timeout = GC timeout
|
||||
|
||||
config.lfs_config = LFS configuration
|
||||
config.lfs.storage = Storage
|
||||
config.lfs.objects_path = Objects path
|
||||
|
||||
config.log_config = Log configuration
|
||||
config.log_file_root_path = Log file root path
|
||||
config.log_mode = Mode
|
||||
config.log_options = Options
|
||||
|
||||
@@ -1237,7 +1381,6 @@ notices.delete_success = System notices have been deleted successfully.
|
||||
|
||||
[action]
|
||||
create_repo = created repository <a href="%s">%s</a>
|
||||
fork_repo = forked a repository to <a href="%s">%s</a>
|
||||
rename_repo = renamed repository from <code>%[1]s</code> to <a href="%[2]s">%[3]s</a>
|
||||
commit_repo = pushed to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
compare_commits = View comparison for these %d commits
|
||||
@@ -1254,6 +1397,10 @@ create_branch = created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a hre
|
||||
delete_branch = deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag = pushed tag <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a>
|
||||
delete_tag = deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo = forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push = synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create = synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete = synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago = ago
|
||||
@@ -1275,6 +1422,7 @@ months = %d months %s
|
||||
years = %d years %s
|
||||
raw_seconds = seconds
|
||||
raw_minutes = minutes
|
||||
raw_hours = hours
|
||||
|
||||
[dropzone]
|
||||
default_message = Drop files here or click to upload.
|
||||
|
||||
@@ -9,7 +9,6 @@ sign_out=Cerrar sesión
|
||||
sign_up=Registro
|
||||
register=Registro
|
||||
website=Página web
|
||||
version=Versión
|
||||
page=Página
|
||||
template=Plantilla
|
||||
language=Idioma
|
||||
@@ -44,17 +43,22 @@ issues=Incidencias
|
||||
|
||||
cancel=Cancelar
|
||||
|
||||
[status]
|
||||
page_not_found=Página no encontrada
|
||||
internal_server_error=Error Interno del Servidor
|
||||
|
||||
[install]
|
||||
install=Instalación
|
||||
title=Pasos de la instalación por primera vez
|
||||
docker_helper=Si está ejecutando Gogs usando Docker, ¡por favor lea <a target="_blank" href="%s"> estas pautas</a> antes de cambiar nada en esta página!
|
||||
requite_db_desc=Gogs requiere un SGBD como MySQL, PostgreSQL, SQLite3 o TiDB.
|
||||
requite_db_desc=Gogs requiere MySQL, PostgreSQL, SQLite3 o TiDB (a través del protocolo MySQL).
|
||||
db_title=Configuración de base de datos
|
||||
db_type=Tipo de base de datos
|
||||
host=Host
|
||||
user=Usuario
|
||||
password=Contraseña
|
||||
db_name=Nombre de la base de datos
|
||||
db_schema=Esquema
|
||||
db_helper=Por favor utilice el motor INNODB con la configuración de caracteres utf8_general_ci para MySQL.
|
||||
ssl_mode=Modo SSL
|
||||
path=Ruta
|
||||
@@ -84,6 +88,7 @@ log_root_path=Ruta del registro
|
||||
log_root_path_helper=Directorio donde almacenar los registros.
|
||||
enable_console_mode=Activar Modo Consola
|
||||
enable_console_mode_popup=Además del modo archivo, también imprime los registros en consola.
|
||||
default_branch=Rama por defecto
|
||||
|
||||
optional_title=Configuración opcional
|
||||
email_title=Configuración del servicio de correo
|
||||
@@ -114,13 +119,15 @@ admin_password=Contraseña
|
||||
confirm_password=Confirmar Contraseña
|
||||
admin_email=Correo electrónico del administrador
|
||||
install_gogs=Instalar Gogs
|
||||
test_git_failed=Fallo al probar el comando 'git': %v
|
||||
test_git_failed=Error al probar el comando 'git': %v
|
||||
sqlite3_not_available=Tu versión no soporta SQLite3, por favor descarga el binario oficial desde %s, NO la versión de gobuild.
|
||||
invalid_db_setting=La configuración de la base de datos no es correcta: %v
|
||||
invalid_repo_path=La ruta de la raíz del repositorio es inválida: %v
|
||||
run_user_not_match=El usuario que está ejecutando la aplicación no es el usuario actual: %s -> %s
|
||||
smtp_host_missing_port=No se ha definido el puerto para el host SMTP.
|
||||
invalid_smtp_from=El campo SMTP no es válido: %v
|
||||
save_config_failed=Error al guardar la configuración: %v
|
||||
init_failed=Error al inicializar la aplicación: %v
|
||||
invalid_admin_setting=La configuración de la cuenta de administración es inválida: %v
|
||||
install_success=Bienvenido! Estamos encantados de que hayas escogido Gogs, diviértete y cuídate.
|
||||
invalid_log_root_path=La ruta para los registros es inválida: %v
|
||||
@@ -150,6 +157,8 @@ register_hepler_msg=¿Ya tienes una cuenta? ¡Inicia sesión!
|
||||
social_register_hepler_msg=¿Ya tienes una cuenta? ¡Enlázala!
|
||||
disable_register_prompt=Lo sentimos, el registro está deshabilitado. Por favor, contacta con el administrador del sitio.
|
||||
disable_register_mail=Lo sentimos. Los correos de Confirmación de Registro están deshabilitados.
|
||||
auth_source=Authentication Source
|
||||
local=Local
|
||||
remember_me=Recuérdame
|
||||
forgot_password=He olvidado mi contraseña
|
||||
forget_password=¿Has olvidado tu contraseña?
|
||||
@@ -159,15 +168,23 @@ active_your_account=Activa tu cuenta
|
||||
prohibit_login=Ingreso prohibido
|
||||
prohibit_login_desc=Su cuenta tiene prohibido ingresar al sistema, fovor contactar al administrador del sistema.
|
||||
resent_limit_prompt=Lo sentimos, estás solicitando el reenvío del mail de activación con demasiada frecuencia. Por favor, espera 3 minutos.
|
||||
has_unconfirmed_mail=Hola %s, tu correo electrónico (<b>%s</b>) no está confirmado. Si no has recibido un correo de confirmación o necesitas que lo enviemos de nuevo, por favor, haz click en el siguiente botón.
|
||||
has_unconfirmed_mail=Hola %s, tu correo electrónico (<b>%s</b>) no está confirmado. Si no has recibido un correo de confirmación o necesitas que te lo enviemos de nuevo, por favor haz click en el siguiente botón.
|
||||
resend_mail=Haz click aquí para reenviar tu correo electrónico de activación
|
||||
send_reset_mail=Haga clic aquí para (re)enviar el correo para el restablecimiento de la contraseña
|
||||
reset_password=Restablecer su contraseña
|
||||
invalid_code=Lo sentimos, su código de confirmación ha expirado o no es valido.
|
||||
reset_password_helper=Haga Clic aquí para restablecer su contraseña
|
||||
password_too_short=La longitud de la contraseña no puede ser menor a 6.
|
||||
password_too_short=La longitud de la contraseña no puede ser menor de 6 caracteres.
|
||||
non_local_account=Cuentas que no son locales no pueden cambiar las contraseñas a través de Gogs.
|
||||
|
||||
login_two_factor=Autenticación en dos pasos
|
||||
login_two_factor_passcode=Pin de autenticación
|
||||
login_two_factor_enter_recovery_code=Introduce un código de recuperación de autenticación en dos pasos
|
||||
login_two_factor_recovery=Recuperación de autenticación en dos pasos
|
||||
login_two_factor_recovery_code=Código de recuperación
|
||||
login_two_factor_enter_passcode=Introduce un Pin de autenticación a dos pasos
|
||||
login_two_factor_invalid_recovery_code=El código de recuperación ya se ha utilizado o no es válido.
|
||||
|
||||
[mail]
|
||||
activate_account=Por favor, active su cuenta
|
||||
activate_email=Verifique su correo electrónico
|
||||
@@ -201,8 +218,8 @@ TreeName=Ruta del archivo
|
||||
Content=Contenido
|
||||
|
||||
require_error=` no puede estar vacío.`
|
||||
alpha_dash_error=` los caracteres deben ser Alfanumericos o dash(-_).`
|
||||
alpha_dash_dot_error=` debe ser un caracter alfanumérivo válido, un guión alto o bajo (-_) o un signo de puntuación.`
|
||||
alpha_dash_error=` los caracteres deben ser alfanuméricos o un guión (-_).`
|
||||
alpha_dash_dot_error=` debe ser un carácter alfanumérico válido, un guión (-_) o un signo de puntuación.`
|
||||
alpha_dash_dot_slash_error=` deben ser caracteres alfanuméricos, guiones(-_), puntos o barras.`
|
||||
size_error=` debe ser de tamaño %s.`
|
||||
min_size_error=` debe contener al menos %s caracteres.`
|
||||
@@ -220,6 +237,7 @@ org_name_been_taken=Ya existe una organización con este nombre.
|
||||
team_name_been_taken=Ya existe un equipo con este nombre.
|
||||
email_been_used=Esta dirección de correo electrónico ya está en uso.
|
||||
username_password_incorrect=Nombre de usuario o contraseña incorrectos.
|
||||
auth_source_mismatch=The authentication source selected is not associated with the user.
|
||||
enterred_invalid_repo_name=Por favor, asegúrate de que has introducido correctamente el nombre del repositorio.
|
||||
enterred_invalid_owner_name=Por favor, asegúrate de que has introducido correctamente el nombre del propietario.
|
||||
enterred_invalid_password=Por favor, asegúrate de que has introducido correctamente tu contraseña.
|
||||
@@ -247,14 +265,14 @@ following=Siguiendo
|
||||
follow=Seguir
|
||||
unfollow=Dejar de seguir
|
||||
|
||||
form.name_reserved=El usuario '%s' está reservado.
|
||||
form.name_pattern_not_allowed=El patrón de nombre de usuario '%s' no está permitido.
|
||||
form.name_not_allowed=El nombre de usuario o patrón %q no está permitido.
|
||||
|
||||
[settings]
|
||||
profile=Perfil
|
||||
password=Contraseña
|
||||
avatar=Avatar
|
||||
ssh_keys=Claves SSH
|
||||
security=Seguridad
|
||||
repos=Repositorios
|
||||
orgs=Organizaciones
|
||||
applications=Aplicaciones
|
||||
@@ -299,6 +317,7 @@ delete_email=Eliminar
|
||||
email_deletion=Eliminar correo electrónico
|
||||
email_deletion_desc=Al eliminar esta dirección de correo electrónico se eliminará toda la información asociada a esta. ¿Deseas continuar?
|
||||
email_deletion_success=¡El correo electrónico ha sido eliminado correctamente!
|
||||
email_deletion_primary=Cannot delete primary email address.
|
||||
add_new_email=Añadir nueva dirección de correo electrónico
|
||||
add_email=Añadir correo electrónico
|
||||
add_email_confirmation_sent=Un nuevo correo de confirmación ha sido enviado a '%s'. Por favor, comprueba tu bandeja de entrada en las próximas %d horas para completar el proceso.
|
||||
@@ -324,14 +343,36 @@ no_activity=No hay actividad reciente
|
||||
key_state_desc=Esta clave ha sido usada en los últimos 7 días
|
||||
token_state_desc=Token usado en los últimos 7 días
|
||||
|
||||
manage_social=Gestionar Redes Sociales asociadas
|
||||
social_desc=Esta es una lista de las Redes Sociales asociadas. Elimina cualquier vínculo que no reconozcas.
|
||||
unbind=Desvincular
|
||||
unbind_success=La Red Social ha sido desvinculada.
|
||||
two_factor=Autenticación en dos pasos
|
||||
two_factor_status=Estado:
|
||||
two_factor_on=Activado
|
||||
two_factor_off=Desactivado
|
||||
two_factor_enable=Activar
|
||||
two_factor_disable=Desactivar
|
||||
two_factor_view_recovery_codes=Guarda <a href="%s%s"> tus códigos de recuperación</a> en un lugar seguro. Podrás usarlos como código de acceso si pierdes el acceso a tu aplicación de autenticación.
|
||||
two_factor_http=Para las operaciones sobre HTTP/HTTPS, no puedes usar un usuario y contraseña. Por favor, cree y utilice <a href="%[1]s%[2]s"> un token de acceso personal</a> como su credencial de acceso, por ejemplo, <code>%[3]s</code>.
|
||||
two_factor_enable_title=Habilitar autenticación en dos pasos
|
||||
two_factor_scan_qr=Por favor, use su aplicación de autenticación para escanear la imagen:
|
||||
two_factor_or_enter_secret=O introduzca el secreto:
|
||||
two_factor_then_enter_passcode=Introduce el Pin:
|
||||
two_factor_verify=Verificar
|
||||
two_factor_invalid_passcode=¡El Pin que has introducido no es válido, por favor, inténtalo de nuevo!
|
||||
two_factor_reused_passcode=¡El pin de autenticación que has introducido ya ha sido usado, por favor intenta con otro!
|
||||
two_factor_enable_error=Ha fallado la activación de la autenticación en dos pasos: %v
|
||||
two_factor_enable_success=¡La autenticación en dos pasos se ha activado en tu cuenta correctamente!
|
||||
two_factor_recovery_codes_title=Códigos de recuperación para la autenticación en dos pasos
|
||||
two_factor_recovery_codes_desc=Los códigos de recuperación se usan cuando pierdes temporalmente el acceso a tu aplicación de autenticación. Cada código de recuperación solo puede utilizarse en una ocasión, <b>por favor, mantén estos códigos en lugar seguro</b>.
|
||||
two_factor_regenerate_recovery_codes=Regenerar códigos de recuperación
|
||||
two_factor_regenerate_recovery_codes_error=Ha fallado la regeneración de códigos de recuperación: %v
|
||||
two_factor_regenerate_recovery_codes_success=¡Nuevos códigos de recuperación han sido generados con éxito!
|
||||
two_factor_disable_title=Deshabilitar autenticación en dos pasos
|
||||
two_factor_disable_desc=El nivel de seguridad de tu cuenta se verá reducido después de desactivar la autenticación en dos pasos. ¿Deseas continuar?
|
||||
two_factor_disable_success=¡La autenticación en dos pasos ha sido deshabilitada satisfactoriamente!
|
||||
|
||||
manage_access_token=Gestionar los Tokens de Acceso personales
|
||||
generate_new_token=Generar nuevo Token
|
||||
tokens_desc=Tokens usados para acceder al API de Gogs.
|
||||
access_token_tips=El token de acceso personal puede utilizarse como nombre de usuario o como contraseña. Se recomienda utilizar el "x-access-token" como nombre de usuario y el token de acceso personal como contraseña para las aplicaciones Git.
|
||||
new_token_desc=Desde ahora, todos los tokens tendrán acceso completo a tu cuenta.
|
||||
token_name=Nombre del Token
|
||||
generate_token=Generar Token
|
||||
@@ -340,6 +381,7 @@ delete_token=Eliminar
|
||||
access_token_deletion=Borrado de Token de Acceso Personal
|
||||
access_token_deletion_desc=Si elimina este token de acceso personal la aplicación asociada perderá el permiso de acceso. ¿Desea continuar?
|
||||
delete_token_success=¡El token de acceso personal ha sido eliminado con éxito! No se olvide de actualizar también las aplicaciones asociadas.
|
||||
token_name_exists=Ya existe un token con el mismo nombre.
|
||||
|
||||
orgs.none=No eres un miembro de ninguna organización.
|
||||
orgs.leave_title=Salir de una organización
|
||||
@@ -361,7 +403,9 @@ owner=Propietario
|
||||
repo_name=Nombre del repositorio
|
||||
repo_name_helper=Los grandes nombres de repositorios son cortos, memorables y <strong>únicos</strong>.
|
||||
visibility=Visibilidad
|
||||
unlisted=Sin listar
|
||||
visiblity_helper=Este repositorio es <span class="ui red text">privado</span>
|
||||
unlisted_helper=Este repositorio <span class="ui red text">no está en la lista</span>
|
||||
visiblity_helper_forced=El administrador web ha obligado a todos los repositorios nuevos a ser <span class="ui red text"> privados</span>
|
||||
visiblity_fork_helper=(Este cambio afectará a todos los forks)
|
||||
clone_helper=¿Necesitas ayuda con el clone? ¡Consulta la <a target="_blank" href="%s">Ayuda</a>!
|
||||
@@ -379,7 +423,7 @@ auto_init=Inicializar los archivos seleccionados y plantillas de este repositori
|
||||
create_repo=Crear repositorio
|
||||
default_branch=Rama por defecto
|
||||
mirror_prune=Purgar
|
||||
mirror_prune_desc=Remover referencias remotas que no existan remotamente
|
||||
mirror_prune_desc=Elimina cualquier referencia de seguimiento remoto que ya no exista en el remoto
|
||||
mirror_interval=Intervalo de la réplica (en horas)
|
||||
mirror_address=Dirección de la réplica
|
||||
mirror_address_desc=Por favor, incluya las credenciales de usuario necesarias en la dirección.
|
||||
@@ -387,10 +431,11 @@ mirror_last_synced=Última sincronización
|
||||
watchers=Seguidores
|
||||
stargazers=Fans
|
||||
forks=Forks
|
||||
repo_description_helper=Descripción del repositorio. Longitud máxima de 512 caracteres.
|
||||
repo_description_length=Caracteres disponibles
|
||||
|
||||
form.reach_limit_of_creation=El propietario ha alcanzado el límite máximo de %d repositorios creados.
|
||||
form.name_reserved=El nombre del repositorio '%s' está reservado.
|
||||
form.name_pattern_not_allowed=El patrón del nombre del repositorio '%s' no está permitido.
|
||||
form.name_not_allowed=El nombre de repositorio o patrón %q no está permitido.
|
||||
|
||||
need_auth=Requiere autorización
|
||||
migrate_type=Tipo de migración
|
||||
@@ -401,6 +446,7 @@ migrate.clone_address_desc=Esto puede ser una dirección URL HTTP/HTTPS/GIT.
|
||||
migrate.clone_address_desc_import_local=También se le permite migrar un repositorio por la ruta del servidor local.
|
||||
migrate.permission_denied=No te está permitido importar repositorios locales.
|
||||
migrate.invalid_local_path=Rutal local inválida, no existe o no es un directorio.
|
||||
migrate.clone_address_resolved_to_blocked_local_address=La dirección de clonado se ha resuelto a una dirección de red local que está implícitamente bloqueada.
|
||||
migrate.failed=Migración fallida: %v
|
||||
|
||||
mirror_from=espejo de
|
||||
@@ -448,6 +494,8 @@ branches.stale_branches=Ramas Viejas
|
||||
branches.all=Todas las Ramas
|
||||
branches.updated_by=%[1]s actualizado por %[2]s
|
||||
branches.change_default_branch=Cambiar la Rama por Defecto
|
||||
branches.default_deletion_not_allowed=Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed=Cannot delete a protected branch.
|
||||
|
||||
editor.new_file=Nuevo archivo
|
||||
editor.upload_file=Subir archivo
|
||||
@@ -484,6 +532,7 @@ editor.file_changed_while_editing=El contenido del archivo ha sido modificado de
|
||||
editor.file_already_exists=Ya existe un archivo con nombre '%s' en este repositorio.
|
||||
editor.no_changes_to_show=No existen cambios para mostrar.
|
||||
editor.fail_to_update_file=Error al actualizar/crear el archivo '%s', error: %v
|
||||
editor.fail_to_delete_file=Error al borrar el fichero '%s', error: %v
|
||||
editor.add_subdir=Añadir subdirectorio...
|
||||
editor.unable_to_upload_files=Error al subir archivos a '%s', error: %v
|
||||
editor.upload_files_to_dir=Subir archivos a '%s'
|
||||
@@ -586,6 +635,7 @@ pulls.compare_compare=comparar con
|
||||
pulls.filter_branch=Filtrar rama
|
||||
pulls.no_results=Sin resultados.
|
||||
pulls.nothing_to_compare=Nada que comparar. Las dos ramas coinciden.
|
||||
pulls.nothing_merge_base=No hay nada que comparar porque las dos ramas tienen una historia completamente distinta.
|
||||
pulls.has_pull_request=`Ya existe un pull request entre estas dos ramas: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Crear Pull Request
|
||||
pulls.title_desc=desea fusionar %[1]d commits de <code>%[2]s</code> en <code>%[3]s</code>
|
||||
@@ -601,6 +651,9 @@ pulls.is_checking=Se está procediendo a la búsqueda de conflictos, por favor a
|
||||
pulls.can_auto_merge_desc=Este Pull Request puede ser fusionado automáticamente.
|
||||
pulls.cannot_auto_merge_desc=Este Pull Request no puede ser fusionado automáticamente porque hay conflictos.
|
||||
pulls.cannot_auto_merge_helper=Por favor, fusiona manualmente para resolver los conflictos.
|
||||
pulls.create_merge_commit=Crear un commit del fusionado
|
||||
pulls.rebase_before_merging=Hacer rebase antes de fusionar
|
||||
pulls.commit_description=Descripción del commit
|
||||
pulls.merge_pull_request=Fusionar Pull Request
|
||||
pulls.open_unmerged_pull_exists=`Usted no puede realizar la operación de reapertura porque en estos momentos existe una solicitud de pull request (#%d) para el mismo repositorio con la misma información que se encuentra a la espera de aprobación`
|
||||
pulls.delete_branch=Eliminar la rama
|
||||
@@ -660,7 +713,7 @@ settings.branches_bare=No puedes gestionar ramas en un repositorio vacío. Por f
|
||||
settings.default_branch=Rama predeterminada
|
||||
settings.default_branch_desc=Se considera la rama «base» como la rama por defecto para commits de código, las solicitudes pull y edición en línea.
|
||||
settings.update=Actualizar
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_unsupported=El cambio de rama por defecto no esta soportado por la versión de Git en el servidor.
|
||||
settings.update_default_branch_success=¡La Rama por defecto de este repositorio ha sido actualizado con éxito!
|
||||
settings.protected_branches=Ramas protegidas
|
||||
settings.protected_branches_desc=Proteger ramas force pushing, de eliminación accidental y lista blanca de committers de código.
|
||||
@@ -677,7 +730,7 @@ settings.protect_whitelist_users=Usuarios que pueden hacer push a esta rama
|
||||
settings.protect_whitelist_search_users=Buscar usuarios
|
||||
settings.protect_whitelist_teams=Equipos cuyos miembros pueden hacer push a esta rama
|
||||
settings.protect_whitelist_search_teams=Buscar equipos
|
||||
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
|
||||
settings.update_protect_branch_success=¡Las opciones de protección para esta rama se han actualizado con éxito!
|
||||
settings.hooks=Webhooks
|
||||
settings.githooks=Git Hooks
|
||||
settings.basic_settings=Configuración Básica
|
||||
@@ -690,7 +743,7 @@ settings.change_reponame_prompt=Este cambio afectará a los enlaces al repositor
|
||||
settings.advanced_settings=Ajustes avanzados
|
||||
settings.wiki_desc=Activar sistema de wiki
|
||||
settings.use_internal_wiki=Usar wiki integrada
|
||||
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
|
||||
settings.allow_public_wiki_desc=Permitir acceso público a la wiki cuando el repositorio es privado
|
||||
settings.use_external_wiki=Usar Wiki externa
|
||||
settings.external_wiki_url=URL externa de la Wiki
|
||||
settings.external_wiki_url_desc=Los visitantes serán redireccionados a la URL cuando hagan click en la barra.
|
||||
@@ -705,9 +758,11 @@ settings.tracker_issue_style=Estilo de etiquetado del tracker externo de inciden
|
||||
settings.tracker_issue_style.numeric=Numérico
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumérico
|
||||
settings.tracker_url_format_desc=Puedes usar las plantillas <code>{user} {repo} {index}</code> para el nombre de usuario, nombre del repositorio e índice de la incidencia.
|
||||
settings.pulls_desc=Habilitar Pull Requests para aceptar contribuciones públicas
|
||||
settings.pulls_desc=Permitir pull requests para aceptar contribuciones entre repositorios y ramas
|
||||
settings.pulls.ignore_whitespace=Ignorar los cambios en el espacio en blanco
|
||||
settings.pulls.allow_rebase_merge=Permite usar rebase para fusionar los commits
|
||||
settings.danger_zone=Zona de Peligro
|
||||
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
|
||||
settings.cannot_fork_to_same_owner=No puedes hacer fork del repositorio a su propietario original.
|
||||
settings.new_owner_has_same_repo=El nuevo propietario tiene un repositorio con el mismo nombre.
|
||||
settings.convert=Convertir en un repositorio normal
|
||||
settings.convert_desc=Puedes convertir este repositorio en un repositorio normal. Este cambio no se puede deshacer.
|
||||
@@ -726,7 +781,7 @@ settings.wiki_deletion_success=Los datos de la wiki del repositorio han sido bor
|
||||
settings.delete=Eliminar este repositorio
|
||||
settings.delete_desc=Una vez has eliminado un repositorio, no hay vuelta atrás. Por favor, asegúrate de que es lo que quieres.
|
||||
settings.delete_notices_1=- Esta operación <strong>NO PUEDE</strong> revertirse.
|
||||
settings.delete_notices_2=- Esta operación eliminará de manera permanente todo el contenido de este repositorio, incluyendo los datos de git, las incidencias, los comentarios y los permisos de acceso de los colaboradores.
|
||||
settings.delete_notices_2=- Esta operación eliminará de manera permanente todo el contenido de este repositorio, incluyendo los datos de Git, las incidencias, los comentarios y los permisos de acceso de los colaboradores.
|
||||
settings.delete_notices_fork_1=- Todos los forks se convertirán en independientes tras el borrado.
|
||||
settings.deletion_success=¡El respositorio ha sido eliminado satisfactoriamente!
|
||||
settings.update_settings_success=Las opciones del repositorio se han actualizado correctamente.
|
||||
@@ -742,21 +797,25 @@ settings.collaborator_deletion_desc=Este usuario no podrá colaborar en este rep
|
||||
settings.remove_collaborator_success=El colaborador ha sido eliminado.
|
||||
settings.search_user_placeholder=Buscar usuario...
|
||||
settings.org_not_allowed_to_be_collaborator=Las organizaciones no tiene permitido ser añadidas como colaboradores.
|
||||
settings.add_webhook=Añadir Webhook
|
||||
settings.hooks_desc=Los Webhooks permiten a servicios externos recibir notificaciones cuando sucedan ciertos eventos en Gogs. Cuando sucedan los eventos especificados, enviaremos una petición POST a cada una de las URLs indicadas. Para obtener más información, consulta nuestra <a target="_blank" href="%s">Guía de Webhooks</a>.
|
||||
settings.webhooks.add_new=Añadir un nuevo webhook:
|
||||
settings.webhooks.choose_a_type=Elige un tipo...
|
||||
settings.add_webhook=Añadir Webhook
|
||||
settings.webhook_deletion=Eliminar Webhook
|
||||
settings.webhook_deletion_desc=Al borrar este webhook se eliminará su información y todo su historial. ¿Desea continuar?
|
||||
settings.webhook_deletion_success=¡Webhook eliminado con éxito!
|
||||
settings.webhook.test_delivery=Test de entrega
|
||||
settings.webhook.test_delivery_desc=Enviar un falso evento Push de entrega para probar tus ajustes de webhook
|
||||
settings.webhook.test_delivery_success=Probar que los webhook han sido añadidos a la cola de entrega. Esto puede tomar algunos segundos antes de aparecer en el historial de entregas.
|
||||
settings.webhook.redelivery=Redelivery
|
||||
settings.webhook.redelivery_success=Hook task '%s' has been readded to delivery queue. It may take few seconds to update delivery status in history.
|
||||
settings.webhook.redelivery=Reenviar
|
||||
settings.webhook.redelivery_success=La tarea del Hook '%s' ha sido reañadida en la cola de entrega. Puede tardar unos segundos en actualizarse el historial de estado de la cola.
|
||||
settings.webhook.request=Petición
|
||||
settings.webhook.response=Respuesta
|
||||
settings.webhook.headers=Encabezado
|
||||
settings.webhook.payload=Payload
|
||||
settings.webhook.body=Cuerpo del mensaje
|
||||
settings.webhook.err_cannot_parse_payload_url=No se puede analizar la URL de payload: %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address=La URL de payload se ha resuelto a una dirección de red local que está implícitamente bloqueada.
|
||||
settings.githooks_desc=Los Git Hooks son una funcionalidad del propio Git, puedes editar los ficheros de los hooks soportados en la siguiente lista para aplicar operaciones personalizadas.
|
||||
settings.githook_edit_desc=Si el hook no está activo, se mostrará contenido de ejemplo. Dejar el contenido vacío deshabilitará este hook.
|
||||
settings.githook_name=Nombre del Hook
|
||||
@@ -766,7 +825,7 @@ settings.add_webhook_desc=Enviaremos una petición <code>POST</code> a la siguie
|
||||
settings.payload_url=URL de Payload
|
||||
settings.content_type=Tipo de contenido
|
||||
settings.secret=Secreto
|
||||
settings.secret_desc=Secret will be sent as SHA256 HMAC hex digest of payload via <code>X-Gogs-Signature</code> header.
|
||||
settings.secret_desc=El secreto será enviado como un payload SHA256 HMAC hex digest vía cabecera <code>X-Gogs-Signature</code>.
|
||||
settings.slack_username=Nombre de usuario
|
||||
settings.slack_icon_url=URL de icono
|
||||
settings.slack_color=Color
|
||||
@@ -779,15 +838,15 @@ settings.event_create_desc=Rama o etiqueta creada
|
||||
settings.event_delete=Borrar
|
||||
settings.event_delete_desc=Rama o etiqueta borrada
|
||||
settings.event_fork=Fork
|
||||
settings.event_fork_desc=Repository forked
|
||||
settings.event_fork_desc=Repositorio forked
|
||||
settings.event_push=Push
|
||||
settings.event_push_desc=Git push a un repositorio
|
||||
settings.event_issues=Incidencias
|
||||
settings.event_issues_desc=Incidencia abierta, cerrada, reabierta, editada, asignada, desasignada, etiqueta actualizada, etiqueta limpiada, hito marcado, o desmarcado,.
|
||||
settings.event_issue_comment=Comentario de incidencia
|
||||
settings.event_issue_comment_desc=Comentario de incidencias creado, editado o borrado.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull request abierto, cerrado, reabierto, editado, asignado, desasignado, etiqueta actualizada, etiqueta limpiada, hito marcado, hito desmarcado, o sincronizado.
|
||||
settings.event_issue_comment=Comentario de incidencia
|
||||
settings.event_issue_comment_desc=Comentario de incidencias creado, editado o borrado.
|
||||
settings.event_release=Lanzamiento
|
||||
settings.event_release_desc=Lanzamiento publicado en un repositorio.
|
||||
settings.active=Activo
|
||||
@@ -799,7 +858,8 @@ settings.delete_webhook=Borrar Webhook
|
||||
settings.recent_deliveries=Envíos Recientes
|
||||
settings.hook_type=Tipo de Hook
|
||||
settings.add_slack_hook_desc=Añade integración con <a href="%s">Slack</a> a tu repositorio.
|
||||
settings.add_discord_hook_desc=Añade integración con <a href="%s">Slack</a> a tu repositorio.
|
||||
settings.add_discord_hook_desc=Añade integración con <a href="%s">Discord</a> a tu repositorio.
|
||||
settings.add_dingtalk_hook_desc=Añade integración con <a href="%s">Dingtalk</a> a tu repositorio.
|
||||
settings.slack_token=Token
|
||||
settings.slack_domain=Dominio
|
||||
settings.slack_channel=Canal
|
||||
@@ -816,6 +876,8 @@ settings.add_key_success=¡La nueva clave de desplieque '%s' ha sido creada con
|
||||
settings.deploy_key_deletion=Eliminar Clave de Despliegue
|
||||
settings.deploy_key_deletion_desc=Al eliminar esta clave de despliegue se perderán el permiso de acceso a este repositorio con dicha clave. ¿Deseas continuar?
|
||||
settings.deploy_key_deletion_success=¡Clave de despliegue eliminada con éxito!
|
||||
settings.description_desc=Descripción del repositorio. Longitud máxima de 512 caracteres.
|
||||
settings.description_length=Caracteres disponibles
|
||||
|
||||
diff.browse_source=Explorar el Código
|
||||
diff.parent=padre
|
||||
@@ -880,9 +942,8 @@ team_name_helper=Utiliza este nombre para mencionar a este equipo en las convers
|
||||
team_desc_helper=¿En qué consiste este equipo?
|
||||
team_permission_desc=¿Qué nivel de permisos debería tener este equipo?
|
||||
|
||||
form.name_reserved=El nombre de la organización '%s' está reservado.
|
||||
form.name_pattern_not_allowed=El patrón de nombre de la organización '%s' no está permitido.
|
||||
form.team_name_reserved=El nombre de equipo '%s' está reservado.
|
||||
form.name_not_allowed=El nombre de la organización o patrón %q no está permitido.
|
||||
form.team_name_not_allowed=El nombre del equipo o patrón %q no está permitido.
|
||||
|
||||
settings=Configuración
|
||||
settings.options=Opciones
|
||||
@@ -954,12 +1015,19 @@ first_page=Primera
|
||||
last_page=Última
|
||||
total=Total: %d
|
||||
|
||||
dashboard.build_info=Build Information
|
||||
dashboard.app_ver=Versión de la aplicación
|
||||
dashboard.git_version=Versión de Git
|
||||
dashboard.go_version=Versión de Go
|
||||
dashboard.build_time=Tiempo de compilación
|
||||
dashboard.build_commit=Build commit
|
||||
dashboard.statistic=Estadísticas
|
||||
dashboard.operations=Operaciones
|
||||
dashboard.system_status=Estado del Monitor del Sistema
|
||||
dashboard.statistic_info=La base de datos de Gogs contiene <b>%d</b> usuarios, <b>%d</b> organizaciones, <b>%d</b> claves públicas, <b>%d</b> repositorios, <b>%d</b> vigilados, <b>%d</b> destacados, <b>%d</b> acciones, <b>%d</b> accesos, <b>%d</b> incidencias, <b>%d</b> comentarios, <b>%d</b> cuentas de redes sociales, <b>%d</b> seguidores, <b>%d</b> mirrors, <b>%d</b> releases, <b>%d</b> fuentes de login, <b>%d</b> webhooks, <b>%d</b> milestones, <b>%d</b> etiquetas, <b>%d</b> hooks, <b>%d</b> equipos, <b>%d</b> tareas actualizadas, <b>%d</b> adjuntos.
|
||||
dashboard.operation_name=Nombre de la operación
|
||||
dashboard.operation_switch=Interruptor
|
||||
dashboard.select_operation_to_run=Please select operation to run
|
||||
dashboard.operation_run=Ejecutar
|
||||
dashboard.clean_unbind_oauth=Limpiar solicitudes de OAuth sin confirmar
|
||||
dashboard.clean_unbind_oauth_success=Las solicitudes de OAuth sin confirmar se han eliminado correctamente.
|
||||
@@ -973,8 +1041,8 @@ dashboard.git_gc_repos=Ejecutar la recolección de basura en los repositorios
|
||||
dashboard.git_gc_repos_success=Todos los repositorios han ejecutado correctamente el recolector de basuras.
|
||||
dashboard.resync_all_sshkeys=Reescribir el fichero '.ssh/authorized_keys'(atención: se perderán las claves que no pertenezcan a Gogs)
|
||||
dashboard.resync_all_sshkeys_success=Todas las claves públicas se han reescrito correctamente.
|
||||
dashboard.resync_all_hooks=Resync pre-receive, update and post-receive hooks of all repositories
|
||||
dashboard.resync_all_hooks_success=All repositories' pre-receive, update and post-receive hooks have been resynced successfully.
|
||||
dashboard.resync_all_hooks=Resincroniza los "hooks" de pre-recepción, actualización y post-recepción en todos los repositorios
|
||||
dashboard.resync_all_hooks_success=Se han vuelto a sincronizar todos los "hooks" de pre-recepción, actualización y post-recepción de los repositorios con éxito.
|
||||
dashboard.reinit_missing_repos=Reinicializar todos los registros del repositorio que tienen archivos Git eliminados
|
||||
dashboard.reinit_missing_repos_success=Todos los registros del repositorio con archivos Git eliminados han sido reinicializados con éxito.
|
||||
|
||||
@@ -1051,11 +1119,12 @@ repos.stars=Estrellas
|
||||
repos.issues=Incidencias
|
||||
repos.size=Tamaño
|
||||
|
||||
auths.auth_manage_panel=Panel de administración de autenticación
|
||||
auths.auth_sources=Fuentes de autentificación
|
||||
auths.new=Añadir nuevo origen
|
||||
auths.name=Nombre
|
||||
auths.type=Tipo
|
||||
auths.enabled=Activo
|
||||
auths.default=Por defecto
|
||||
auths.updated=Actualizado
|
||||
auths.auth_type=Tipo de autenticación
|
||||
auths.auth_name=Nombre de autenticación
|
||||
@@ -1064,6 +1133,7 @@ auths.domain=Dominio
|
||||
auths.host=Host
|
||||
auths.port=Puerto
|
||||
auths.bind_dn=Bind DN
|
||||
auths.bind_dn_helper=Puedes usar '%s' como marcador de posición para el nombre de usuario, ej. DOM\%s
|
||||
auths.bind_password=Contraseña Bind
|
||||
auths.bind_password_helper=Advertencia: La contraseña se almacena como texto plano. No utilice una cuenta con privilegios elevados.
|
||||
auths.user_base=Base de búsqueda de usuarios
|
||||
@@ -1073,6 +1143,11 @@ auths.attribute_username_placeholder=Dejar vacío para usar el campo de inicio d
|
||||
auths.attribute_name=Atributo nombre
|
||||
auths.attribute_surname=Atributo apellido
|
||||
auths.attribute_mail=Atributo correo electrónico
|
||||
auths.verify_group_membership=Verificar pertenencia a grupo
|
||||
auths.group_search_base_dn=Base DN para la búsqueda de grupos
|
||||
auths.group_filter=Filtro de grupo
|
||||
auths.group_attribute_contain_user_list=Atributo de grupo que contiene la lista de usuarios
|
||||
auths.user_attribute_listed_in_group=Atributo de usuario listado en grupo
|
||||
auths.attributes_in_bind=Buscar atributos en el contexto del Bind DN
|
||||
auths.filter=Filtro de usuario
|
||||
auths.admin_filter=Filtro de aministrador
|
||||
@@ -1086,9 +1161,9 @@ auths.enable_tls=Habilitar cifrado TLS
|
||||
auths.skip_tls_verify=Omitir la verificación TLS
|
||||
auths.pam_service_name=Nombre del Servicio PAM
|
||||
auths.enable_auto_register=Hablilitar Auto-Registro
|
||||
auths.tips=Consejos
|
||||
auths.edit=Editar la Configuración de Autenticación
|
||||
auths.activated=Esta autenticación ha sido activada
|
||||
auths.default_auth=Esta autenticación es la fuente de inicio de sesión predeterminada
|
||||
auths.new_success=¡La autenticación '%s' ha sido añadida con éxito!
|
||||
auths.update_success=La configuración de autenticación ha sido actualizada con éxito.
|
||||
auths.update=Actualizar la configuración de autenticación
|
||||
@@ -1098,115 +1173,186 @@ auths.delete_auth_desc=Esta autenticación será eliminada. ¿Deseas continuar?
|
||||
auths.still_in_used=Este método de autentificación aún es utilizado por algunos usuarios, por favor elimine o convierta estos usuarios a otro tipo de autentificación.
|
||||
auths.deletion_success=¡La autenticación ha sido eliminada con éxito!
|
||||
auths.login_source_exist=El origen de autenticación '%s' ya existe.
|
||||
auths.github_api_endpoint=Endpoint de la API
|
||||
|
||||
config.not_set=(sin definir)
|
||||
config.server_config=Configuración del servidor
|
||||
config.app_name=Nombre de la Aplicación
|
||||
config.app_ver=Versión de la Aplicación
|
||||
config.app_url=URL de la Aplicación
|
||||
config.domain=Dominio
|
||||
config.offline_mode=Modo Sin Conexión
|
||||
config.disable_router_log=Deshabilitar Log del Router
|
||||
config.brand_name=Nombre de la marca
|
||||
config.run_user=Ejecutada como Usuario
|
||||
config.run_mode=Modo de ejecución
|
||||
config.git_version=Versión de Git
|
||||
config.static_file_root_path=Ruta de los Ficheros Estáticos
|
||||
config.log_file_root_path=Ruta de los Ficheros de Log
|
||||
config.reverse_auth_user=Autenticación Inversa de Usuario
|
||||
config.server.external_url=URL externa
|
||||
config.server.domain=Dominio
|
||||
config.server.protocol=Protocolo
|
||||
config.server.http_addr=Dirección HTTP
|
||||
config.server.http_port=Puerto HTTP
|
||||
config.server.cert_file=Archivo de certificado
|
||||
config.server.key_file=Archivo de claves
|
||||
config.server.tls_min_version=Versión mínima de TLS
|
||||
config.server.unix_socket_permission=Unix socket permission
|
||||
config.server.local_root_url=Local root URL
|
||||
config.server.offline_mode=Offline mode
|
||||
config.server.disable_router_log=Disable router log
|
||||
config.server.enable_gzip=Enable Gzip
|
||||
config.server.app_data_path=Application data path
|
||||
config.server.load_assets_from_disk=Load assets from disk
|
||||
config.server.landing_url=Landing URL
|
||||
|
||||
config.ssh_config=Configuración SSH
|
||||
config.ssh_enabled=Habilitado
|
||||
config.ssh_start_builtin_server=Iniciar servidor integrado
|
||||
config.ssh_domain=Dominio
|
||||
config.ssh_port=Puerto
|
||||
config.ssh_listen_port=Puerto de escucha
|
||||
config.ssh_root_path=Ruta raíz
|
||||
config.ssh_key_test_path=Ruta de la clave de prueba
|
||||
config.ssh_keygen_path=Ruta del generador de claves ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Tamaño mínimo de la clave de verificación
|
||||
config.ssh_minimum_key_sizes=Tamaños de clave mínimos
|
||||
config.ssh.enabled=Activado
|
||||
config.ssh.domain=Dominio expuesto
|
||||
config.ssh.port=Puerto expuesto
|
||||
config.ssh.root_path=Root path
|
||||
config.ssh.keygen_path=Ruta del generador de claves
|
||||
config.ssh.key_test_path=Ruta de la clave de prueba
|
||||
config.ssh.minimum_key_size_check=Comprobación del tamaño mínimo de la clave
|
||||
config.ssh.minimum_key_sizes=Tamaño mínimo de las claves
|
||||
config.ssh.rewrite_authorized_keys_at_start=Reescribir "authorized_keys" al inicio
|
||||
config.ssh.start_builtin_server=Iniciar servidor integrado
|
||||
config.ssh.listen_host=Host de escucha
|
||||
config.ssh.listen_port=Puerto de escucha
|
||||
config.ssh.server_ciphers=Cifrados del servidor
|
||||
config.ssh.server_macs=MACs del servidor
|
||||
config.ssh.server_algorithms=Algoritmos del servidor
|
||||
|
||||
config.repo_config=Configuración del repositorio
|
||||
config.repo_root_path=Ruta del Repositorio
|
||||
config.script_type=Tipo de Script
|
||||
config.repo_force_private=Forzar Privado
|
||||
config.max_creation_limit=Limite máximo de creación
|
||||
config.preferred_licenses=Licencias Preferidas
|
||||
config.disable_http_git=Desactivar HTTP Git
|
||||
config.enable_local_path_migration=Activar la migración de la ruta de acceso Local
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
config.repo.root_path=Ruta raíz
|
||||
config.repo.script_type=Script type
|
||||
config.repo.ansi_chatset=ANSI charset
|
||||
config.repo.force_private=Force private
|
||||
config.repo.max_creation_limit=Max creation limit
|
||||
config.repo.preferred_licenses=Licencias preferidas
|
||||
config.repo.disable_http_git=Disable HTTP Git
|
||||
config.repo.enable_local_path_migration=Enable local path migration
|
||||
config.repo.enable_raw_file_render_mode=Enable raw file render mode
|
||||
config.repo.commits_fetch_concurrency=Commits fetch concurrency
|
||||
config.repo.editor.line_wrap_extensions=Editor line wrap extensions
|
||||
config.repo.editor.previewable_file_modes=Editor previewable file modes
|
||||
config.repo.upload.enabled=Upload enabled
|
||||
config.repo.upload.temp_path=Upload temporary path
|
||||
config.repo.upload.allowed_types=Upload allowed types
|
||||
config.repo.upload.file_max_size=Upload file size limit
|
||||
config.repo.upload.max_files=Upload files limit
|
||||
|
||||
config.db_config=Configuración de la Base de Datos
|
||||
config.db_type=Tipo
|
||||
config.db_host=Host
|
||||
config.db_name=Nombre
|
||||
config.db_user=Usuario
|
||||
config.db_ssl_mode=Modo SSL
|
||||
config.db_ssl_mode_helper=(sólo para "postgres")
|
||||
config.db_path=Ruta
|
||||
config.db_path_helper=(para "sqlite3" y "tidb")
|
||||
config.db.type=Tipo
|
||||
config.db.host=Host
|
||||
config.db.name=Nombre
|
||||
config.db.schema=Esquema
|
||||
config.db.schema_helper=(sólo para "postgres")
|
||||
config.db.user=Usuario
|
||||
config.db.ssl_mode=SSL mode
|
||||
config.db.ssl_mode_helper=(sólo para "postgres")
|
||||
config.db.path=Ruta
|
||||
config.db.path_helper=(sólo para "sqlite3")
|
||||
config.db.max_open_conns=Número máximo de conexiones abiertas
|
||||
config.db.max_idle_conns=Número máximo de conexiones inactivas
|
||||
|
||||
config.service_config=Configuración del servicio
|
||||
config.register_email_confirm=Solicitar Confirmación por Correo Electrónico
|
||||
config.disable_register=Deshabilitar el Registro
|
||||
config.show_registration_button=Mostrar Botón de Registro
|
||||
config.require_sign_in_view=Solicitar la Vista de Inicio de Sesión
|
||||
config.mail_notify=Notificación por Correo Electrónico
|
||||
config.disable_key_size_check=Deshabilitar la comprobación de Tamaño Mínimo de Clave
|
||||
config.enable_captcha=Activar Captcha
|
||||
config.active_code_lives=Habilitar Vida del Código
|
||||
config.reset_password_code_lives=Restablecer Contraseña de Vida del Código
|
||||
config.security_config=Security configuration
|
||||
config.security.login_remember_days=Login remember days
|
||||
config.security.cookie_remember_name=Remember cookie
|
||||
config.security.cookie_username=Username cookie
|
||||
config.security.cookie_secure=Enable secure cookie
|
||||
config.security.reverse_proxy_auth_user=Reverse proxy authentication header
|
||||
config.security.enable_login_status_cookie=Enable login status cookie
|
||||
config.security.login_status_cookie_name=Login status cookie
|
||||
config.security.local_network_allowlist=Local network allowlist
|
||||
|
||||
config.webhook_config=Configuración de Webhooks
|
||||
config.queue_length=Tamaño de Cola de Envío
|
||||
config.deliver_timeout=Timeout de Entrega
|
||||
config.skip_tls_verify=Omitir la Verificación TLS
|
||||
config.email_config=Email configuration
|
||||
config.email.enabled=Enabled
|
||||
config.email.subject_prefix=Subject prefix
|
||||
config.email.host=Host
|
||||
config.email.from=From
|
||||
config.email.user=User
|
||||
config.email.disable_helo=Disable HELO
|
||||
config.email.helo_hostname=HELO hostname
|
||||
config.email.skip_verify=Skip certificate verify
|
||||
config.email.use_certificate=Use custom certificate
|
||||
config.email.cert_file=Certificate file
|
||||
config.email.key_file=Archivo de claves
|
||||
config.email.use_plain_text=Use plain text
|
||||
config.email.add_plain_text_alt=Add plain text alternative
|
||||
config.email.send_test_mail=Enviar correo de prueba
|
||||
config.email.test_mail_failed=Error al enviar correo electrónico de prueba a '%s': %v
|
||||
config.email.test_mail_sent=Test email has been sent to '%s'.
|
||||
|
||||
config.mailer_config=Configuración del servidor de correo
|
||||
config.mailer_enabled=Activado
|
||||
config.mailer_disable_helo=Desactivar HELO
|
||||
config.mailer_name=Nombre
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Usuario
|
||||
config.send_test_mail=Enviar email de prueba
|
||||
config.test_mail_failed=Fallo al enviar el email de prueba a '%s': %v
|
||||
config.test_mail_sent=El email de prueba ha sido enviado a '%s'.
|
||||
config.auth_config=Authentication configuration
|
||||
config.auth_custom_logout_url=Custom logout URL
|
||||
config.auth.activate_code_lives=Activate code lives
|
||||
config.auth.reset_password_code_lives=Reset password code lives
|
||||
config.auth.require_email_confirm=Require email confirmation
|
||||
config.auth.require_sign_in_view=Require sign in view
|
||||
config.auth.disable_registration=Disable registration
|
||||
config.auth.enable_registration_captcha=Enable registration captcha
|
||||
config.auth.enable_reverse_proxy_authentication=Enable reverse proxy authentication
|
||||
config.auth.enable_reverse_proxy_auto_registration=Enable reverse proxy auto registration
|
||||
config.auth.reverse_proxy_authentication_header=Reverse proxy authentication header
|
||||
|
||||
config.oauth_config=Configuración OAuth
|
||||
config.oauth_enabled=Activado
|
||||
|
||||
config.cache_config=Configuración de la Caché
|
||||
config.cache_adapter=Adaptador de la Caché
|
||||
config.cache_interval=Intervalo de la Caché
|
||||
config.cache_conn=Conexión de la Caché
|
||||
config.user_config=User configuration
|
||||
config.user.enable_email_notify=Enable email notification
|
||||
|
||||
config.session_config=Configuración de la Sesión
|
||||
config.session_provider=Proveedor de la Sesión
|
||||
config.provider_config=Configuración del Proveedor
|
||||
config.cookie_name=Nombre de la Cookie
|
||||
config.enable_set_cookie=Activar Establecimiento de Cookie
|
||||
config.gc_interval_time=Intervalo de tiempo del GC
|
||||
config.session_life_time=Tiempo de Vida de la Sesión
|
||||
config.https_only=Sólo HTTPS
|
||||
config.cookie_life_time=Tiempo de Vida de la Cookie
|
||||
config.session.provider=Provider
|
||||
config.session.provider_config=Provider config
|
||||
config.session.cookie_name=Cookie
|
||||
config.session.https_only=HTTPS only
|
||||
config.session.gc_interval=GC interval
|
||||
config.session.max_life_time=Max life time
|
||||
config.session.csrf_cookie_name=CSRF cookie
|
||||
|
||||
config.cache_config=Configuración de la Caché
|
||||
config.cache.adapter=Adapter
|
||||
config.cache.interval=GC interval
|
||||
config.cache.host=Host
|
||||
|
||||
config.http_config=Configuración HTTP
|
||||
config.http.access_control_allow_origin=Access control allow origin
|
||||
|
||||
config.attachment_config=Attachment configuration
|
||||
config.attachment.enabled=Enabled
|
||||
config.attachment.path=Path
|
||||
config.attachment.allowed_types=Allowed types
|
||||
config.attachment.max_size=Size limit
|
||||
config.attachment.max_files=Files limit
|
||||
|
||||
config.release_config=Release configuration
|
||||
config.release.attachment.enabled=Attachment enabled
|
||||
config.release.attachment.allowed_types=Attachment allowed types
|
||||
config.release.attachment.max_size=Attachment size limit
|
||||
config.release.attachment.max_files=Attachment files limit
|
||||
|
||||
config.picture_config=Configuración de Imagen
|
||||
config.picture_service=Servicio de Imágen
|
||||
config.disable_gravatar=Desactivar Gravatar
|
||||
config.enable_federated_avatar=Habilitar Avatares Federados
|
||||
config.picture.avatar_upload_path=User avatar upload path
|
||||
config.picture.repo_avatar_upload_path=Repository avatar upload path
|
||||
config.picture.gravatar_source=Gravatar source
|
||||
config.picture.disable_gravatar=Disable Gravatar
|
||||
config.picture.enable_federated_avatar=Enable federated avatars
|
||||
|
||||
config.mirror_config=Mirror configuration
|
||||
config.mirror.default_interval=Intervalo por defecto
|
||||
|
||||
config.webhook_config=Configuración de Webhooks
|
||||
config.webhook.types=Types
|
||||
config.webhook.deliver_timeout=Deliver timeout
|
||||
config.webhook.skip_tls_verify=Skip TLS verify
|
||||
|
||||
config.git_config=Configuración de Git
|
||||
config.git_disable_diff_highlight=Desactivar resaltado de sintaxis del Diff
|
||||
config.git_max_diff_lines=Líneas de Diff máximas (por un solo archivo)
|
||||
config.git_max_diff_line_characters=Carácteres de Diff máximos (para una sola línea)
|
||||
config.git_max_diff_files=Máximo de archivos de Diff (que se mostrarán)
|
||||
config.git_gc_args=Argumentos de GC
|
||||
config.git_migrate_timeout=Tiempo de espera de migración
|
||||
config.git_mirror_timeout=Tiempo de espera de actualización de réplicas
|
||||
config.git_clone_timeout=Tiempo de espera de operación de clones
|
||||
config.git_pull_timeout=Tiempo de espera de operación de pull
|
||||
config.git_gc_timeout=Tiempo de espera de operación de GC
|
||||
config.git.disable_diff_highlight=Disable diff syntax highlight
|
||||
config.git.max_diff_lines=Diff lines limit (for a single file)
|
||||
config.git.max_diff_line_characters=Diff characters limit (for a single line)
|
||||
config.git.max_diff_files=Diff files limit (for a single diff)
|
||||
config.git.gc_args=GC arguments
|
||||
config.git.migrate_timeout=Migration timeout
|
||||
config.git.mirror_timeout=Mirror fetch timeout
|
||||
config.git.clone_timeout=Clone timeout
|
||||
config.git.pull_timeout=Pull timeout
|
||||
config.git.gc_timeout=GC timeout
|
||||
|
||||
config.lfs_config=LFS configuration
|
||||
config.lfs.storage=Storage
|
||||
config.lfs.objects_path=Objects path
|
||||
|
||||
config.log_config=Configuración del Log
|
||||
config.log_file_root_path=Ruta de los Ficheros de Log
|
||||
config.log_mode=Modo
|
||||
config.log_options=Opciones
|
||||
|
||||
@@ -1237,7 +1383,6 @@ notices.delete_success=Las notificaciones del sistema han sido eliminadas satisf
|
||||
|
||||
[action]
|
||||
create_repo=creó el repositorio <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=repositorio renombrado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=hizo push a <a href="%[1]s/src/%[2]s">%[3]s</a> en <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Ver comparación de estos %d commits
|
||||
@@ -1249,11 +1394,15 @@ comment_issue=`comentó en la incidencia <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
create_pull_request=`creado pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
close_pull_request=`cerró el pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
reopen_pull_request=`reabrió el pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`fusionado pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`fusionó el pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=nueva rama <a href="%[1]s/src/%[2]s">%[3]s</a> creada en <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=borrada rama <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=hizo push del tag <a href="%s/src/%s">%[2]s</a> a <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=borrada etiqueta <code>%[2]s</code> en <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=ha hecho un Fork en <a href="%s">%s</a>
|
||||
mirror_sync_push=sincronizados commits a <a href="%[1]s/src/%[2]s">%[3]s</a> en <a href="%[1]s">%[4]s</a> desde la réplica
|
||||
mirror_sync_create=sincronizada nueva referencia <a href="%s/src/%s">%[2]s</a> a <a href="%[1]s">%[3]s</a> desde la réplica
|
||||
mirror_sync_delete=sincronizada y eliminada referencia <code>%[2]s</code> en <a href="%[1]s">%[3]s</a> desde la réplica
|
||||
|
||||
[tool]
|
||||
ago=hace
|
||||
@@ -1275,6 +1424,7 @@ months=%[2]s %[1]d meses
|
||||
years=%[2]s %[1]d años
|
||||
raw_seconds=segundos
|
||||
raw_minutes=minutos
|
||||
raw_hours=hours
|
||||
|
||||
[dropzone]
|
||||
default_message=Suéltelos aquí o pulse para cargar archivos.
|
||||
|
||||
1436
conf/locale/locale_fa-IR.ini
Normal file
1436
conf/locale/locale_fa-IR.ini
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
app_desc=Un service Git auto-hébergé sans prise de tête
|
||||
app_desc=Un service Git auto-hébergé et indolore.
|
||||
|
||||
home=Accueil
|
||||
dashboard=Tableau de bord
|
||||
@@ -9,7 +9,6 @@ sign_out=Déconnexion
|
||||
sign_up=Inscription
|
||||
register=S'inscrire
|
||||
website=Site web
|
||||
version=Version
|
||||
page=Page
|
||||
template=Modèle
|
||||
language=Langue
|
||||
@@ -29,7 +28,7 @@ mirror=Miroir
|
||||
new_repo=Nouveau dépôt
|
||||
new_migrate=Nouvelle migration
|
||||
new_mirror=Nouveau miroir
|
||||
new_fork=Nouveau fork
|
||||
new_fork=Nouveau dépôt séparé
|
||||
new_org=Nouvelle organisation
|
||||
manage_org=Gérer les organisations
|
||||
admin_panel=Administration
|
||||
@@ -39,23 +38,28 @@ your_profile=Votre profil
|
||||
your_settings=Vos paramètres
|
||||
|
||||
activities=Activités
|
||||
pull_requests=Pull Requests
|
||||
pull_requests=Demandes d'admission
|
||||
issues=Tickets
|
||||
|
||||
cancel=Annuler
|
||||
|
||||
[status]
|
||||
page_not_found=Page non trouvée
|
||||
internal_server_error=Erreur interne du serveur
|
||||
|
||||
[install]
|
||||
install=Installation
|
||||
title=Instructions pour la première exécution
|
||||
docker_helper=Si vous exécutez Gogs grâce à Docker, merci de lire la <a target="_blank" href="%s">procédure</a> attentivement avant de modifier quoi que ce soit sur cette page !
|
||||
requite_db_desc=Gogs requiert MySQL, PostgreSQL, SQLite3, MSSQL ou TiDB.
|
||||
docker_helper=Si vous exécutez Gogs au sein de Docker, lisez la <a target="_blank" href="%s">procédure</a> attentivement avant toute altération de cette page !
|
||||
requite_db_desc=Gogs exige MySQL, PostgreSQL, SQLite3 or TiDB (via le protocole MySQL)
|
||||
db_title=Paramètres de la base de données
|
||||
db_type=Type de base de données
|
||||
host=Hôte
|
||||
user=Utilisateur
|
||||
password=Mot de passe
|
||||
db_name=Nom de base de données
|
||||
db_helper=Veuillez utiliser le moteur INNODB avec le jeu de caractères utf8_general_ci pour MySQL.
|
||||
db_schema=Schéma
|
||||
db_helper=Employez le moteur INNODB pour MySQL avec l'encodage utf8_general_ci.
|
||||
ssl_mode=Mode SSL
|
||||
path=Emplacement
|
||||
sqlite_helper=Le chemin du fichier de base de données SQLite3. <br>Utilisez un chemin absolu lorsque vous démarrez en tant que service.
|
||||
@@ -63,13 +67,13 @@ err_empty_db_path=Le chemin de la base de données SQLite3 ne peut être vide.
|
||||
no_admin_and_disable_registration=Vous ne pouvez pas désactiver l'enregistrement sans créer un compte administrateur.
|
||||
err_empty_admin_password=Le mot de passe du compte administrateur ne peut être vide.
|
||||
|
||||
general_title=Paramètres généraux de Gogs
|
||||
general_title=Réglages Généraux d'Application
|
||||
app_name=Nom de l'application
|
||||
app_name_helper=Inscrivez fièrement le nom de votre organisation ici !
|
||||
repo_path=Emplacement racine des dépôts
|
||||
repo_path=Chemin Racine des Dépôts
|
||||
repo_path_helper=Tous les dépôts Git distants seront sauvegardés ici.
|
||||
run_user=Utilisateur système
|
||||
run_user_helper=L'utilisateur doit avoir accès à la racine des dépôts et exécuter Gogs.
|
||||
run_user=Utilisateur
|
||||
run_user_helper=L'utilisateur doit avoir accès à la Racine des Dépôts et exécuter Gogs.
|
||||
domain=Domaine
|
||||
domain_helper=Cela affecte les doublons d'URL SSH.
|
||||
ssh_port=Port SSH
|
||||
@@ -82,8 +86,9 @@ app_url=URL de l'application
|
||||
app_url_helper=Cela affecte les doublons d'URL HTTP/HTTPS et le contenu d'e-mail.
|
||||
log_root_path=Chemin des fichiers log
|
||||
log_root_path_helper=Répertoire d'écriture des fichiers de log.
|
||||
enable_console_mode=Enable Console Mode
|
||||
enable_console_mode_popup=In addition to file mode, also print logs to console.
|
||||
enable_console_mode=Activer le mode Console
|
||||
enable_console_mode_popup=En plus du mode fichier, également imprimer des journaux à la console.
|
||||
default_branch=Branchepar défaut
|
||||
|
||||
optional_title=Paramètres facultatifs
|
||||
email_title=Paramètres du service de messagerie
|
||||
@@ -119,8 +124,10 @@ sqlite3_not_available=Votre version publiée ne prend pas en charge SQLite3. Veu
|
||||
invalid_db_setting=Paramètres de base de données incorrects : %v
|
||||
invalid_repo_path=Chemin vers la racine du dépôt invalide : %v
|
||||
run_user_not_match=L'utilisateur d'exécution saisi n'est pas l'utilisateur d'exécution actuel : %s -> %s
|
||||
smtp_host_missing_port=Le numéro de port est manquant dans l'adresse de l'Hôte SMTP.
|
||||
invalid_smtp_from=Le champ SMTP Provenant de n'est pas valide: %v
|
||||
save_config_failed=La sauvegarde de la configuration a échoué : %v
|
||||
init_failed=L'initialisation de l'application a échoué.
|
||||
invalid_admin_setting=Paramètres du compte administrateur invalides : %v
|
||||
install_success=Bienvenue ! Nous sommes heureux que vous ayez choisi Gogs, amusez-vous et prenez soin de vous.
|
||||
invalid_log_root_path=L'emplacement racine des fichiers logs est invalide : %v
|
||||
@@ -149,7 +156,9 @@ create_new_account=Créer un nouveau compte
|
||||
register_hepler_msg=Déjà enregistré ? Connectez-vous !
|
||||
social_register_hepler_msg=Déjà enregistré ? Associez-le !
|
||||
disable_register_prompt=Désolé, les enregistrements ont été désactivés. Veuillez contacter l'administrateur du site.
|
||||
disable_register_mail=Désolé, la confirmation par e-mail des enregistrements a été désactivée.
|
||||
disable_register_mail=Désolé, la confirmation par courriel des enregistrements a été désactivée.
|
||||
auth_source=Sources d'authentification
|
||||
local=Locale
|
||||
remember_me=Se souvenir de moi
|
||||
forgot_password=Mot de passe oublié
|
||||
forget_password=Mot de passe oublié ?
|
||||
@@ -157,7 +166,7 @@ sign_up_now=Pas de compte ? Inscrivez-vous maintenant.
|
||||
confirmation_mail_sent_prompt=Un nouveau mail de confirmation à été envoyé à <b>%s</b>. Veuillez vérifier votre boîte de réception dans un délai de %d heures pour compléter votre enregistrement.
|
||||
active_your_account=Activer votre compte
|
||||
prohibit_login=Connexion interdite
|
||||
prohibit_login_desc=Votre compte est interdit de se connecter, contactez l’administrateur du site.
|
||||
prohibit_login_desc=La connexion avec ce compte est interdite ; contactez l'administrateur du site.
|
||||
resent_limit_prompt=Désolé, vos tentatives d'activation sont trop fréquentes. Veuillez réessayer dans 3 minutes.
|
||||
has_unconfirmed_mail=Bonjour %s, votre adresse e-mail (<b>%s</b>) n'a pas été confirmée. Si vous n'avez reçu aucun mail de confirmation ou souhaitez renouveler l'envoi, cliquez sur le bouton ci-dessous.
|
||||
resend_mail=Cliquez ici pour renvoyer un mail de confirmation
|
||||
@@ -168,6 +177,14 @@ reset_password_helper=Cliquez ici pour réinitialiser votre mot de passe
|
||||
password_too_short=Le mot de passe doit contenir 6 caractères minimum.
|
||||
non_local_account=Les comptes non locaux ne peuvent pas changer leur mot de passe via Gogs.
|
||||
|
||||
login_two_factor=Authentification en deux étapes
|
||||
login_two_factor_passcode=Mot de passe d'authentification
|
||||
login_two_factor_enter_recovery_code=Entrez un code de récupération en deux étapes
|
||||
login_two_factor_recovery=Récupération en deux étapes
|
||||
login_two_factor_recovery_code=Code de récupération
|
||||
login_two_factor_enter_passcode=Entrez un code d'authentification en deux étapes
|
||||
login_two_factor_invalid_recovery_code=Code de récupération a été utilisé ou n'est pas valide.
|
||||
|
||||
[mail]
|
||||
activate_account=Veuillez activer votre compte
|
||||
activate_email=Veuillez vérifier votre adresse e-mail
|
||||
@@ -203,7 +220,7 @@ Content=Contenu
|
||||
require_error=` ne peut pas être vide.`
|
||||
alpha_dash_error=` doivent être des caractères alpha, numériques ou tirets (-_) valides.`
|
||||
alpha_dash_dot_error=` doivent être des caractères alpha, numériques, tirets (-_) valides ou des points.`
|
||||
alpha_dash_dot_slash_error=` must be valid alpha or numeric or dash(-_) or dot characters or slashes.`
|
||||
alpha_dash_dot_slash_error=doit contenir uniquement des caractères alphanumériques, des tirets (-), des points (.) ou des slash (/)
|
||||
size_error=` doit être à la taille de %s.`
|
||||
min_size_error=` %s caractères minimum `
|
||||
max_size_error=` %s caractères maximum `
|
||||
@@ -220,6 +237,7 @@ org_name_been_taken=Nom d'organisation déjà pris.
|
||||
team_name_been_taken=Nom d'équipe déjà pris.
|
||||
email_been_used=Adresse e-mail déjà utilisée.
|
||||
username_password_incorrect=Nom d'utilisateur ou mot de passe incorrect.
|
||||
auth_source_mismatch=La source d’authentification sélectionnée n’est pas associée à l’utilisateur.
|
||||
enterred_invalid_repo_name=Veuillez vérifier que le nom saisi du dépôt soit correct.
|
||||
enterred_invalid_owner_name=Veuillez vérifier que le nom du propriétaire saisi soit correct.
|
||||
enterred_invalid_password=Veuillez vérifier que le mot de passe saisi soit correct.
|
||||
@@ -247,15 +265,15 @@ following=Abonnements
|
||||
follow=Suivre
|
||||
unfollow=Ne plus suivre
|
||||
|
||||
form.name_reserved=Le nom '%s' est réservé.
|
||||
form.name_pattern_not_allowed=Motif '%s' interdit pour les noms d'utilisateur.
|
||||
form.name_not_allowed=Le nom de l'utilisateur ou le schéma n'est pas autorisé
|
||||
|
||||
[settings]
|
||||
profile=Profil
|
||||
password=Mot de Passe
|
||||
avatar=Avatar
|
||||
ssh_keys=Clés SSH
|
||||
repos=Repositories
|
||||
security=Sécurité
|
||||
repos=Dépôts
|
||||
orgs=Organisations
|
||||
applications=Applications
|
||||
delete=Supprimer le compte
|
||||
@@ -299,6 +317,7 @@ delete_email=Supprimer
|
||||
email_deletion=Suppression de l'adresse e-mail
|
||||
email_deletion_desc=Supprimer cette adresse e-mail supprimera les informations associées à votre compte. Voulez-vous continuer ?
|
||||
email_deletion_success=L'adresse e-mail a été supprimée avec succès !
|
||||
email_deletion_primary=Impossible de supprimer l'adresse de courrier principale
|
||||
add_new_email=Ajouter une nouvelle adresse e-mail
|
||||
add_email=Ajouter un e-mail
|
||||
add_email_confirmation_sent=Une nouvelle confirmation d'adresse e-mail a été envoyé à '%s', veuillez vérifier votre boîte de réception dans un délai de %d heures pour terminer le processus de confirmation.
|
||||
@@ -324,31 +343,54 @@ no_activity=Aucune activité récente
|
||||
key_state_desc=Cette clé a été utilisée durant les 7 derniers jours
|
||||
token_state_desc=Ce jeton a été utilisé durant les 7 derniers jours
|
||||
|
||||
manage_social=Gérer les réseaux sociaux associés
|
||||
social_desc=Ceci est la liste des comptes de réseaux sociaux associés. Supprimez ceux que vous ne reconnaissez pas.
|
||||
unbind=Dissocier
|
||||
unbind_success=Compte de réseau social dissocié.
|
||||
two_factor=Authentification en deux étapes
|
||||
two_factor_status=État :
|
||||
two_factor_on=Activé
|
||||
two_factor_off=Désactivé
|
||||
two_factor_enable=Activer
|
||||
two_factor_disable=Désactiver
|
||||
two_factor_view_recovery_codes=Voir et sauvegarder <a href="%s%s">vos codes de récupération</a> dans un endroit sécurisé. Vois pouvez les utiliser comme mot de passe si vous perdez l'accès à l'application d'authentification.
|
||||
two_factor_http=Vous ne pouvez plus utiliser un nom d'utilisateur et mot de passe en clair pour les opérations en HTTP/HTTPS. Merci de créer et d'utiliser un <a href="%[1]s%[2]s">jeton d'accès personnel</a> comme moyen d'identification, par exemple <code>%[3]s</code>.
|
||||
two_factor_enable_title=Activer l'authentification en deux étapes
|
||||
two_factor_scan_qr=Veuillez utiliser votre application d'authentification pour numériser l'image :
|
||||
two_factor_or_enter_secret=Ou entrez la phrase secrète :
|
||||
two_factor_then_enter_passcode=Puis entrez le mot de passe :
|
||||
two_factor_verify=Vérifier
|
||||
two_factor_invalid_passcode=Le mot de passe que vous avez entré n'est pas valide, veuillez réessayer.
|
||||
two_factor_reused_passcode=Le mot de passe que vous avez entré a déjà été utilisé, veuillez en essayez un autre !
|
||||
two_factor_enable_error=L'activation de l'authentification en deux étapes a échoué : %v
|
||||
two_factor_enable_success=L'authentification en deux étapes a été bien été activée pour votre compte.
|
||||
two_factor_recovery_codes_title=Codes de secours pour l'authentification en deux étapes
|
||||
two_factor_recovery_codes_desc=Les codes de récupération sont utilisés quand vous perdez temporairement l'accès à votre application d'authentification. Chaque code de récupération ne peut être utilisé qu'une fois, <b>merci de les garder dans un endroit sécurisé</b>.
|
||||
two_factor_regenerate_recovery_codes=Regénérer les codes de récupération
|
||||
two_factor_regenerate_recovery_codes_error=La regénération des codes de récupération a échouée : %v
|
||||
two_factor_regenerate_recovery_codes_success=Les nouveaux codes de récupération ont été générés avec succès !
|
||||
two_factor_disable_title=Désactiver l'authentification à deux facteurs
|
||||
two_factor_disable_desc=Le niveau de sécurité de votre compte va baisser après avoir désactiver l'authentification à deux facteurs. Voulez-vous continuer ?
|
||||
two_factor_disable_success=L'authentification à deux facteurs a été désactivée avec succès !
|
||||
|
||||
manage_access_token=Gérer les jetons d'accès personnels
|
||||
generate_new_token=Générer le nouveau jeton
|
||||
tokens_desc=Jetons, que vous avez généré, qui peuvent être utilisés pour accéder à l'API Gogs.
|
||||
access_token_tips=Le jeton d'accès personnel est employé soit comme nom d'utilisateur soit comme mot de passe. L'emploi du « x-access-token » comme nom d'utilisateur et le jeton d'accès personnel comme mot de passe est recommandé pour les applications Git
|
||||
new_token_desc=Chaque Jeton donnera un accès complet à votre compte.
|
||||
token_name=Nom du jeton
|
||||
generate_token=Générer le jeton
|
||||
generate_token_succees=Nouveau jeton d'accès a été généré avec succès ! Assurez-vous de copier votre nouveau jeton d'accès personnel maintenant. Vous ne serez pas en mesure de le revoir !
|
||||
delete_token=Supprimer
|
||||
access_token_deletion=Suppression du jeton d'accès
|
||||
access_token_deletion=Suppression du jeton d'accès personnel
|
||||
access_token_deletion_desc=Supprimer ce jeton d'accès supprimera tous les accès de l'application. Voulez-vous continuer ?
|
||||
delete_token_success=Le jeton d'accèsa été supprimé avec succès ! N'oubliez pas de mettre à jour vos applications.
|
||||
delete_token_success=Le jeton d'accès a été supprimé avec succès ! N'oubliez pas de mettre à jour vos applications.
|
||||
token_name_exists=Un jeton avec le même nom existe déjà.
|
||||
|
||||
orgs.none=Vous n'êtes membre d'aucune organisation.
|
||||
orgs.leave_title=Quitter une organisation
|
||||
orgs.leave_desc=Vous perdrez accès à tous les dépôts et équipes après que vous ayez quitté l'organisation. Voulez-vous continuer ?
|
||||
|
||||
repos.leave=Leave
|
||||
repos.leave_title=Leave repository
|
||||
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
|
||||
repos.leave_success=You have left repository '%s' successfully!
|
||||
repos.leave=Quitter
|
||||
repos.leave_title=Quitter le dépôt
|
||||
repos.leave_desc=Vous perdrez l'accès à ce dépôt après l'avoir quitté. Voulez-vous continuer ?
|
||||
repos.leave_success=Vous avez quitté le dépôt '%s' avec succès !
|
||||
|
||||
delete_account=Supprimer votre compte
|
||||
delete_prompt=Votre compte sera définitivement supprimé et cette opération est <strong>irréversible</strong> !
|
||||
@@ -361,9 +403,11 @@ owner=Propriétaire
|
||||
repo_name=Nom du dépôt
|
||||
repo_name_helper=Idéalement, le nom d'un dépot devrait être court, mémorable et <strong>unique</strong>.
|
||||
visibility=Visibilité
|
||||
unlisted=Non répertorié
|
||||
visiblity_helper=Ce dépôt est <span class="ui red text"> privé</span>
|
||||
unlisted_helper=Ce dépôt <span class="ui red text">n'est pas répertorié</span>
|
||||
visiblity_helper_forced=L'administrateur du site a forcé tous les nouveaux dépôts à être <span class="ui red text">privés</span>
|
||||
visiblity_fork_helper=(Les changement de cette valeur affecteront tous les forks)
|
||||
visiblity_fork_helper=(Les changements de cette valeur affecteront tous les forks)
|
||||
clone_helper=Besoin d'aide pour dupliquer ? Visitez <a target="_blank" href="%s">l'aide</a> !
|
||||
fork_repo=Créer un fork du dépôt
|
||||
fork_from=Fork de
|
||||
@@ -387,12 +431,13 @@ mirror_last_synced=Dernière synchronisation
|
||||
watchers=Observateurs
|
||||
stargazers=Stargazers
|
||||
forks=Forks
|
||||
repo_description_helper=Description du dépôt. 512 caractères maximum.
|
||||
repo_description_length=Caractères disponibles
|
||||
|
||||
form.reach_limit_of_creation=Le propriétaire a atteint le nombre maximal de %d dépôts créés.
|
||||
form.name_reserved=Le nom de dépôt '%s' est réservé.
|
||||
form.name_pattern_not_allowed=Motif '%s' interdit pour les noms de dépôt.
|
||||
form.name_not_allowed=Le nom de l'utilisateur ou le schéma n'est pas autorisé
|
||||
|
||||
need_auth=Nécessite une Autorisation
|
||||
need_auth=Nécessite une autorisation
|
||||
migrate_type=Type de migration
|
||||
migrate_type_helper=Ce dépôt sera un <span class="text blue"> miroir</span>
|
||||
migrate_repo=Migrer le dépôt
|
||||
@@ -401,6 +446,7 @@ migrate.clone_address_desc=Cela peut être une URL HTTP/HTTPS/GIT.
|
||||
migrate.clone_address_desc_import_local=Vous êtes aussi autorisé à migrer un dépôt via un chemin local du serveur.
|
||||
migrate.permission_denied=Vous n'êtes pas autorisé à importer des dépôts locaux.
|
||||
migrate.invalid_local_path=Chemin local non valide, non existant ou n'étant pas un dossier.
|
||||
migrate.clone_address_resolved_to_blocked_local_address=L'adresse de clonage correspond à une adresse réseau locale, qui est bloquée implicitement.
|
||||
migrate.failed=Echec de migration: %v
|
||||
|
||||
mirror_from=miroir de
|
||||
@@ -411,7 +457,7 @@ copy_link_error=Appuyez sur ⌘-C ou Ctrl-C pour copier
|
||||
copied=Copié
|
||||
unwatch=Ne plus suivre
|
||||
watch=Suivre
|
||||
unstar=Retirer le vote
|
||||
unstar=Retirer des favoris
|
||||
star=Voter
|
||||
fork=Fork
|
||||
|
||||
@@ -420,7 +466,7 @@ quick_guide=Introduction rapide
|
||||
clone_this_repo=Cloner ce dépôt
|
||||
create_new_repo_command=Créer un nouveau dépôt en ligne de commande
|
||||
push_exist_repo=Soumettre un dépôt existant par ligne de commande
|
||||
bare_message=This repository does not have any content yet.
|
||||
bare_message=Ce dépôt n'a pas de contenu pour l'instant.
|
||||
|
||||
files=Fichiers
|
||||
branch=Branche
|
||||
@@ -439,15 +485,17 @@ file_raw=Raw
|
||||
file_history=Historique
|
||||
file_view_raw=Voir le Raw
|
||||
file_permalink=Lien permanent
|
||||
file_too_large=Ce fichier est trop gros pour être afficher
|
||||
file_too_large=Ce fichier est trop gros pour être affiché
|
||||
video_not_supported_in_browser=Votre navigateur ne supporte pas la balise video HTML5.
|
||||
|
||||
branches.overview=Overview
|
||||
branches.overview=Résumé
|
||||
branches.active_branches=Branches Actives
|
||||
branches.stale_branches=Stale Branches
|
||||
branches.stale_branches=Branches stagnantes
|
||||
branches.all=Toutes les Branches
|
||||
branches.updated_by=Updated %[1]s by %[2]s
|
||||
branches.updated_by=Mise à jour %[1]s par %[2]s
|
||||
branches.change_default_branch=Changer la Branche par Défaut
|
||||
branches.default_deletion_not_allowed=Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed=Cannot delete a protected branch.
|
||||
|
||||
editor.new_file=Nouveau fichier
|
||||
editor.upload_file=Téléverser un fichier
|
||||
@@ -465,10 +513,10 @@ editor.filename_help=Pour ajouter un répertoire, il suffit de le taper puis d'a
|
||||
editor.or=ou
|
||||
editor.cancel_lower=annuler
|
||||
editor.commit_changes=Commit les modifications
|
||||
editor.add_tmpl=Ajouter '%s/<filename>'
|
||||
editor.add=Ajouter '%s'
|
||||
editor.update=Mettre à jour '%s'
|
||||
editor.delete=Supprimer '%s'
|
||||
editor.add_tmpl=Ajout de '%s/<filename>'
|
||||
editor.add=Ajout de '%s'
|
||||
editor.update=Mise à jour de '%s'
|
||||
editor.delete=Suppression de '%s'
|
||||
editor.commit_message_desc=Ajouter une optionnelle description détaillée...
|
||||
editor.commit_directly_to_this_branch=Soumettre directement à la branche <strong class="branch-name">%s</strong>.
|
||||
editor.create_new_branch=Créer une <strong>nouvelle branche</strong> pour cette validation et envoyer une nouvelle pull request.
|
||||
@@ -476,16 +524,17 @@ editor.new_branch_name_desc=Nouveau nom de la branche...
|
||||
editor.cancel=Annuler
|
||||
editor.filename_cannot_be_empty=Nom de fichier ne peut pas être vide.
|
||||
editor.branch_already_exists=La branche '%s' existe déjà dans ce dépôt.
|
||||
editor.directory_is_a_file=L'entrée '%s' dans le chemin d’accès parent est un fichier pas un répertoire dans ce dépôt.
|
||||
editor.directory_is_a_file=L'entrée '%s' dans le chemin d'accès parent est un fichier, pas un répertoire dans ce dépôt.
|
||||
editor.file_is_a_symlink=Le fichier « %s » est un lien symbolique qui ne peut être modifié depuis l'éditeur web.
|
||||
editor.filename_is_a_directory=Le nom de fichier '%s' existe déjà dans ce dépot.
|
||||
editor.file_editing_no_longer_exists=Le fichier '%s' que vous modifiez n'existe plus dans le dépôt.
|
||||
editor.file_changed_while_editing=Le contenu du fichier à changé depuis que vous avez commencé à l'éditer. <a target="_blank" href="%s">Cliquez ici</a> pour voir ce qui à été modifié ou <strong>appuyez sur commit encore une fois</strong> pour remplacer ces changements.
|
||||
editor.file_already_exists=La branche '%s' existe déjà dans ce dépôt.
|
||||
editor.no_changes_to_show=Il n’y a aucun changement à afficher.
|
||||
editor.fail_to_update_file=Échec lors de la mise à jour/création du fichier '%s' avec l’erreur : %v
|
||||
editor.fail_to_update_file=Échec lors de la mise à jour/création du fichier '%s' avec l'erreur : %v
|
||||
editor.fail_to_delete_file=Impossible de supprimer le fichier «%s» avec l’erreur : %v
|
||||
editor.add_subdir=Ajouter un sous-répertoire...
|
||||
editor.unable_to_upload_files=Échec lors de l'envoie du fichier '%s' avec l’erreur : %v
|
||||
editor.unable_to_upload_files=Échec lors de l'envoie du fichier '%s' avec l'erreur : %v
|
||||
editor.upload_files_to_dir=Transférer les fichiers vers '%s'
|
||||
|
||||
commits.commit_history=Historique des commits
|
||||
@@ -586,14 +635,15 @@ pulls.compare_compare=Comparer
|
||||
pulls.filter_branch=Filtre de branche
|
||||
pulls.no_results=Aucun résultat trouvé.
|
||||
pulls.nothing_to_compare=Il n'y a rien de comparable parce que les deux branches sont égales.
|
||||
pulls.has_pull_request=`Il y a déjà une demande de tirer entre ces deux cibles : <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Creer une Pull Request
|
||||
pulls.nothing_merge_base=Il n'y a rien à comparer parce que les deux branches ont un historique complètement différent.
|
||||
pulls.has_pull_request=`Il y a déjà une pull request entre ces deux cibles : <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Créer une Pull Request
|
||||
pulls.title_desc=veut fusionner %[1]d commits à partir de <code>%[2]s</code> vers <code>%[3]s</code>
|
||||
pulls.merged_title_desc=à fusionné %[1]d commits à partir de <code>%[2]s</code> vers <code>%[3]s</code> %[4]s
|
||||
pulls.merged_title_desc=a fusionné %[1]d commits à partir de <code>%[2]s</code> vers <code>%[3]s</code> %[4]s
|
||||
pulls.tab_conversation=Conversation
|
||||
pulls.tab_commits=Commits
|
||||
pulls.tab_files=Fichiers modifiés
|
||||
pulls.reopen_to_merge=Veuillez rouvrir cette demande de Pull Request pour effectuer l'opération de fusion.
|
||||
pulls.reopen_to_merge=Veuillez rouvrir cette Pull Request pour effectuer l'opération de fusion.
|
||||
pulls.merged=Fusionné
|
||||
pulls.has_merged=Cette Pull Request a été fusionnée avec succès !
|
||||
pulls.data_broken=Les données de cette pull request ont été compromises en raison de la suppression d'informations sur le fork.
|
||||
@@ -601,6 +651,9 @@ pulls.is_checking=La recherche de conflits est toujours en cours, veuillez rafra
|
||||
pulls.can_auto_merge_desc=Cette pull request peut être fusionnée automatiquement.
|
||||
pulls.cannot_auto_merge_desc=Cette pull request ne peut être fusionnée automatiquement à cause de conflits.
|
||||
pulls.cannot_auto_merge_helper=Fusionner manuellement afin de résoudre les conflits.
|
||||
pulls.create_merge_commit=Créer un commit de fusion
|
||||
pulls.rebase_before_merging=Rebaser avant la fusion
|
||||
pulls.commit_description=Description du commit
|
||||
pulls.merge_pull_request=Fusionner la Pull Request
|
||||
pulls.open_unmerged_pull_exists=`Vous ne pouvez effectuer une réouverture car il y a déjà une pull-request ouverte (#%d) depuis le même dépôt avec les mêmes informations de fusion et est en attente de fusion.`
|
||||
pulls.delete_branch=Supprimer la branche
|
||||
@@ -656,11 +709,11 @@ settings.collaboration.write=Écrire
|
||||
settings.collaboration.read=Lire
|
||||
settings.collaboration.undefined=Indéfini
|
||||
settings.branches=Branches
|
||||
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
|
||||
settings.branches_bare=Vous ne pouvez pas gérer les branches d'un dépôt vide. Merci de publier du contenu dans un premier temps.
|
||||
settings.default_branch=Branche par défaut
|
||||
settings.default_branch_desc=La branche par défaut est considérée comme la branche « originale » pour les commits de code, les requêtes de fusion et l'édition en ligne.
|
||||
settings.update=Actualiser
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_unsupported=Le changement de branche par défaut n'est pas supporté par la version de Git sur ce serveur.
|
||||
settings.update_default_branch_success=La branche par défaut de ce dépôt a bien été mise à jour.
|
||||
settings.protected_branches=Branches protégées
|
||||
settings.protected_branches_desc=Protéger les branches du push forcé, de la suppression accidentelle et des publicateurs de code en liste blanche.
|
||||
@@ -669,10 +722,10 @@ settings.branch_protection=Protection de branche
|
||||
settings.branch_protection_desc=Sélectionnez les options de protection pour la branche <b>%s</b>.
|
||||
settings.protect_this_branch=Protéger cette branche
|
||||
settings.protect_this_branch_desc=Interdire les push forcés et empêcher la suppression.
|
||||
settings.protect_require_pull_request=Exiger une requête de fusion plutôt qu'un push immédiat
|
||||
settings.protect_require_pull_request=Exiger une pull request plutôt qu'un push immédiat
|
||||
settings.protect_require_pull_request_desc=Activez cette option pour empêcher la publication immédiate vers cette branche. Les commits devront être publiés vers une autre branche (non protégée) et fusionnée dans cette branche avec une requête de fusion.
|
||||
settings.protect_whitelist_committers=Liste blanche de personnes pouvant publier sur cette branche
|
||||
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
|
||||
settings.protect_whitelist_committers_desc=Ajouter des personnes ou des équipes à la liste blanche des fusions directes de cette branche. Les utilisateurs dans cette liste blanche passeront outre la nécessité de valider leurs requêtes de fusion.
|
||||
settings.protect_whitelist_users=Utilisateurs qui peuvent pousser sur cette branche
|
||||
settings.protect_whitelist_search_users=Rechercher des utilisateurs
|
||||
settings.protect_whitelist_teams=Les équipes pour lesquelles les membres peuvent pousser sur cette branche
|
||||
@@ -690,13 +743,13 @@ settings.change_reponame_prompt=Ce changement affectera comment les liens sont r
|
||||
settings.advanced_settings=Paramètres avancés
|
||||
settings.wiki_desc=Activer le wiki
|
||||
settings.use_internal_wiki=Utiliser le wiki interne
|
||||
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
|
||||
settings.allow_public_wiki_desc=Autoriser l'accès public au wiki quand le dépôt est privé
|
||||
settings.use_external_wiki=Utiliser un wiki externe
|
||||
settings.external_wiki_url=URL Wiki externe
|
||||
settings.external_wiki_url_desc=Les visiteurs seront redirigés vers cette URL lorsqu'ils cliqueront sur l'onglet.
|
||||
settings.issues_desc=Activer le système de tickets
|
||||
settings.use_internal_issue_tracker=Utiliser le système simplifié de tickets interne
|
||||
settings.allow_public_issues_desc=Allow public access to issues when repository is private
|
||||
settings.allow_public_issues_desc=Permettre l'accès du public aux tickets lorsque le dépôt est privé
|
||||
settings.use_external_issue_tracker=Utiliser un bug-tracker externe
|
||||
settings.external_tracker_url=Adresse de l'issue tracker externe
|
||||
settings.external_tracker_url_desc=Les visiteurs seront redirigés vers cette URL lorsqu'ils cliqueront sur l'onglet.
|
||||
@@ -705,7 +758,9 @@ settings.tracker_issue_style=Style de nommage des bugs du tracker externe :
|
||||
settings.tracker_issue_style.numeric=Numérique
|
||||
settings.tracker_issue_style.alphanumeric=Alphanumérique
|
||||
settings.tracker_url_format_desc=Vous pouvez utiliser l'espace réservé <code>{user} {repo} {index}</code> pour le nom d'utilisateur, le nom du dépôt et le numéro de bug.
|
||||
settings.pulls_desc=Activer les pull requests pour accepter les contributions publiques
|
||||
settings.pulls_desc=Activer les pull requests pour accepter les contributions depuis des dépôts et des branches
|
||||
settings.pulls.ignore_whitespace=Ignorer les changements quand ce sont des espaces
|
||||
settings.pulls.allow_rebase_merge=Autoriser l'utilisation de rebase pour fusionner les validations
|
||||
settings.danger_zone=Zone de danger
|
||||
settings.cannot_fork_to_same_owner=Vous ne pouvez par créer un fork d'un dépot à son propriétaire actuel.
|
||||
settings.new_owner_has_same_repo=Le nouveau propriétaire a déjà un dépôt nommé ainsi.
|
||||
@@ -727,7 +782,7 @@ settings.delete=Supprimer ce dépôt
|
||||
settings.delete_desc=Attention, cette action est action irréversible. Soyez sûr de vous.
|
||||
settings.delete_notices_1=- Cette opération <strong>ne peut pas </strong> être annulée.
|
||||
settings.delete_notices_2=- Cette opération supprimera définitivement le dépôt, y compris les données Git, les tickets, les commentaires et les accès des collaborateurs.
|
||||
settings.delete_notices_fork_1=-Tous les forks deviendront indépendants après l’effacement.
|
||||
settings.delete_notices_fork_1=-Tous les forks deviendront indépendants après l'effacement.
|
||||
settings.deletion_success=Le dépôt a été supprimé avec succès!
|
||||
settings.update_settings_success=Options mises à jour avec succès.
|
||||
settings.transfer_owner=Nouveau propriétaire
|
||||
@@ -742,21 +797,25 @@ settings.collaborator_deletion_desc=Cet utilisateur n'aura plus accès pour coll
|
||||
settings.remove_collaborator_success=Collaborateur supprimé.
|
||||
settings.search_user_placeholder=Rechercher un utilisateur...
|
||||
settings.org_not_allowed_to_be_collaborator=Une organisation n'est pas autorisée à être ajoutée en tant que collaborateur.
|
||||
settings.add_webhook=Ajouter un Webhook
|
||||
settings.hooks_desc=Les Webhooks sont des déclencheurs de POST HTTP . Lorsque qu'un événement se produit dans Gogs, une notification sera envoyée vers l'hôte cible préalablement spécifié. Apprenez-en davantage dans le <a target="_blank" href="%s">Guide des Webhooks</a>.
|
||||
settings.webhooks.add_new=Ajouter un nouveau rappel HTTP
|
||||
settings.webhooks.choose_a_type=Choisis le type de...
|
||||
settings.add_webhook=Ajouter un Webhook
|
||||
settings.webhook_deletion=Supprimer le Webhook
|
||||
settings.webhook_deletion_desc=Supprimer ce webhook va supprimer ses informations et l'historique de livraison. Voulez-vous continuer ?
|
||||
settings.webhook_deletion_success=Le webhook a été supprimé avec succès !
|
||||
settings.webhook.test_delivery=Tester la version
|
||||
settings.webhook.test_delivery_desc=Envoyer un faux push pour tester la configuration des webhooks
|
||||
settings.webhook.test_delivery_success=Le webhook de test a été ajouté à la file d'attente de livraison. L'affichage dans l'historique de livraison peut prendre quelques secondes.
|
||||
settings.webhook.redelivery=Redelivery
|
||||
settings.webhook.redelivery_success=Hook task '%s' has been readded to delivery queue. It may take few seconds to update delivery status in history.
|
||||
settings.webhook.redelivery=Redistribution
|
||||
settings.webhook.redelivery_success=La tâche crochet '%s' a été réajoutée à la liste de livraison. La mise à jour de l'état de livraison dans l'historique peut prendre quelques secondes.
|
||||
settings.webhook.request=Requête
|
||||
settings.webhook.response=Réponse
|
||||
settings.webhook.headers=Entêtes
|
||||
settings.webhook.payload=Payload
|
||||
settings.webhook.body=Corps
|
||||
settings.webhook.err_cannot_parse_payload_url=Impossible d'analyser l'URL : %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address=L'URL du contenu correspond à une adresse réseau locale qui est bloquée implicitement.
|
||||
settings.githooks_desc=Les Hooks Git sont alimentés par Git lui même. Les Hooks compatibles sont modifiables dans la liste ci-dessous pour effectuer des opérations personnalisées.
|
||||
settings.githook_edit_desc=Si un Hook est inactif, un exemple de contenu vous sera proposé. Un contenu laissé vide signifie un Hook inactif.
|
||||
settings.githook_name=Nom du Hook
|
||||
@@ -779,17 +838,17 @@ settings.event_create_desc=Branche, ou Tag créé
|
||||
settings.event_delete=Supprimer
|
||||
settings.event_delete_desc=Branche ou tag supprimé
|
||||
settings.event_fork=Fork
|
||||
settings.event_fork_desc=Repository forked
|
||||
settings.event_fork_desc=Dépôt dédoublé
|
||||
settings.event_push=Push
|
||||
settings.event_push_desc=Git push vers un dépôt
|
||||
settings.event_issues=Tickets
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_issues_desc=Ticket ouvert, fermé, réouvert, modifié, assigné, non-assigné, étiquette mise à jour, étiquette nettoyée, jalonnée, ou déjalonnée.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.event_pull_request_desc=Pull requests ouverte, fermée, réouverte, modifiée, assignée, non-assignée, étiquette mise à jour, étiquette nettoyée, jalonnée, déjalonnée, ou synchronisée.
|
||||
settings.event_issue_comment=Commentaire du ticket
|
||||
settings.event_issue_comment_desc=Commentaire du ticket créé, modifié, ou supprimé.
|
||||
settings.event_release=Version publiée
|
||||
settings.event_release_desc=Version publiée dans un dépôt.
|
||||
settings.active=Actif
|
||||
settings.active_helper=Les détails seront délivrés lorsque ce Hook sera déclenché.
|
||||
settings.add_hook_success=Nouveau Webhook ajouté.
|
||||
@@ -800,6 +859,7 @@ settings.recent_deliveries=Livraisons récentes
|
||||
settings.hook_type=Type de Hook
|
||||
settings.add_slack_hook_desc=Intégrer <a href="%s"> Slack</a> à votre dépôt.
|
||||
settings.add_discord_hook_desc=Ajouter l'intégration de <a href="%s">Discord</a> à votre dépôt.
|
||||
settings.add_dingtalk_hook_desc=Ajouter l'intégration de <a href="%s">Dingtalk</a> à votre dépôt.
|
||||
settings.slack_token=Jeton
|
||||
settings.slack_domain=Domaine
|
||||
settings.slack_channel=Canal
|
||||
@@ -816,6 +876,8 @@ settings.add_key_success=La nouvelle clé de déploiement '%s' a été ajoutée
|
||||
settings.deploy_key_deletion=Supprimer la Clé de Déploiement
|
||||
settings.deploy_key_deletion_desc=Supprimer cette clé de déploiement effacera tous les accès relatifs pour ce référentiel. Voulez-vous continuer ?
|
||||
settings.deploy_key_deletion_success=La clé de déploiement a été supprimée avec succès !
|
||||
settings.description_desc=Description du dépôt. 512 caractères maximum.
|
||||
settings.description_length=Caractères disponibles
|
||||
|
||||
diff.browse_source=Parcourir la source
|
||||
diff.parent=Parent
|
||||
@@ -880,9 +942,8 @@ team_name_helper=Ce nom sera utilisé pour mentionner l'équipe dans les convers
|
||||
team_desc_helper=Présentation de l'équipe
|
||||
team_permission_desc=Quel niveau d'accès cette équipe devrait-elle posséder ?
|
||||
|
||||
form.name_reserved=Le nom d'organisation '%s' est réservé.
|
||||
form.name_pattern_not_allowed=Motif '%s' interdit pour les noms d'organisation.
|
||||
form.team_name_reserved=Le nom d'équipe « %s » est réservé.
|
||||
form.name_not_allowed=Le nom de l'organisation ou le modèle n'est pas autorisé.
|
||||
form.team_name_not_allowed=Le nom de l'équipe ou le pattern %q n'est pas autorisé.
|
||||
|
||||
settings=Paramètres
|
||||
settings.options=Options
|
||||
@@ -899,7 +960,7 @@ settings.delete_prompt=Cela supprimera cette organisation définitivement. Cette
|
||||
settings.confirm_delete_account=Confirmez la suppression
|
||||
settings.delete_org_title=Suppression d'organisation
|
||||
settings.delete_org_desc=Cette organisation sera définitivement supprimée. Continuer ?
|
||||
settings.hooks_desc=Ajoute des vebhooks qui seront activés pour <strong>tous les dépôts</strong> de cette organisation.
|
||||
settings.hooks_desc=Ajoute des webhooks qui seront activés pour <strong>tous les dépôts</strong> de cette organisation.
|
||||
|
||||
members.membership_visibility=Visibilité des membres:
|
||||
members.public=Public
|
||||
@@ -954,12 +1015,19 @@ first_page=Première
|
||||
last_page=Dernière
|
||||
total=Total : %d
|
||||
|
||||
dashboard.build_info=Informations sur la construction
|
||||
dashboard.app_ver=Version de l'application
|
||||
dashboard.git_version=Version de Git
|
||||
dashboard.go_version=Version de Go
|
||||
dashboard.build_time=Temps de compilation
|
||||
dashboard.build_commit=Commit
|
||||
dashboard.statistic=Statistiques
|
||||
dashboard.operations=Opérations
|
||||
dashboard.system_status=État du système
|
||||
dashboard.statistic_info=La base de données Gogs contient <b>%d</b> utilisateurs, <b>%d</b> organisations, <b>%d</b> clés publiques, <b>%d</b> dépôts, <b>%d</b> surveillances de dépôts, <b>%d</b> votes, <b>%d</b> actions, <b>%d</b> accès, <b>%d</b> tickets, <b>%d</b> commentaires, <b>%d</b> comptes de réseaux sociaux, <b>%d</b> abonnements, <b>%d</b> miroirs, <b>%d</b> versions, <b>%d</b> connexions d'origine, <b>%d</b> webhooks, <b>%d</b> versions, <b>%d</b> labels, <b>%d</b> tâches hook, <b>%d</b> équipes, <b>%d</b> tâches de mise à jour, <b>%d</b> fichiers.
|
||||
dashboard.operation_name=Nom de l'Opération
|
||||
dashboard.operation_switch=Basculer
|
||||
dashboard.select_operation_to_run=Veuillez sélectionner l'opération à exécuter
|
||||
dashboard.operation_run=Exécuter
|
||||
dashboard.clean_unbind_oauth=Nettoyer les associations OAuthes
|
||||
dashboard.clean_unbind_oauth_success=Tous unbind OAuthes ont été supprimés avec succès.
|
||||
@@ -1049,13 +1117,14 @@ repos.private=Privé
|
||||
repos.watches=Suivi par
|
||||
repos.stars=Votes
|
||||
repos.issues=Tickets
|
||||
repos.size=Size
|
||||
repos.size=Taille
|
||||
|
||||
auths.auth_manage_panel=Panel d'administration des authentifications
|
||||
auths.auth_sources=Sources d'authentification
|
||||
auths.new=Ajouter une nouvelle source d'authentification
|
||||
auths.name=Nom
|
||||
auths.type=Type
|
||||
auths.enabled=Activé
|
||||
auths.default=Par défaut
|
||||
auths.updated=Mis à jour
|
||||
auths.auth_type=Type d'authentification
|
||||
auths.auth_name=Nom de l'authentification
|
||||
@@ -1064,6 +1133,7 @@ auths.domain=Domaine
|
||||
auths.host=Hôte
|
||||
auths.port=Port
|
||||
auths.bind_dn=Bind DN
|
||||
auths.bind_dn_helper=Vous pouvez utiliser « %s » qui sera remplacé par le nom d'utilisateur, par exemple « DOM\%s »
|
||||
auths.bind_password=Bind mot de passe
|
||||
auths.bind_password_helper=Avertissement : Ce mot de passe est stocké en clair. N'utilisez pas le mot de passe d'un compte doté de privilèges élevés.
|
||||
auths.user_base=Utilisateur Search Base
|
||||
@@ -1073,6 +1143,11 @@ auths.attribute_username_placeholder=Laisser vide pour utiliser la valeur du for
|
||||
auths.attribute_name=Attribut du prénom
|
||||
auths.attribute_surname=Attribut du nom de famille
|
||||
auths.attribute_mail=Attribut de l'e-mail
|
||||
auths.verify_group_membership=Vérifier l'appartenance à un groupe
|
||||
auths.group_search_base_dn=Recherche de groupe basée sur le nom de domaine
|
||||
auths.group_filter=Filtre par groupe
|
||||
auths.group_attribute_contain_user_list=Attribut de groupe contenant la liste des utilisateurs
|
||||
auths.user_attribute_listed_in_group=Attribut de l'utilisateur listé dans le groupe
|
||||
auths.attributes_in_bind=Aller chercher les attributs dans le contexte de liaison DN
|
||||
auths.filter=Filtre utilisateur
|
||||
auths.admin_filter=Filtre administrateur
|
||||
@@ -1086,9 +1161,9 @@ auths.enable_tls=Activer le Chiffrement TLS
|
||||
auths.skip_tls_verify=Ne pas vérifier TLS
|
||||
auths.pam_service_name=Nom du Service PAM
|
||||
auths.enable_auto_register=Connexion Automatique
|
||||
auths.tips=Conseils
|
||||
auths.edit=Modifier les paramètres d'authentification
|
||||
auths.activated=Authentification activée
|
||||
auths.default_auth=Cette authentification est la source de connexion par défaut
|
||||
auths.new_success=Nouvelle authentification «%s » a été ajoutée avec succès.
|
||||
auths.update_success=Les paramètre d'authentification a été mis à jour avec succès.
|
||||
auths.update=Mettre à jour les paramètres d'authentifications
|
||||
@@ -1098,115 +1173,186 @@ auths.delete_auth_desc=Cette authentification va être supprimée. voulez-vous c
|
||||
auths.still_in_used=Cette authentification est encore utilisée par d'autres utilisateurs, supprimez-les ou convertir ces utilisateurs vers un autre type de session, avant.
|
||||
auths.deletion_success=L'authentification a été supprimée avec succès !
|
||||
auths.login_source_exist=La source de connexion « %s » existe déjà.
|
||||
auths.github_api_endpoint=API Endpoint
|
||||
|
||||
config.not_set=(non défini)
|
||||
config.server_config=Configuration du Serveur
|
||||
config.app_name=Nom de l'application
|
||||
config.app_ver=Version de l'application
|
||||
config.app_url=URL de l'application
|
||||
config.domain=Domaine
|
||||
config.offline_mode=Mode hors-ligne
|
||||
config.disable_router_log=Désactiver la Journalisation du Routeur
|
||||
config.brand_name=Nom de la marque
|
||||
config.run_user=Utilisateur système
|
||||
config.run_mode=Mode d'Éxécution
|
||||
config.git_version=Version de Git
|
||||
config.static_file_root_path=Chemin statique des fichiers racines
|
||||
config.log_file_root_path=Emplacement Racine du Fichier Journal
|
||||
config.reverse_auth_user=Annuler l'Authentification de l'Utilisateur
|
||||
config.server.external_url=URL externe
|
||||
config.server.domain=Domaine
|
||||
config.server.protocol=Protocole
|
||||
config.server.http_addr=Adresse HTTP
|
||||
config.server.http_port=Port HTTP
|
||||
config.server.cert_file=Fichier de certificat
|
||||
config.server.key_file=Fichier de la clé
|
||||
config.server.tls_min_version=Version minimale de TLS
|
||||
config.server.unix_socket_permission=Autorisation du socket Unix
|
||||
config.server.local_root_url=URL racine locale
|
||||
config.server.offline_mode=Mode hors connexion
|
||||
config.server.disable_router_log=Désactiver la journalisation du routeur
|
||||
config.server.enable_gzip=Activer Gzip
|
||||
config.server.app_data_path=Chemin des données de l'application
|
||||
config.server.load_assets_from_disk=Charger les ressources depuis le disque
|
||||
config.server.landing_url=URL de destination (collecte)
|
||||
|
||||
config.ssh_config=Configuration SSH
|
||||
config.ssh_enabled=Activé
|
||||
config.ssh_start_builtin_server=Démarrer le serveur intégré
|
||||
config.ssh_domain=Domaine
|
||||
config.ssh_port=Port
|
||||
config.ssh_listen_port=Port d'écoute
|
||||
config.ssh_root_path=Emplacement racine
|
||||
config.ssh_key_test_path=Chemin de test des clés
|
||||
config.ssh_keygen_path=Chemin vers le générateur de clefs ("ssh-keygen")
|
||||
config.ssh_minimum_key_size_check=Vérification de la longueur de clé minimale
|
||||
config.ssh_minimum_key_sizes=Tailles de clé minimales
|
||||
config.ssh.enabled=Activé
|
||||
config.ssh.domain=Domaine exposé
|
||||
config.ssh.port=Port exposé
|
||||
config.ssh.root_path=Emplacement racine
|
||||
config.ssh.keygen_path=Chemin de la clé
|
||||
config.ssh.key_test_path=Chemin de test de la clé
|
||||
config.ssh.minimum_key_size_check=Vérification de la taille minimale des clés
|
||||
config.ssh.minimum_key_sizes=Taille minimale des clés
|
||||
config.ssh.rewrite_authorized_keys_at_start=Réécriture de "authorized_keys" au démarrage
|
||||
config.ssh.start_builtin_server=Démarrer le serveur intégré
|
||||
config.ssh.listen_host=Hôte en écoute
|
||||
config.ssh.listen_port=Port d'écoute
|
||||
config.ssh.server_ciphers=Suites de chiffrement
|
||||
config.ssh.server_macs=Adresses MAC du serveur
|
||||
config.ssh.server_algorithms=Algorithmes de serveur
|
||||
|
||||
config.repo_config=Configuration du dépôt
|
||||
config.repo_root_path=Emplacement des Dépôts
|
||||
config.script_type=Type de Script
|
||||
config.repo_force_private=Privé forcé
|
||||
config.max_creation_limit=Limite de création maximale
|
||||
config.preferred_licenses=Licences préférées
|
||||
config.disable_http_git=Désactiver Git HTTP
|
||||
config.enable_local_path_migration=Activer la migration de chemin locale
|
||||
config.commits_fetch_concurrency=Concurrence des récupérations de commits
|
||||
config.repo.root_path=Emplacement racine
|
||||
config.repo.script_type=Type de script
|
||||
config.repo.ansi_chatset=Jeu de caractères ANSI
|
||||
config.repo.force_private=Forcer en tant que privé
|
||||
config.repo.max_creation_limit=Limite de création
|
||||
config.repo.preferred_licenses=Licences préférées
|
||||
config.repo.disable_http_git=Désactiver Git HTTP
|
||||
config.repo.enable_local_path_migration=Activer la migration de chemin locale
|
||||
config.repo.enable_raw_file_render_mode=Activer le mode de rendu des fichiers de manière brute
|
||||
config.repo.commits_fetch_concurrency=Récupération simultanée des commits
|
||||
config.repo.editor.line_wrap_extensions=Extensions de retour à la ligne de l'éditeur
|
||||
config.repo.editor.previewable_file_modes=Modes de prévisualisation des fichiers de l'éditeur
|
||||
config.repo.upload.enabled=Publication activée
|
||||
config.repo.upload.temp_path=Chemin du téléchargement temporaire
|
||||
config.repo.upload.allowed_types=Types de publications autorisées
|
||||
config.repo.upload.file_max_size=Taille maximale des fichiers envoyés
|
||||
config.repo.upload.max_files=Limite sur les fichiers publiés
|
||||
|
||||
config.db_config=Configuration de la Base de Données
|
||||
config.db_type=Type
|
||||
config.db_host=Hôte
|
||||
config.db_name=Nom
|
||||
config.db_user=Utilisateur
|
||||
config.db_ssl_mode=Mode SSL
|
||||
config.db_ssl_mode_helper=("postgres" uniquement)
|
||||
config.db_path=Emplacement
|
||||
config.db_path_helper=(pour « sqlite3 » et « TIDB »)
|
||||
config.db.type=Type
|
||||
config.db.host=Serveur hôte
|
||||
config.db.name=Nom
|
||||
config.db.schema=Schéma
|
||||
config.db.schema_helper=(pour "postgres" uniquement)
|
||||
config.db.user=Utilisateur
|
||||
config.db.ssl_mode=Mode SSL
|
||||
config.db.ssl_mode_helper=("postgres" uniquement)
|
||||
config.db.path=Chemin
|
||||
config.db.path_helper=(pour "sqlite3" seulement)
|
||||
config.db.max_open_conns=Nombre maximum de connexions ouvertes
|
||||
config.db.max_idle_conns=Nombre maximum de connexions inactives
|
||||
|
||||
config.service_config=Configuration du Service
|
||||
config.register_email_confirm=Nécessite une confirmation par e-mail
|
||||
config.disable_register=Désactiver les inscriptions
|
||||
config.show_registration_button=Afficher le bouton d'enregistrement
|
||||
config.require_sign_in_view=Connexion obligatoire pour visualiser
|
||||
config.mail_notify=Notifier par mail
|
||||
config.disable_key_size_check=Désactiver la vérification de la taille de clé minimale
|
||||
config.enable_captcha=Activez le Captcha
|
||||
config.active_code_lives=Limites de Code Actif
|
||||
config.reset_password_code_lives=Réinitialiser le Mot De Passe des Limites de Code
|
||||
config.security_config=Configuration de sécurité
|
||||
config.security.login_remember_days=Rester connecté plusieurs jours
|
||||
config.security.cookie_remember_name=Mémoriser le cookie
|
||||
config.security.cookie_username=Cookie du nom d'utilisateur
|
||||
config.security.cookie_secure=Activer les cookies sécurisés
|
||||
config.security.reverse_proxy_auth_user=Inverser l'en-tête d'authentification du proxy
|
||||
config.security.enable_login_status_cookie=Activer le cookie d'état de connexion
|
||||
config.security.login_status_cookie_name=Cookie de statut de connexion
|
||||
config.security.local_network_allowlist=liste des autorisations de réseau local
|
||||
|
||||
config.webhook_config=Configuration Webhook
|
||||
config.queue_length=Longueur de la file d'attente
|
||||
config.deliver_timeout=Expiration d'Envoi
|
||||
config.skip_tls_verify=Ne pas vérifier TLS
|
||||
config.email_config=Configuration de l’e-mail
|
||||
config.email.enabled=Activé
|
||||
config.email.subject_prefix=Préfixe du sujet
|
||||
config.email.host=Hôte
|
||||
config.email.from=De:
|
||||
config.email.user=Utilisateur
|
||||
config.email.disable_helo=Désactiver HELO
|
||||
config.email.helo_hostname=Nom d’hôte HELO
|
||||
config.email.skip_verify=Ignorer la vérification du certificat
|
||||
config.email.use_certificate=Utiliser un certificat personnalisé
|
||||
config.email.cert_file=Fichier de certificat
|
||||
config.email.key_file=Fichier de la clé
|
||||
config.email.use_plain_text=Utiliser le texte brut
|
||||
config.email.add_plain_text_alt=Ajouter une alternative au texte brut
|
||||
config.email.send_test_mail=Envoyer un e-mail de test
|
||||
config.email.test_mail_failed=Impossible d'envoyer un e-mail de test à '%s' :
|
||||
config.email.test_mail_sent=Un e-mail de test à été envoyé à '%s'.
|
||||
|
||||
config.mailer_config=Configuration du service de mail
|
||||
config.mailer_enabled=Activé
|
||||
config.mailer_disable_helo=Désactiver HELO
|
||||
config.mailer_name=Nom
|
||||
config.mailer_host=Hôte
|
||||
config.mailer_user=Utilisateur
|
||||
config.send_test_mail=Envoyer courriel de Test
|
||||
config.test_mail_failed=Impossible d'envoyer un e-mail de test à '%s': %v
|
||||
config.test_mail_sent=Un e-mail de test à été envoyé à '%s'.
|
||||
config.auth_config=Configuration de l'authentification
|
||||
config.auth_custom_logout_url=Custom logout URL
|
||||
config.auth.activate_code_lives=Activer les vies sur les codes
|
||||
config.auth.reset_password_code_lives=Vies sur les codes de réinitialisation des mots de passes
|
||||
config.auth.require_email_confirm=Nécessite une confirmation par e-mail
|
||||
config.auth.require_sign_in_view=Connexion obligatoire pour visualiser
|
||||
config.auth.disable_registration=Désactiver les inscriptions
|
||||
config.auth.enable_registration_captcha=Activer le CAPTCHA à l'inscription
|
||||
config.auth.enable_reverse_proxy_authentication=Activer l'authentification par proxy inversé
|
||||
config.auth.enable_reverse_proxy_auto_registration=Activer l'enregistrement automatique du proxy inversé
|
||||
config.auth.reverse_proxy_authentication_header=En-tête d'authentification du proxy inversé
|
||||
|
||||
config.oauth_config=Configuration OAuth
|
||||
config.oauth_enabled=Activé
|
||||
|
||||
config.cache_config=Configuration du Cache
|
||||
config.cache_adapter=Adaptateur du Cache
|
||||
config.cache_interval=Intervales du Cache
|
||||
config.cache_conn=Liaison du Cache
|
||||
config.user_config=Configuration de l'utilisateur
|
||||
config.user.enable_email_notify=Activer les notifications par e-mail
|
||||
|
||||
config.session_config=Configuration de session
|
||||
config.session_provider=Fournisseur de session
|
||||
config.provider_config=Configuration du fournisseur
|
||||
config.cookie_name=Nom du cookie
|
||||
config.enable_set_cookie=Activer les cookies
|
||||
config.gc_interval_time=Intervals GC
|
||||
config.session_life_time=Durée des sessions
|
||||
config.https_only=HTTPS uniquement
|
||||
config.cookie_life_time=Expiration du cookie
|
||||
config.session.provider=Fournisseur
|
||||
config.session.provider_config=Configuration du fournisseur
|
||||
config.session.cookie_name=Cookie
|
||||
config.session.https_only=HTTPS uniquement
|
||||
config.session.gc_interval=Intervalle du GC
|
||||
config.session.max_life_time=Durée de vie maximale
|
||||
config.session.csrf_cookie_name=Cookie CSRF
|
||||
|
||||
config.cache_config=Configuration du Cache
|
||||
config.cache.adapter=Adaptateur
|
||||
config.cache.interval=Intervalle du GC
|
||||
config.cache.host=Serveur hôte
|
||||
|
||||
config.http_config=Configuration HTTP
|
||||
config.http.access_control_allow_origin=Autoriser le partage d’accès avec l’origine
|
||||
|
||||
config.attachment_config=Configuration des pièces jointes
|
||||
config.attachment.enabled=Activé
|
||||
config.attachment.path=Chemin
|
||||
config.attachment.allowed_types=Types autorisés
|
||||
config.attachment.max_size=Taille limite
|
||||
config.attachment.max_files=Limite de fichiers
|
||||
|
||||
config.release_config=Configuration de la version
|
||||
config.release.attachment.enabled=Pièces jointes activées
|
||||
config.release.attachment.allowed_types=Types de pièces jointes autorisés
|
||||
config.release.attachment.max_size=Limite de taille des pièces jointes
|
||||
config.release.attachment.max_files=Limite du nombre de fichiers joints
|
||||
|
||||
config.picture_config=Configuration d'Image
|
||||
config.picture_service=Service d'Imagerie
|
||||
config.disable_gravatar=Désactiver Gravatar
|
||||
config.enable_federated_avatar=Activer les avatars unifiés
|
||||
config.picture.avatar_upload_path=Chemin de téléchargement de l'avatar de l'utilisateur
|
||||
config.picture.repo_avatar_upload_path=Chemin de téléchargement de l'avatar du référentiel de versions
|
||||
config.picture.gravatar_source=Origine Gravatar
|
||||
config.picture.disable_gravatar=Désactiver Gravatar
|
||||
config.picture.enable_federated_avatar=Activer les avatars unifiés
|
||||
|
||||
config.mirror_config=Configuration de mise en miroir
|
||||
config.mirror.default_interval=Intervalle par défaut
|
||||
|
||||
config.webhook_config=Configuration Webhook
|
||||
config.webhook.types=Types
|
||||
config.webhook.deliver_timeout=Délai de livraison
|
||||
config.webhook.skip_tls_verify=Ignorer la vérification TLS
|
||||
|
||||
config.git_config=Configuration de Git
|
||||
config.git_disable_diff_highlight=Désactiver la surbrillance syntaxique de Diff
|
||||
config.git_max_diff_lines=Lignes de Diff Max (pour un seul fichier)
|
||||
config.git_max_diff_line_characters=Nombre max de caractères de Diff (pour une seule ligne)
|
||||
config.git_max_diff_files=Nombre max de fichiers de Diff (à afficher)
|
||||
config.git_gc_args=Arguments de GC
|
||||
config.git_migrate_timeout=Délai imparti pour une migration
|
||||
config.git_mirror_timeout=Délai imparti pour mettre à jour le miroir
|
||||
config.git_clone_timeout=Délai imparti pour l'opération "Clone"
|
||||
config.git_pull_timeout=Délai imparti pour l'opération "Pull"
|
||||
config.git_gc_timeout=Délai imparti pour l'opération "GC"
|
||||
config.git.disable_diff_highlight=Désactiver la coloration syntaxique des différences
|
||||
config.git.max_diff_lines=Limite de lignes différentes (pour un seul fichier)
|
||||
config.git.max_diff_line_characters=Limite de caractères différents (pour une seule ligne)
|
||||
config.git.max_diff_files=Limite de fichiers différents (pour une seule différence)
|
||||
config.git.gc_args=Arguments GC
|
||||
config.git.migrate_timeout=Délai de migration dépassé
|
||||
config.git.mirror_timeout=Délai de récupération du miroir dépassé
|
||||
config.git.clone_timeout=Délai de clonage dépassé
|
||||
config.git.pull_timeout=Délai de récupération des sources dépassé
|
||||
config.git.gc_timeout=GB délai expiré
|
||||
|
||||
config.lfs_config=Configuration LFS
|
||||
config.lfs.storage=Espace de stockage
|
||||
config.lfs.objects_path=Chemin d'accès des objets
|
||||
|
||||
config.log_config=Configuration du Journal
|
||||
config.log_file_root_path=Emplacement Racine du Fichier Journal
|
||||
config.log_mode=Mode
|
||||
config.log_options=Options
|
||||
|
||||
@@ -1227,7 +1373,7 @@ notices.actions=Actions
|
||||
notices.select_all=Tout Sélectionner
|
||||
notices.deselect_all=Tous déselectionner
|
||||
notices.inverse_selection=Inverser la sélection
|
||||
notices.delete_selected=Supprimé les éléments sélectionnés
|
||||
notices.delete_selected=Supprimer les éléments sélectionnés
|
||||
notices.delete_all=Supprimer toutes les notifications
|
||||
notices.type=Type
|
||||
notices.type_1=Dépôt
|
||||
@@ -1237,7 +1383,6 @@ notices.delete_success=Notifications système supprimées avec succès.
|
||||
|
||||
[action]
|
||||
create_repo=a créé le dépôt <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=a rebaptisé le dépôt de <code>%[1]s</code> vers <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=a commité dans <a href="%[1]s/src/%[2]s">%[3]s</a> sur <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Comparer ces %d commits
|
||||
@@ -1247,13 +1392,17 @@ close_issue=`tickets clos <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
reopen_issue=`tickets ré-ouverts <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
comment_issue=`a commenté le problème <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
create_pull_request=`pull request créée le <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
close_pull_request=`pull request fermé <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
close_pull_request=`pull request fermée <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
reopen_pull_request=`pull request ré-ouverte <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`pull request fusionné le <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
create_branch=nouvelle branche créée <a href="%[1]s/src/%[2]s">%[3]s</a> sur <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=branche supprimée <code>%[2]s</code> sur <a href="%[1]s">%[3]s</a>
|
||||
push_tag=a soumis le tag <a href="%s/src/%s">%[2]s</a> sur <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=étiquette supprimée <code>%[2]s</code> sur <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=a créé sa branche du dépôt vers <a href="%s">%s</a>
|
||||
mirror_sync_push=a commité dans <a href="%[1]s/src/%[2]s">%[3]s</a> sur <a href="%[1]s">%[4]s</a>
|
||||
mirror_sync_create=a synchronisé la nouvelle référence <a href="%s/src/%s">%[2]s</a> vers <a href="%[1]s">%[3]s</a> depuis le miroir
|
||||
mirror_sync_delete=Référence synchronisés et supprimé <code>%[2]s</code> sur <a href="%[1]s">%[3]s</a>
|
||||
|
||||
[tool]
|
||||
ago=il y a
|
||||
@@ -1275,6 +1424,7 @@ months=%[2]s %[1]d mois
|
||||
years=%[2]s %[1]d ans
|
||||
raw_seconds=secondes
|
||||
raw_minutes=minutes
|
||||
raw_hours=heures
|
||||
|
||||
[dropzone]
|
||||
default_message=Déposez les fichiers ici ou cliquez pour télécharger.
|
||||
|
||||
@@ -9,7 +9,6 @@ sign_out=Cerrar sesión
|
||||
sign_up=Rexistro
|
||||
register=Rexistro
|
||||
website=Páxina web
|
||||
version=Versión
|
||||
page=Páxina
|
||||
template=Modelo
|
||||
language=Idioma
|
||||
@@ -44,22 +43,27 @@ issues=Incidencias
|
||||
|
||||
cancel=Cancelar
|
||||
|
||||
[status]
|
||||
page_not_found=Page Not Found
|
||||
internal_server_error=Internal Server Error
|
||||
|
||||
[install]
|
||||
install=Instalación
|
||||
title=Pasos da instalación por primeira vez
|
||||
docker_helper=Se está executando Gogs usando Docker, por favor lea <a target="_blank" href="%s"> estas pautas</a> antes de cambiar nada nesta páxina!
|
||||
requite_db_desc=Gogs requires MySQL, PostgreSQL, SQLite3, MSSQL or TiDB.
|
||||
requite_db_desc=Gogs requires MySQL, PostgreSQL, SQLite3 or TiDB (via MySQL protocol).
|
||||
db_title=Configuración de base de datos
|
||||
db_type=Tipo de base de datos
|
||||
host=Host
|
||||
user=Persoa usuaria
|
||||
password=Contrasinal
|
||||
db_name=Nome da base de datos
|
||||
db_schema=Schema
|
||||
db_helper=Por favor, empregue o motor INNODB coa configuración de caracteres utf8_general_ci para MySQL.
|
||||
ssl_mode=Modo SSL
|
||||
path=Ruta
|
||||
sqlite_helper=The file path of SQLite3 database. <br>Please use absolute path when you start as service.
|
||||
err_empty_db_path=SQLite3 database path cannot be empty.
|
||||
sqlite_helper=A ruta do ficheiro da base de datos SQLite3. <br> Utilice a ruta absoluta cando arrique o servicio.
|
||||
err_empty_db_path=A ruta da base de datos SQLite3 non pode estar baleira.
|
||||
no_admin_and_disable_registration=Non pode deshabilitar o rexistro sen crear unha conta de administrador.
|
||||
err_empty_admin_password=O contrasinal de administrador non pode estar baleiro.
|
||||
|
||||
@@ -74,16 +78,17 @@ domain=Dominio
|
||||
domain_helper=Isto afecta ás URLs para clonar por SSH.
|
||||
ssh_port=Porto SSH
|
||||
ssh_port_helper=Número de porto do seu servidor SSH, déixeo en branco para desactivar SSH.
|
||||
use_builtin_ssh_server=Use Builtin SSH Server
|
||||
use_builtin_ssh_server_popup=Start builtin SSH server for Git operations to distinguish from system SSH daemon.
|
||||
use_builtin_ssh_server=Utilizar Builin en Sevidor SSH
|
||||
use_builtin_ssh_server_popup=Inicia o servidor SSH integrado para que as operacións de Git sexan distintas do demonio SSH do sistema.
|
||||
http_port=Porto HTTP
|
||||
http_port_helper=Porto no que escoitará a aplicación.
|
||||
app_url=URL da aplicación
|
||||
app_url_helper=Isto afecta ás URLs para clonar por HTTP/HTTPS e a algúns correos electrónicos.
|
||||
log_root_path=Ruta do rexistro
|
||||
log_root_path_helper=Directorio onde almacenar os rexistros.
|
||||
enable_console_mode=Enable Console Mode
|
||||
enable_console_mode_popup=In addition to file mode, also print logs to console.
|
||||
enable_console_mode=Habilitar Modo Consola
|
||||
enable_console_mode_popup=Ademáis do modo de ficheiro, tamén imprime os rexistros para a consola.
|
||||
default_branch=Default Branch
|
||||
|
||||
optional_title=Configuración opcional
|
||||
email_title=Configuración do servizo de correo
|
||||
@@ -119,8 +124,11 @@ sqlite3_not_available=A túa versión non soporta SQLite3, por favor, descarga o
|
||||
invalid_db_setting=A configuración da base de datos non é correcta: %v
|
||||
invalid_repo_path=A ruta da raíz do repositorio é inválida: %v
|
||||
run_user_not_match=A persoa usuaria que está executando a aplicación non é a persoa usuaria actual: %s -> %s
|
||||
smtp_host_missing_port=Falta o porto do Host SMTP
|
||||
|
||||
invalid_smtp_from=O campo From do SMTP non é valido: %v
|
||||
save_config_failed=Erro ao gardar a configuración: %v
|
||||
init_failed=Failed to initialize application: %v
|
||||
invalid_admin_setting=A configuración da conta de administración é inválida: %v
|
||||
install_success=Benvido/a! Estamos encantados de que escolleses Gogs, divírtete e cóidate.
|
||||
invalid_log_root_path=A ruta para os rexistros é inválida: %v
|
||||
@@ -150,6 +158,8 @@ register_hepler_msg=Xa tes unha conta? Inicia sesión!
|
||||
social_register_hepler_msg=Xa tes unha conta? Enlázaa!
|
||||
disable_register_prompt=Sentímolo, o rexistro está deshabilitado. Por favor, contacta co administrador do sitio.
|
||||
disable_register_mail=Sentímolo. Os correos de confirmación de rexistro están deshabilitados.
|
||||
auth_source=Fonte de Autenticación
|
||||
local=Configuración rexional
|
||||
remember_me=Recórdame
|
||||
forgot_password=Esquecín o meu contrasinal
|
||||
forget_password=Esqueciches o teu contrasinal?
|
||||
@@ -168,6 +178,14 @@ reset_password_helper=Prema aquí para restablecer o seu contrasinal
|
||||
password_too_short=A lonxitude do contrasinal non pode ser menor de 6.
|
||||
non_local_account=Contas que non son locais non poden cambiar os contrasinais a través de Gogs.
|
||||
|
||||
login_two_factor=Autenticación en dous pasos
|
||||
login_two_factor_passcode=Código de Autenticación
|
||||
login_two_factor_enter_recovery_code=Introduza o código de recuperación da verificación en dous pasos
|
||||
login_two_factor_recovery=Recuperación en dous pasos
|
||||
login_two_factor_recovery_code=Codigo de Recuperación
|
||||
login_two_factor_enter_passcode=Introduza o código de acceso en dous pasos
|
||||
login_two_factor_invalid_recovery_code=O código de recuperación foi usado ou non é válido.
|
||||
|
||||
[mail]
|
||||
activate_account=Por favor, activa a túa conta
|
||||
activate_email=Verifica o teu correo electrónico
|
||||
@@ -203,7 +221,7 @@ Content=Contido
|
||||
require_error=` non pode estar baleiro.`
|
||||
alpha_dash_error=` os caracteres deben ser alfanuméricos ou dash(-_).`
|
||||
alpha_dash_dot_error=` debe ser un carácter alfanumérivo válido, un guión alto ou baixo (-_) ou un signo de puntuación.`
|
||||
alpha_dash_dot_slash_error=` must be valid alpha or numeric or dash(-_) or dot characters or slashes.`
|
||||
alpha_dash_dot_slash_error=` debe ser un carácter válido : numérico, alfabético, guión(-_) puntos ou barras.`
|
||||
size_error=` debe ser de tamaño %s.`
|
||||
min_size_error=` debe conter polo menos %s caracteres.`
|
||||
max_size_error=` debe conter como máximo %s caracteres.`
|
||||
@@ -220,6 +238,7 @@ org_name_been_taken=Xa existe unha organización con este nome.
|
||||
team_name_been_taken=Xa existe un equipo con este nome.
|
||||
email_been_used=Este enderezo de correo electrónico xa está en uso.
|
||||
username_password_incorrect=Nome de usuario ou contrasinal incorrectos.
|
||||
auth_source_mismatch=A fonte de autenticación seleccionada non está asociada co usuario.
|
||||
enterred_invalid_repo_name=Por favor, asegúrate de que introduciches correctamente o nome do repositorio.
|
||||
enterred_invalid_owner_name=Por favor, asegúrate de que introduciches correctamente o nome do propietario.
|
||||
enterred_invalid_password=Por favor, asegúrate de que introduciches correctamente o teu contrasinal.
|
||||
@@ -247,15 +266,15 @@ following=Seguindo
|
||||
follow=Seguir
|
||||
unfollow=Deixar de seguir
|
||||
|
||||
form.name_reserved=O usuario '%s' está reservado.
|
||||
form.name_pattern_not_allowed=O patrón de nome de usuario '%s' non está permitido.
|
||||
form.name_not_allowed=User name or pattern %q is not allowed.
|
||||
|
||||
[settings]
|
||||
profile=Perfil
|
||||
password=Contrasinal
|
||||
avatar=Avatar
|
||||
ssh_keys=Claves SSH
|
||||
repos=Repositories
|
||||
security=Seguridade
|
||||
repos=Repositorios
|
||||
orgs=Organizacións
|
||||
applications=Aplicacións
|
||||
delete=Eliminar conta
|
||||
@@ -299,6 +318,7 @@ delete_email=Eliminar
|
||||
email_deletion=Eliminar correo electrónico
|
||||
email_deletion_desc=Ao eliminar este enderezo de correo electrónico eliminarase toda a información asociada a esta. Desexas continuar?
|
||||
email_deletion_success=O correo electrónico foi eliminado correctamente!
|
||||
email_deletion_primary=Cannot delete primary email address.
|
||||
add_new_email=Engadir novo enderezo de correo electrónico
|
||||
add_email=Engadir correo electrónico
|
||||
add_email_confirmation_sent=Un novo correo de confirmación foi enviado a '%s'. Por favor, comproba a túa bandexa de entrada nas próximas %d horas para completar o proceso.
|
||||
@@ -324,14 +344,36 @@ no_activity=Non hai actividade recente
|
||||
key_state_desc=Esta clave foi usada nos últimos 7 días
|
||||
token_state_desc=Token usado nos últimos 7 días
|
||||
|
||||
manage_social=Xestionar redes sociais asociadas
|
||||
social_desc=Esta é unha lista das redes sociais asociadas. Elimina calquera vínculo que non recoñezas.
|
||||
unbind=Desvincular
|
||||
unbind_success=A rede social foi desvinculada.
|
||||
two_factor=Autenticación en Dous Pasos
|
||||
two_factor_status=Estado:
|
||||
two_factor_on=Si
|
||||
two_factor_off=Non
|
||||
two_factor_enable=Activar
|
||||
two_factor_disable=Desactivar
|
||||
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
|
||||
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
|
||||
two_factor_enable_title=Enable Two-factor Authentication
|
||||
two_factor_scan_qr=Please use your authentication application to scan the image:
|
||||
two_factor_or_enter_secret=Or enter the secret:
|
||||
two_factor_then_enter_passcode=A continuación, introduza o código:
|
||||
two_factor_verify=Verificar
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
two_factor_recovery_codes_desc=Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
|
||||
two_factor_regenerate_recovery_codes=Rexenerar Códigos de Recuperación
|
||||
two_factor_regenerate_recovery_codes_error=Regenerate recovery codes failed: %v
|
||||
two_factor_regenerate_recovery_codes_success=New recovery codes has been generated successfully!
|
||||
two_factor_disable_title=Desactivar a verificación en dous pasos
|
||||
two_factor_disable_desc=Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
|
||||
two_factor_disable_success=Two-factor authentication has disabled successfully!
|
||||
|
||||
manage_access_token=Xestionar os tokens de acceso persoais
|
||||
generate_new_token=Xerar novo token
|
||||
tokens_desc=Tokens usados para acceder ao API de Gogs.
|
||||
access_token_tips=The personal access token may be used as either username or password. It is recommended to use the "x-access-token" as the username and the personal access token as the password for Git applications.
|
||||
new_token_desc=Dende agora, todos os tokens terán acceso completo á túa conta.
|
||||
token_name=Nome do token
|
||||
generate_token=Xerar token
|
||||
@@ -340,13 +382,14 @@ delete_token=Eliminar
|
||||
access_token_deletion=Borrado de Token de Acceso Persoal
|
||||
access_token_deletion_desc=Se elimina este token de acceso persoal a aplicación asociada perderá o permiso de acceso. Desexa continuar?
|
||||
delete_token_success=O token de acceso persoal foi eliminado con éxito! Non esqueza actualizar tamén as aplicacións asociadas.
|
||||
token_name_exists=Token with same name already exists.
|
||||
|
||||
orgs.none=Non es membro de nengunha organización.
|
||||
orgs.leave_title=Deixar unha organización
|
||||
orgs.leave_desc=Deixarás de ter aceso ao tódolos repositorios e equipos despois de deixar a organización. Desexas abandonala?
|
||||
|
||||
repos.leave=Leave
|
||||
repos.leave_title=Leave repository
|
||||
repos.leave=Abandoar
|
||||
repos.leave_title=Deixar repositorio
|
||||
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
|
||||
repos.leave_success=You have left repository '%s' successfully!
|
||||
|
||||
@@ -361,7 +404,9 @@ owner=Propietario
|
||||
repo_name=Nome do repositorio
|
||||
repo_name_helper=Os grandes nomes de repositorios son curtos, memorables e <strong>únicos</strong>.
|
||||
visibility=Visibilidade
|
||||
unlisted=Unlisted
|
||||
visiblity_helper=Este repositorio é <span class="ui red text">privado</span>
|
||||
unlisted_helper=This repository is <span class="ui red text">Unlisted</span>
|
||||
visiblity_helper_forced=O administrador web obrigou a todos os repositorios novos a ser <span class="ui red text"> privados</span>
|
||||
visiblity_fork_helper=(Este cambio afectará a todos os forks)
|
||||
clone_helper=Necesitas axuda co clone? Consulta a <a target="_blank" href="%s">Axuda</a>!
|
||||
@@ -387,10 +432,11 @@ mirror_last_synced=Sincronizado por última vez
|
||||
watchers=Seguidores
|
||||
stargazers=Fans
|
||||
forks=Forks
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=El propietario ha alcanzado el límite máximo de %d repositorios creados.=O propietario acadou o límite máximo de %d repositorios creados.
|
||||
form.name_reserved=El nombre del repositorio '%s' está reservado.=O nome do repositorio '%s' está reservado.
|
||||
form.name_pattern_not_allowed=El patrón del nombre del repositorio '%s' no está permitido.=O patrón do nome do repositorio '%s' non está permitido.
|
||||
form.name_not_allowed=Repository name or pattern %q is not allowed.
|
||||
|
||||
need_auth=Requiere autorización=Require autorización
|
||||
migrate_type=Tipo de migración
|
||||
@@ -401,6 +447,7 @@ migrate.clone_address_desc=Pode ser unha URL HTTP/HTTPS/GIT.
|
||||
migrate.clone_address_desc_import_local=Tamén podes migrar un repositorio mediante a ruta do servidor local.
|
||||
migrate.permission_denied=Non che está permitido importar repositorios locais.
|
||||
migrate.invalid_local_path=Rutal local inválida, non existe ou non é un directorio.
|
||||
migrate.clone_address_resolved_to_blocked_local_address=Clone address resolved to a local network address that is implicitly blocked.
|
||||
migrate.failed=Migración fallida: %v
|
||||
|
||||
mirror_from=réplica de
|
||||
@@ -448,6 +495,8 @@ branches.stale_branches=Stale Branches
|
||||
branches.all=All Branches
|
||||
branches.updated_by=Updated %[1]s by %[2]s
|
||||
branches.change_default_branch=Change Default Branch
|
||||
branches.default_deletion_not_allowed=Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed=Cannot delete a protected branch.
|
||||
|
||||
editor.new_file=Novo arquivo
|
||||
editor.upload_file=Subir arquivo
|
||||
@@ -484,6 +533,7 @@ editor.file_changed_while_editing=O contido do arquivo cambiou desde que comezac
|
||||
editor.file_already_exists=Un arquivo co nome '%s' xa existe no repositorio.
|
||||
editor.no_changes_to_show=Non hai cambios que mostrar.
|
||||
editor.fail_to_update_file=Fallou o actualizar/crear o arquivo '%s' co erro: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Engadir subdirectorio...
|
||||
editor.unable_to_upload_files=Fallou ao subir arquivos a '%s' co erro: %v
|
||||
editor.upload_files_to_dir=Subir arquivos a '%s'
|
||||
@@ -586,6 +636,7 @@ pulls.compare_compare=comparar con
|
||||
pulls.filter_branch=Filtrar rama
|
||||
pulls.no_results=Sen resultados.
|
||||
pulls.nothing_to_compare=Nada que comparar. As dúas ramas coinciden.
|
||||
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
|
||||
pulls.has_pull_request=`Xa existe un pull request entre estas dúas ramas: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Crear Pull Request
|
||||
pulls.title_desc=desexa fusionar %[1]d achegas de <code>%[2]s</code> en <code>%[3]s</code>
|
||||
@@ -601,6 +652,9 @@ pulls.is_checking=Estase procedendo á busca de conflitos, por favor, actualice
|
||||
pulls.can_auto_merge_desc=Este Pull Request pode ser fusionado automaticamente.
|
||||
pulls.cannot_auto_merge_desc=Este Pull Request non pode ser fusionado automaticamente porque hai conflitos.
|
||||
pulls.cannot_auto_merge_helper=Por favor, fusiona manualmente para resolver os conflitos.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Fusionar Pull Request
|
||||
pulls.open_unmerged_pull_exists=`Vostede non pode realizar a operación de reapertura porque nestes momentos existe unha solicitude de pull request (#%d) para o mesmo repositorio coa mesma información que se encontra á espera de aprobación`
|
||||
pulls.delete_branch=Eliminar branch
|
||||
@@ -705,7 +759,9 @@ settings.tracker_issue_style=Estilo de etiquetaxe do tracker externo de incidenc
|
||||
settings.tracker_issue_style.numeric=Numérico
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumérico
|
||||
settings.tracker_url_format_desc=Podes usar os modelos <code>{user} {repo} {index}</code> para o nome de usuario, nome do repositorio e índice da incidencia.
|
||||
settings.pulls_desc=Habilitar Pull Requests para aceptar contribucións públicas
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Zona de perigo
|
||||
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
|
||||
settings.new_owner_has_same_repo=O novo propietario ten un repositorio co mesmo nome.
|
||||
@@ -726,7 +782,7 @@ settings.wiki_deletion_success=Os datos da wiki do repositorio foron borrados co
|
||||
settings.delete=Eliminar este repositorio
|
||||
settings.delete_desc=Unha vez que eliminaches un repositorio, non hai volta atrás. Por favor, asegúrate de que é o que queres.
|
||||
settings.delete_notices_1=- Esta operación <strong>NON SE PODE</strong> reverter.
|
||||
settings.delete_notices_2=- Esta operación eliminará de maneira permanente todo o contido deste repositorio, incluíndo os datos de git, as incidencias, os comentarios e os permisos de acceso dos colaboradores.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- Todos os forks converteranse en independentes tras o borrado.
|
||||
settings.deletion_success=O repositorio foi eliminado satisfactoriamente!
|
||||
settings.update_settings_success=As opcións do repositorio actualizáronse correctamente.
|
||||
@@ -742,8 +798,10 @@ settings.collaborator_deletion_desc=Este usuario non poderá colaborar neste rep
|
||||
settings.remove_collaborator_success=O colaborador foi eliminado.
|
||||
settings.search_user_placeholder=Buscar usuario...
|
||||
settings.org_not_allowed_to_be_collaborator=As organizacións non teñen permitido ser engadidas como colaboradores.
|
||||
settings.add_webhook=Engadir Webhook
|
||||
settings.hooks_desc=Os Webhooks permiten a servizos externos recibir notificacións cando sucedan certos eventos en Gogs. Cando sucedan os eventos especificados, enviaremos unha petición POST a cada unha das URLs indicadas. Para obter máis información, consulta a nosa <a target="_blank" href="%s">Guía de Webhooks</a>.
|
||||
settings.webhooks.add_new=Add a new webhook:
|
||||
settings.webhooks.choose_a_type=Choose a type...
|
||||
settings.add_webhook=Engadir Webhook
|
||||
settings.webhook_deletion=Eliminar Webhook
|
||||
settings.webhook_deletion_desc=Ao borrar este webhook eliminarase a súa información e todo o seu historial. Desexa continuar?
|
||||
settings.webhook_deletion_success=Webhook eliminado con éxito!
|
||||
@@ -757,6 +815,8 @@ settings.webhook.response=Resposta
|
||||
settings.webhook.headers=Encabezado
|
||||
settings.webhook.payload=Payload
|
||||
settings.webhook.body=Corpo da mensaxe
|
||||
settings.webhook.err_cannot_parse_payload_url=Cannot parse payload URL: %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address=Payload URL resolved to a local network address that is implicitly blocked.
|
||||
settings.githooks_desc=Os Git Hooks son unha funcionalidade do propio Git, podes editar os ficheiros dos hooks soportados na seguinte lista para aplicar operacións personalizadas.
|
||||
settings.githook_edit_desc=Se o hook non está activo, mostrarase contido de exemplo. Deixar o contido baleiro deshabilitará este hook.
|
||||
settings.githook_name=Nome do Hook
|
||||
@@ -784,10 +844,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push a un repositorio
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Pull Request
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Activo
|
||||
@@ -800,6 +860,7 @@ settings.recent_deliveries=Envíos recentes
|
||||
settings.hook_type=Tipo de Hook
|
||||
settings.add_slack_hook_desc=Engade integración con <a href="%s">Slack</a> ao teu repositorio.
|
||||
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.slack_token=Token
|
||||
settings.slack_domain=Dominio
|
||||
settings.slack_channel=Canle
|
||||
@@ -816,6 +877,8 @@ settings.add_key_success=A nova clave de despregamento '%s' foi creada con éxit
|
||||
settings.deploy_key_deletion=Eliminar clave de despregamento
|
||||
settings.deploy_key_deletion_desc=Ao eliminar esta clave de despregamento perderase o permiso de acceso a este repositorio coa dita clave. Desexas continuar?
|
||||
settings.deploy_key_deletion_success=Clave de despregamento eliminada con éxito!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Explorar o código
|
||||
diff.parent=pai
|
||||
@@ -880,9 +943,8 @@ team_name_helper=Utiliza este nome para mencionar este equipo nas conversas.
|
||||
team_desc_helper=En que consiste este equipo?
|
||||
team_permission_desc=Que nivel de permisos debería ter este equipo?
|
||||
|
||||
form.name_reserved=O nome da organización '%s' está reservado.
|
||||
form.name_pattern_not_allowed=O patrón de nome da organización '%s' non está permitido.
|
||||
form.team_name_reserved=Team name '%s' is reserved.
|
||||
form.name_not_allowed=Organization name or pattern %q is not allowed.
|
||||
form.team_name_not_allowed=Team name or pattern %q is not allowed.
|
||||
|
||||
settings=Configuración
|
||||
settings.options=Opcións
|
||||
@@ -954,12 +1016,19 @@ first_page=Primeira
|
||||
last_page=Última
|
||||
total=Total: %d
|
||||
|
||||
dashboard.build_info=Build Information
|
||||
dashboard.app_ver=Application version
|
||||
dashboard.git_version=Git version
|
||||
dashboard.go_version=Go version
|
||||
dashboard.build_time=Build time
|
||||
dashboard.build_commit=Build commit
|
||||
dashboard.statistic=Estatísticas
|
||||
dashboard.operations=Operacións
|
||||
dashboard.system_status=Estado do Monitor do Sistema
|
||||
dashboard.statistic_info=A base de datos de Gogs contén <b>%d</b> usuarios, <b>%d</b> organizacións, <b>%d</b> claves públicas, <b>%d</b> repositorios, <b>%d</b> vixiados, <b>%d</b> destacados, <b>%d</b> accións, <b>%d</b> accesos, <b>%d</b> incidencias, <b>%d</b> comentarios, <b>%d</b> contas de redes sociais, <b>%d</b> seguidores, <b>%d</b> mirrors, <b>%d</b> releases, <b>%d</b> fontes de login, <b>%d</b> webhooks, <b>%d</b> milestones, <b>%d</b> etiquetas, <b>%d</b> hooks, <b>%d</b> equipos, <b>%d</b> tarefas actualizadas, <b>%d</b> adxuntos.
|
||||
dashboard.operation_name=Nome da operación
|
||||
dashboard.operation_switch=Interruptor
|
||||
dashboard.select_operation_to_run=Please select operation to run
|
||||
dashboard.operation_run=Executar
|
||||
dashboard.clean_unbind_oauth=Limpar solicitudes de OAuth sen confirmar
|
||||
dashboard.clean_unbind_oauth_success=As solicitudes de OAuth sen confirmar elimináronse correctamente.
|
||||
@@ -1051,11 +1120,12 @@ repos.stars=Estrelas
|
||||
repos.issues=Incidencias
|
||||
repos.size=Size
|
||||
|
||||
auths.auth_manage_panel=Panel de administración de autenticación
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Engadir nova orixe
|
||||
auths.name=Nome
|
||||
auths.type=Tipo
|
||||
auths.enabled=Activo
|
||||
auths.default=Default
|
||||
auths.updated=Actualizado
|
||||
auths.auth_type=Tipo de autenticación
|
||||
auths.auth_name=Nome de autenticación
|
||||
@@ -1064,15 +1134,21 @@ auths.domain=Dominio
|
||||
auths.host=Host
|
||||
auths.port=Porto
|
||||
auths.bind_dn=Bind DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_password=Contrasinal Bind
|
||||
auths.bind_password_helper=Advertencia: o contrasinal almacénase como texto plano. Non empregue unha conta con privilexios elevados.
|
||||
auths.user_base=Base de busca de usuarios
|
||||
auths.user_dn=DN de persoas usuarias
|
||||
auths.attribute_username=Atributo de nome de usuario
|
||||
auths.attribute_username_placeholder=Deixar baleiro para usar o campo de inicio de sesión como nome de usuario.
|
||||
auths.attribute_name=Atributo nome
|
||||
auths.attribute_name=First Name Attribute
|
||||
auths.attribute_surname=Atributo apelido
|
||||
auths.attribute_mail=Atributo correo electrónico
|
||||
auths.verify_group_membership=Verify group membership
|
||||
auths.group_search_base_dn=Group Search Base DN
|
||||
auths.group_filter=Group Filter
|
||||
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
|
||||
auths.user_attribute_listed_in_group=User Attribute Listed in Group
|
||||
auths.attributes_in_bind=Buscar atributos no contexto do Bind DN
|
||||
auths.filter=Filtro de usuario
|
||||
auths.admin_filter=Filtro de aministrador
|
||||
@@ -1086,9 +1162,9 @@ auths.enable_tls=Habilitar cifrado TLS
|
||||
auths.skip_tls_verify=Omitir a verificación TLS
|
||||
auths.pam_service_name=Nome do servizo PAM
|
||||
auths.enable_auto_register=Habilitar auto-rexistro
|
||||
auths.tips=Consellos
|
||||
auths.edit=Editar a configuración de autenticación
|
||||
auths.activated=Esta autenticación foi activada
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=A autenticación '%s' foi engadida con éxito!
|
||||
auths.update_success=A configuración de autenticación foi actualizada con éxito.
|
||||
auths.update=Actualizar a configuración de autenticación
|
||||
@@ -1098,115 +1174,186 @@ auths.delete_auth_desc=Esta autenticación será eliminada. Desexas continuar?
|
||||
auths.still_in_used=Este método de autentificación aínda é utilizado por algúns usuarios, por favor elimine ou converta estes usuarios a outro tipo de autentificación.
|
||||
auths.deletion_success=A autenticación foi eliminada con éxito!
|
||||
auths.login_source_exist=Login source '%s' xa existe.
|
||||
auths.github_api_endpoint=API Endpoint
|
||||
|
||||
config.not_set=(not set)
|
||||
config.server_config=Configuración do servidor
|
||||
config.app_name=Nome da aplicación
|
||||
config.app_ver=Versión da aplicación
|
||||
config.app_url=URL da aplicación
|
||||
config.domain=Dominio
|
||||
config.offline_mode=Modo sen conexión
|
||||
config.disable_router_log=Deshabilitar log do router
|
||||
config.brand_name=Brand name
|
||||
config.run_user=Executada como usuario
|
||||
config.run_mode=Modo de execución
|
||||
config.git_version=Versión de Git
|
||||
config.static_file_root_path=Ruta dos ficheiros estáticos
|
||||
config.log_file_root_path=Ruta dos ficheiros de log
|
||||
config.reverse_auth_user=Autenticación inversa de usuario
|
||||
config.server.external_url=External URL
|
||||
config.server.domain=Domain
|
||||
config.server.protocol=Protocol
|
||||
config.server.http_addr=HTTP address
|
||||
config.server.http_port=HTTP port
|
||||
config.server.cert_file=Certificate file
|
||||
config.server.key_file=Key file
|
||||
config.server.tls_min_version=Minimum TLS version
|
||||
config.server.unix_socket_permission=Unix socket permission
|
||||
config.server.local_root_url=Local root URL
|
||||
config.server.offline_mode=Offline mode
|
||||
config.server.disable_router_log=Disable router log
|
||||
config.server.enable_gzip=Enable Gzip
|
||||
config.server.app_data_path=Application data path
|
||||
config.server.load_assets_from_disk=Load assets from disk
|
||||
config.server.landing_url=Landing URL
|
||||
|
||||
config.ssh_config=Configuración SSH
|
||||
config.ssh_enabled=Habilitado
|
||||
config.ssh_start_builtin_server=Iniciar servidor integrado
|
||||
config.ssh_domain=Dominio
|
||||
config.ssh_port=Porto
|
||||
config.ssh_listen_port=Porto de escoita
|
||||
config.ssh_root_path=Ruta raíz
|
||||
config.ssh_key_test_path=Ruta da clave de proba
|
||||
config.ssh_keygen_path=Ruta do xerador de claves ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Tamaño mínimo da clave de verificación
|
||||
config.ssh_minimum_key_sizes=Tamaños de clave mínimos
|
||||
config.ssh.enabled=Enabled
|
||||
config.ssh.domain=Exposed domain
|
||||
config.ssh.port=Exposed port
|
||||
config.ssh.root_path=Root path
|
||||
config.ssh.keygen_path=Keygen path
|
||||
config.ssh.key_test_path=Key test path
|
||||
config.ssh.minimum_key_size_check=Minimum key size check
|
||||
config.ssh.minimum_key_sizes=Minimum key sizes
|
||||
config.ssh.rewrite_authorized_keys_at_start=Rewrite "authorized_keys" at start
|
||||
config.ssh.start_builtin_server=Start builtin server
|
||||
config.ssh.listen_host=Listen host
|
||||
config.ssh.listen_port=Listen port
|
||||
config.ssh.server_ciphers=Server ciphers
|
||||
config.ssh.server_macs=Server MACs
|
||||
config.ssh.server_algorithms=Server algorithms
|
||||
|
||||
config.repo_config=Repository Configuration
|
||||
config.repo_root_path=Ruta do repositorio
|
||||
config.script_type=Tipo de Script
|
||||
config.repo_force_private=Force Private
|
||||
config.max_creation_limit=Max Creation Limit
|
||||
config.preferred_licenses=Preferred Licenses
|
||||
config.disable_http_git=Disable HTTP Git
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
config.repo_config=Repository configuration
|
||||
config.repo.root_path=Root path
|
||||
config.repo.script_type=Script type
|
||||
config.repo.ansi_chatset=ANSI charset
|
||||
config.repo.force_private=Force private
|
||||
config.repo.max_creation_limit=Max creation limit
|
||||
config.repo.preferred_licenses=Preferred licenses
|
||||
config.repo.disable_http_git=Disable HTTP Git
|
||||
config.repo.enable_local_path_migration=Enable local path migration
|
||||
config.repo.enable_raw_file_render_mode=Enable raw file render mode
|
||||
config.repo.commits_fetch_concurrency=Commits fetch concurrency
|
||||
config.repo.editor.line_wrap_extensions=Editor line wrap extensions
|
||||
config.repo.editor.previewable_file_modes=Editor previewable file modes
|
||||
config.repo.upload.enabled=Upload enabled
|
||||
config.repo.upload.temp_path=Upload temporary path
|
||||
config.repo.upload.allowed_types=Upload allowed types
|
||||
config.repo.upload.file_max_size=Upload file size limit
|
||||
config.repo.upload.max_files=Upload files limit
|
||||
|
||||
config.db_config=Configuración da base de datos
|
||||
config.db_type=Tipo
|
||||
config.db_host=Host
|
||||
config.db_name=Nome
|
||||
config.db_user=Usuario
|
||||
config.db_ssl_mode=Modo SSL
|
||||
config.db_ssl_mode_helper=(só para "postgres")
|
||||
config.db_path=Ruta
|
||||
config.db_path_helper=(para "sqlite3" e "tidb")
|
||||
config.db.type=Type
|
||||
config.db.host=Host
|
||||
config.db.name=Name
|
||||
config.db.schema=Schema
|
||||
config.db.schema_helper=(for "postgres" only)
|
||||
config.db.user=User
|
||||
config.db.ssl_mode=SSL mode
|
||||
config.db.ssl_mode_helper=(for "postgres" only)
|
||||
config.db.path=Path
|
||||
config.db.path_helper=(for "sqlite3"only)
|
||||
config.db.max_open_conns=Maximum open connections
|
||||
config.db.max_idle_conns=Maximum idle connections
|
||||
|
||||
config.service_config=Configuración do servizo
|
||||
config.register_email_confirm=Solicitar confirmación por correo electrónico
|
||||
config.disable_register=Deshabilitar o rexistro
|
||||
config.show_registration_button=Mostrar botón de rexistro
|
||||
config.require_sign_in_view=Solicitar a vista de inicio de sesión
|
||||
config.mail_notify=Notificación por correo electrónico
|
||||
config.disable_key_size_check=Deshabilitar a comprobación de tamaño mínimo de clave
|
||||
config.enable_captcha=Activar captcha
|
||||
config.active_code_lives=Habilitar vida do código
|
||||
config.reset_password_code_lives=Restablecer contrasinal de vida do código
|
||||
config.security_config=Security configuration
|
||||
config.security.login_remember_days=Login remember days
|
||||
config.security.cookie_remember_name=Remember cookie
|
||||
config.security.cookie_username=Username cookie
|
||||
config.security.cookie_secure=Enable secure cookie
|
||||
config.security.reverse_proxy_auth_user=Reverse proxy authentication header
|
||||
config.security.enable_login_status_cookie=Enable login status cookie
|
||||
config.security.login_status_cookie_name=Login status cookie
|
||||
config.security.local_network_allowlist=Local network allowlist
|
||||
|
||||
config.webhook_config=Configuración de Webhooks
|
||||
config.queue_length=Tamaño de cola de envío
|
||||
config.deliver_timeout=Timeout de entrega
|
||||
config.skip_tls_verify=Omitir a verificación TLS
|
||||
config.email_config=Email configuration
|
||||
config.email.enabled=Enabled
|
||||
config.email.subject_prefix=Subject prefix
|
||||
config.email.host=Host
|
||||
config.email.from=From
|
||||
config.email.user=User
|
||||
config.email.disable_helo=Disable HELO
|
||||
config.email.helo_hostname=HELO hostname
|
||||
config.email.skip_verify=Skip certificate verify
|
||||
config.email.use_certificate=Use custom certificate
|
||||
config.email.cert_file=Certificate file
|
||||
config.email.key_file=Key file
|
||||
config.email.use_plain_text=Use plain text
|
||||
config.email.add_plain_text_alt=Add plain text alternative
|
||||
config.email.send_test_mail=Send test email
|
||||
config.email.test_mail_failed=Failed to send test email to '%s': %v
|
||||
config.email.test_mail_sent=Test email has been sent to '%s'.
|
||||
|
||||
config.mailer_config=Configuración do servidor de correo
|
||||
config.mailer_enabled=Activado
|
||||
config.mailer_disable_helo=Desactivar HELO
|
||||
config.mailer_name=Nome
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Usuario
|
||||
config.send_test_mail=Enviar correo electrónico de proba
|
||||
config.test_mail_failed=Fallo ao enviar o correo electrónico de proba a '%s': %v
|
||||
config.test_mail_sent=O correo electrónico de proba foi enviado a '%s'.
|
||||
config.auth_config=Authentication configuration
|
||||
config.auth_custom_logout_url=Custom logout URL
|
||||
config.auth.activate_code_lives=Activate code lives
|
||||
config.auth.reset_password_code_lives=Reset password code lives
|
||||
config.auth.require_email_confirm=Require email confirmation
|
||||
config.auth.require_sign_in_view=Require sign in view
|
||||
config.auth.disable_registration=Disable registration
|
||||
config.auth.enable_registration_captcha=Enable registration captcha
|
||||
config.auth.enable_reverse_proxy_authentication=Enable reverse proxy authentication
|
||||
config.auth.enable_reverse_proxy_auto_registration=Enable reverse proxy auto registration
|
||||
config.auth.reverse_proxy_authentication_header=Reverse proxy authentication header
|
||||
|
||||
config.oauth_config=Configuración OAuth
|
||||
config.oauth_enabled=Activado
|
||||
|
||||
config.cache_config=Configuración da caché
|
||||
config.cache_adapter=Adaptador da caché
|
||||
config.cache_interval=Intervalo da caché
|
||||
config.cache_conn=Conexión da caché
|
||||
config.user_config=User configuration
|
||||
config.user.enable_email_notify=Enable email notification
|
||||
|
||||
config.session_config=Configuración da sesión
|
||||
config.session_provider=Provedor da sesión
|
||||
config.provider_config=Configuración do provedor
|
||||
config.cookie_name=Nome da cookie
|
||||
config.enable_set_cookie=Activar establecemento de cookie
|
||||
config.gc_interval_time=Intervalo de tempo do GC
|
||||
config.session_life_time=Tempo de vida da sesión
|
||||
config.https_only=Só HTTPS
|
||||
config.cookie_life_time=Tempo de vida da cookie
|
||||
config.session.provider=Provider
|
||||
config.session.provider_config=Provider config
|
||||
config.session.cookie_name=Cookie
|
||||
config.session.https_only=HTTPS only
|
||||
config.session.gc_interval=GC interval
|
||||
config.session.max_life_time=Max life time
|
||||
config.session.csrf_cookie_name=CSRF cookie
|
||||
|
||||
config.cache_config=Configuración da caché
|
||||
config.cache.adapter=Adapter
|
||||
config.cache.interval=GC interval
|
||||
config.cache.host=Host
|
||||
|
||||
config.http_config=HTTP configuration
|
||||
config.http.access_control_allow_origin=Access control allow origin
|
||||
|
||||
config.attachment_config=Attachment configuration
|
||||
config.attachment.enabled=Enabled
|
||||
config.attachment.path=Path
|
||||
config.attachment.allowed_types=Allowed types
|
||||
config.attachment.max_size=Size limit
|
||||
config.attachment.max_files=Files limit
|
||||
|
||||
config.release_config=Release configuration
|
||||
config.release.attachment.enabled=Attachment enabled
|
||||
config.release.attachment.allowed_types=Attachment allowed types
|
||||
config.release.attachment.max_size=Attachment size limit
|
||||
config.release.attachment.max_files=Attachment files limit
|
||||
|
||||
config.picture_config=Configuración de imaxe
|
||||
config.picture_service=Servizo de imaxe
|
||||
config.disable_gravatar=Desactivar gravatar
|
||||
config.enable_federated_avatar=Habilitar avatares federados
|
||||
config.picture.avatar_upload_path=User avatar upload path
|
||||
config.picture.repo_avatar_upload_path=Repository avatar upload path
|
||||
config.picture.gravatar_source=Gravatar source
|
||||
config.picture.disable_gravatar=Disable Gravatar
|
||||
config.picture.enable_federated_avatar=Enable federated avatars
|
||||
|
||||
config.mirror_config=Mirror configuration
|
||||
config.mirror.default_interval=Default interval
|
||||
|
||||
config.webhook_config=Configuración de Webhooks
|
||||
config.webhook.types=Types
|
||||
config.webhook.deliver_timeout=Deliver timeout
|
||||
config.webhook.skip_tls_verify=Skip TLS verify
|
||||
|
||||
config.git_config=Configuración de git
|
||||
config.git_disable_diff_highlight=Desactivar resaltado de sintaxe do Diff
|
||||
config.git_max_diff_lines=Liñas de Diff máximas (por un só arquivo)
|
||||
config.git_max_diff_line_characters=Caracteres de Diff máximos (para unha soa liña)
|
||||
config.git_max_diff_files=Máximo de arquivos de Diff (que se mostrarán)
|
||||
config.git_gc_args=Argumentos de GC
|
||||
config.git_migrate_timeout=Tempo de espera de migración
|
||||
config.git_mirror_timeout=Tempo de espera de actualización de réplicas
|
||||
config.git_clone_timeout=Tempo de espera de operación de clóns
|
||||
config.git_pull_timeout=Tempo de espera de operación de pull
|
||||
config.git_gc_timeout=Tempo de espera de operación de GC
|
||||
config.git.disable_diff_highlight=Disable diff syntax highlight
|
||||
config.git.max_diff_lines=Diff lines limit (for a single file)
|
||||
config.git.max_diff_line_characters=Diff characters limit (for a single line)
|
||||
config.git.max_diff_files=Diff files limit (for a single diff)
|
||||
config.git.gc_args=GC arguments
|
||||
config.git.migrate_timeout=Migration timeout
|
||||
config.git.mirror_timeout=Mirror fetch timeout
|
||||
config.git.clone_timeout=Clone timeout
|
||||
config.git.pull_timeout=Pull timeout
|
||||
config.git.gc_timeout=GC timeout
|
||||
|
||||
config.lfs_config=LFS configuration
|
||||
config.lfs.storage=Storage
|
||||
config.lfs.objects_path=Objects path
|
||||
|
||||
config.log_config=Configuración do log
|
||||
config.log_file_root_path=Ruta dos ficheiros de log
|
||||
config.log_mode=Mode
|
||||
config.log_options=Options
|
||||
|
||||
@@ -1237,7 +1384,6 @@ notices.delete_success=As notificacións do sistema foron eliminadas satisfactor
|
||||
|
||||
[action]
|
||||
create_repo=creou o repositorio <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=repositorio renomeado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=fixo push a <a href="%[1]s/src/%[2]s">%[3]s</a> en <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Ver comparación destas %d achegas
|
||||
@@ -1254,6 +1400,10 @@ create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href=
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=fixo push do tag <a href="%s/src/%s">%[2]s</a> a <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=hai
|
||||
@@ -1275,6 +1425,7 @@ months=%[2]s %[1]d meses
|
||||
years=%s %d anos
|
||||
raw_seconds=segundos
|
||||
raw_minutes=minutos
|
||||
raw_hours=hours
|
||||
|
||||
[dropzone]
|
||||
default_message=Sólteos aquí ou pulse para cargar arquivos.
|
||||
|
||||
1434
conf/locale/locale_hu-HU.ini
Normal file
1434
conf/locale/locale_hu-HU.ini
Normal file
File diff suppressed because it is too large
Load Diff
1434
conf/locale/locale_id-ID.ini
Normal file
1434
conf/locale/locale_id-ID.ini
Normal file
File diff suppressed because it is too large
Load Diff
@@ -9,7 +9,6 @@ sign_out=Esci
|
||||
sign_up=Registrati
|
||||
register=Registrati
|
||||
website=Sito Web
|
||||
version=Versione
|
||||
page=Pagina
|
||||
template=Template
|
||||
language=Lingua
|
||||
@@ -44,17 +43,22 @@ issues=Problemi
|
||||
|
||||
cancel=Annulla
|
||||
|
||||
[status]
|
||||
page_not_found=Pagina Non Trovata
|
||||
internal_server_error=Errore Interno del Server
|
||||
|
||||
[install]
|
||||
install=Installazione
|
||||
title=Passi d'installazione per il primo avvio
|
||||
docker_helper=Se stai utilizzando Gogs su Docker, per favore leggi le <a target="_blank" href="%s">Linee guida</a> con attenzione prima di cambiare qualcosa su questa pagina!
|
||||
requite_db_desc=Gogs richiede MySQL, PostgreSQL, SQLite3, MSSQL o TiDB.
|
||||
requite_db_desc=Gogs requires MySQL, PostgreSQL, SQLite3 or TiDB (via MySQL protocol).
|
||||
db_title=Impostazioni Database
|
||||
db_type=Tipo di database
|
||||
host=Host
|
||||
user=Utente
|
||||
password=Password
|
||||
db_name=Nome del database
|
||||
db_schema=Schema
|
||||
db_helper=Utilizza il motore INNODB con codifica utf8_general_ci per MySQL.
|
||||
ssl_mode=Modalità SSL
|
||||
path=Percorso
|
||||
@@ -84,6 +88,7 @@ log_root_path=Percorso dei log
|
||||
log_root_path_helper=Directory in cui scrivere i file di log.
|
||||
enable_console_mode=Abilita modalità Terminale
|
||||
enable_console_mode_popup=In aggiunta alla modalità file, invia i log anche al terminale.
|
||||
default_branch=Default Branch
|
||||
|
||||
optional_title=Impostazioni Facoltative
|
||||
email_title=Impostazioni E-mail
|
||||
@@ -119,8 +124,10 @@ sqlite3_not_available=Questa versione non supporta SQLite3, si prega di scaricar
|
||||
invalid_db_setting=La configurazione del database non è corretta: %v
|
||||
invalid_repo_path=Percorso root del repository invalido: %v
|
||||
run_user_not_match=Run user non è l'utente corrente: %s -> %s
|
||||
smtp_host_missing_port=All'Host SMTP manca la porta nell'indirizzo.
|
||||
invalid_smtp_from=Campo SMTP From non valido: %v
|
||||
save_config_failed=Fallito il salvataggio della configurazione: %v
|
||||
init_failed=Impossibile inizializzare l'applicazione: %v
|
||||
invalid_admin_setting=Impostazioni account Admin non valide: %v
|
||||
install_success=Benvenuto! Siamo felici che tu abbia scelto Gogs, buon divertimento.
|
||||
invalid_log_root_path=Percorso deilog non valido: %v
|
||||
@@ -150,6 +157,8 @@ register_hepler_msg=Hai già un account? Accedi ora!
|
||||
social_register_hepler_msg=Hai già un account? Associalo ora!
|
||||
disable_register_prompt=Siamo spiacenti, registrazione è stata disabilitata. Si prega di contattare l'amministratore del sito.
|
||||
disable_register_mail=Siamo spiacenti, la conferma di registrazione via Mail è stata disattivata.
|
||||
auth_source=Fonte di autenticazione
|
||||
local=Locale
|
||||
remember_me=Ricordami
|
||||
forgot_password=Password dimenticata
|
||||
forget_password=Password dimenticata?
|
||||
@@ -168,6 +177,14 @@ reset_password_helper=Clicca qui per reimpostare la password
|
||||
password_too_short=La lunghezza della password non può essere meno 6 caratteri.
|
||||
non_local_account=Gli account non locali non possono modificare le password tramite Gogs.
|
||||
|
||||
login_two_factor=Autenticazione in Due Passaggi
|
||||
login_two_factor_passcode=Codice di autenticazione
|
||||
login_two_factor_enter_recovery_code=Inserisci il codice di recupero dell'Autenticazione a due Fattori
|
||||
login_two_factor_recovery=Recupero a due fattori
|
||||
login_two_factor_recovery_code=Recupera il codice
|
||||
login_two_factor_enter_passcode=Inserisci un codice di accesso a due fattori
|
||||
login_two_factor_invalid_recovery_code=Il codice di recupero è stato utilizzato o non è valido.
|
||||
|
||||
[mail]
|
||||
activate_account=Per favore attiva il tuo account
|
||||
activate_email=Verifica il tuo indirizzo e-mail
|
||||
@@ -203,7 +220,7 @@ Content=Contenuto
|
||||
require_error=` non può essere vuoto.`
|
||||
alpha_dash_error=` ammessi solo caratteri alfanumerici o trattini(-_).`
|
||||
alpha_dash_dot_error=` ammessi solo caratteri alfanumerici o trattini(-_) o punti.`
|
||||
alpha_dash_dot_slash_error=` must be valid alpha or numeric or dash(-_) or dot characters or slashes.`
|
||||
alpha_dash_dot_slash_error=` ammessi solo caratteri alfanumerici o trattini(-_) o punti o slash.`
|
||||
size_error='deve essere %s.'
|
||||
min_size_error=` deve contenere almeno %s caratteri.`
|
||||
max_size_error=` deve contenere massimo %s caratteri.`
|
||||
@@ -220,6 +237,7 @@ org_name_been_taken=Il nome dell'Organizzazione è già utlizzato.
|
||||
team_name_been_taken=Il nome del Team è già utilizzato.
|
||||
email_been_used=L'indirizzo E-mail è già utilizzato.
|
||||
username_password_incorrect=Nome utente o password incorretti.
|
||||
auth_source_mismatch=La sorgente di autenticazione selezionata non è associata all'utente.
|
||||
enterred_invalid_repo_name=Si prega di assicurarsi che il nome del repository inserito sia corretto.
|
||||
enterred_invalid_owner_name=Si prega di assicurarsi che il nome del proprietario inserito sia corretto.
|
||||
enterred_invalid_password=Verificare che la password inserita sia corretta.
|
||||
@@ -247,15 +265,15 @@ following=Seguiti
|
||||
follow=Segui
|
||||
unfollow=Non seguire più
|
||||
|
||||
form.name_reserved=L'username '%s' è riservato.
|
||||
form.name_pattern_not_allowed=La struttura del nome utente '%s' non è consentita.
|
||||
form.name_not_allowed=Nome utente o schema %q non consentito.
|
||||
|
||||
[settings]
|
||||
profile=Profilo
|
||||
password=Password
|
||||
avatar=Avatar
|
||||
ssh_keys=Chiavi SSH
|
||||
repos=Repositories
|
||||
security=Sicurezza
|
||||
repos=Repository
|
||||
orgs=Organizzazioni
|
||||
applications=Applicazioni
|
||||
delete=Elimina account
|
||||
@@ -299,6 +317,7 @@ delete_email=Elimina
|
||||
email_deletion=Eliminazione e-mail
|
||||
email_deletion_desc=La procedura di rimozione indirizzo email eliminerà tutte le informazioni correlate dal tuo account. Si desidera continuare?
|
||||
email_deletion_success=Indirizzo e-mail eliminato con successo!
|
||||
email_deletion_primary=Cannot delete primary email address.
|
||||
add_new_email=Aggiungi un nuovo indirizzo E-mail
|
||||
add_email=Aggiungi E-mail
|
||||
add_email_confirmation_sent=Una nuova email di conferma è stata inviata a '%s', per favore controlla la tua posta in arrivo nelle prossime %d ore per completare il processo di registrazione.
|
||||
@@ -324,14 +343,36 @@ no_activity=Nessuna attività recente
|
||||
key_state_desc=Hai utilizzato questa chiave negli ultimi 7 giorni
|
||||
token_state_desc=Questo token e' satato utilizzato negli ultimi 7 giorni
|
||||
|
||||
manage_social=Gestisci gli Account Sociali Associati
|
||||
social_desc=Questa è un elenco degli account sociali associati. Rimuovere qualsiasi account che non si riconosce.
|
||||
unbind=Disassocia
|
||||
unbind_success=Account sociale disassociato.
|
||||
two_factor=Autenticazione in Due Passaggi
|
||||
two_factor_status=Stato:
|
||||
two_factor_on=Attiva
|
||||
two_factor_off=Non attivo
|
||||
two_factor_enable=Abilita
|
||||
two_factor_disable=Disattivata
|
||||
two_factor_view_recovery_codes=Visualizza e memorizza i tuoi <a href="%s%s">codici di recupero</a> in un posto sicuro. Puoi utilizzarli come codice di sicurezza se perdi gli accessi all'applicazione di autenticazione.
|
||||
two_factor_http=Per le operazioni HTTP/HTTPS, non sei più in grado di utilizzare nome utente e password. Si prega di creare e utilizzare <a href="%[1]s%[2]s">Token di accesso personale</a> come credenziali, ad esempio. <code>%[3]s</code>.
|
||||
two_factor_enable_title=Abilita l'autenticazione in due passaggi
|
||||
two_factor_scan_qr=Per favore, utilizza la tua applicazione di autenticazione per scansionare l'immagine:
|
||||
two_factor_or_enter_secret=O inserisci la chiave segreta:
|
||||
two_factor_then_enter_passcode=Poi inserisci la chiave di sicurezza:
|
||||
two_factor_verify=Verifica
|
||||
two_factor_invalid_passcode=La chiave di sicurezza che hai inserito non è valida, riprova!
|
||||
two_factor_reused_passcode=La chiave di sicurezza che hai inserito è già stata utilizzata, provane un'altra!
|
||||
two_factor_enable_error=Impossibile abilitare l'autenticazione a due fattori: %v
|
||||
two_factor_enable_success=Autenticazione a due fattori abilitata per il tuo account con successo!
|
||||
two_factor_recovery_codes_title=Codici di recupero autenticazione a due fattori
|
||||
two_factor_recovery_codes_desc=I codici di recupero vengono utilizzati quando si perde temporaneamente l'accesso all'applicazione di autenticazione. Ogni codice di recupero può essere utilizzato solo una volta, <b>si prega di mantenere questi codici in un posto sicuro</b>.
|
||||
two_factor_regenerate_recovery_codes=Rigenera codici di recupero
|
||||
two_factor_regenerate_recovery_codes_error=Impossibile rigenerare codici di recupero: %v
|
||||
two_factor_regenerate_recovery_codes_success=I nuovi codici di recupero sono stati generati correttamente!
|
||||
two_factor_disable_title=Disabilita autenticazione a due fattori
|
||||
two_factor_disable_desc=Il livello di sicurezza del tuo account diminuirà disabilitando l'autenticazione a due fattori. Vuoi continuare?
|
||||
two_factor_disable_success=L'autenticazione a due fattori è stata disabilitata!
|
||||
|
||||
manage_access_token=Gestisci i Token di Accesso Personale
|
||||
generate_new_token=Genera Nuovo Token
|
||||
tokens_desc=I Token che hai generato e che possono essere utilizzati per accedere alle API Gogs.
|
||||
access_token_tips=The personal access token may be used as either username or password. It is recommended to use the "x-access-token" as the username and the personal access token as the password for Git applications.
|
||||
new_token_desc=Da questo momento, ogni token avrà pieno accesso al tuo account.
|
||||
token_name=Nome Token
|
||||
generate_token=Genera Token
|
||||
@@ -340,15 +381,16 @@ delete_token=Elimina
|
||||
access_token_deletion=Eliminazione Token di accesso personale
|
||||
access_token_deletion_desc=Eliminare questo token di accesso personale rimuoverà tutti i relativi accessi di applicazione. Si desidera continuare?
|
||||
delete_token_success=Il token di accesso personale è stato eliminato! Non dimenticare di aggiornare anche l'applicazione.
|
||||
token_name_exists=Un token con lo stesso nome esiste già.
|
||||
|
||||
orgs.none=Non sei membro di alcuna organizzazione.
|
||||
orgs.leave_title=Abbandona una organizzazione
|
||||
orgs.leave_desc=Abbandonando l'organizzazione perderai l'accesso a tutti i repository e i gruppi. Confermi?
|
||||
|
||||
repos.leave=Leave
|
||||
repos.leave_title=Leave repository
|
||||
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
|
||||
repos.leave_success=You have left repository '%s' successfully!
|
||||
repos.leave=Abbandona
|
||||
repos.leave_title=Lascia il repository
|
||||
repos.leave_desc=Perderai l'accesso al repository dopo che hai lasciato. Vuoi continuare?
|
||||
repos.leave_success=Hai lasciato il repository '%s' con successo!
|
||||
|
||||
delete_account=Elimina Account
|
||||
delete_prompt=L'operazione eliminerà permanentemente l'account e <strong>NON POTRÀ</strong> essere annullata!
|
||||
@@ -361,7 +403,9 @@ owner=Proprietario
|
||||
repo_name=Nome Repository
|
||||
repo_name_helper=I migliori nomi dei repository sono brevi, facili da memorizzare e <strong>univoci</strong>.
|
||||
visibility=Visibilità
|
||||
unlisted=Unlisted
|
||||
visiblity_helper=Questo repository è <span class="ui red text"> privato</span>
|
||||
unlisted_helper=This repository is <span class="ui red text">Unlisted</span>
|
||||
visiblity_helper_forced=L'amministratore del sito ha deciso che tutti i nuovi repository devono essere <span class="ui red text">privati</span>
|
||||
visiblity_fork_helper=(La modifica di questo valore avrà effetto su tutti i fork)
|
||||
clone_helper=Hai bisogno di aiuto per la clonazione? Visita <a target="_blank" href="%s">Aiuto</a>!
|
||||
@@ -379,7 +423,7 @@ auto_init=Inizializzare questo repository con i file e il modello selezionati
|
||||
create_repo=Crea Repository
|
||||
default_branch=Ramo (Branch) predefinito
|
||||
mirror_prune=Rimuovi
|
||||
mirror_prune_desc=Remove any remote-tracking references that no longer exist on the remote
|
||||
mirror_prune_desc=Rimuovi ogni riferimento di monitoraggio remoto che non esiste più sul telecomando
|
||||
mirror_interval=Intervallo Mirror (in ore)
|
||||
mirror_address=Indirizzo del mirror
|
||||
mirror_address_desc=Si prega di includere nell'indirizzo le credenziali utente necessarie.
|
||||
@@ -387,10 +431,11 @@ mirror_last_synced=Ultimo aggiornamento
|
||||
watchers=Osservatori
|
||||
stargazers=Fan
|
||||
forks=Fork
|
||||
repo_description_helper=Descrizione della repository. Lunghezza massima di 512 caratteri.
|
||||
repo_description_length=Caratteri disponibili
|
||||
|
||||
form.reach_limit_of_creation=Il proprietario ha raggiunto il limite massimo di %d repository creati.
|
||||
form.name_reserved=Il nome repository %s è riservato.
|
||||
form.name_pattern_not_allowed=La struttura del nome del repository %s non è consentita.
|
||||
form.name_not_allowed=Nome della repository o schema %q non consentiti.
|
||||
|
||||
need_auth=Richiesta di autorizzazione
|
||||
migrate_type=Tipo di migrazione
|
||||
@@ -401,6 +446,7 @@ migrate.clone_address_desc=Può essere un url HTTP/HTTPS/GIT.
|
||||
migrate.clone_address_desc_import_local=Puoi anche migrare un repository usando un path locale sul server.
|
||||
migrate.permission_denied=Non è consentito importare repository locali.
|
||||
migrate.invalid_local_path=Percorso locale non valido, non esiste o non è una cartella.
|
||||
migrate.clone_address_resolved_to_blocked_local_address=Clone address resolved to a local network address that is implicitly blocked.
|
||||
migrate.failed=Migrazione non riuscita: %v
|
||||
|
||||
mirror_from=mirror da
|
||||
@@ -433,7 +479,7 @@ pulls=Pull Requests
|
||||
labels=Etichette
|
||||
milestones=Traguardi
|
||||
commits=Commit
|
||||
git_branches=Branches
|
||||
git_branches=Rami (Branch)
|
||||
releases=Rilasci
|
||||
file_raw=Originale
|
||||
file_history=Cronologia
|
||||
@@ -442,12 +488,14 @@ file_permalink=Permalink
|
||||
file_too_large=Questo file è troppo grande per essere mostrato
|
||||
video_not_supported_in_browser=Il tuo browser non supporta i tag "video" di HTML5.
|
||||
|
||||
branches.overview=Overview
|
||||
branches.active_branches=Active Branches
|
||||
branches.overview=Panoramica
|
||||
branches.active_branches=Rami (Branch) attivi
|
||||
branches.stale_branches=Stale Branches
|
||||
branches.all=All Branches
|
||||
branches.all=Tutti i rami (branch)
|
||||
branches.updated_by=Updated %[1]s by %[2]s
|
||||
branches.change_default_branch=Change Default Branch
|
||||
branches.change_default_branch=Cambia branch di default
|
||||
branches.default_deletion_not_allowed=Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed=Cannot delete a protected branch.
|
||||
|
||||
editor.new_file=Nuovo file
|
||||
editor.upload_file=Carica File
|
||||
@@ -484,6 +532,7 @@ editor.file_changed_while_editing=Il file è stato cambiato in un'altra posizion
|
||||
editor.file_already_exists=Un file di nome '%s' esiste già in questo repository.
|
||||
editor.no_changes_to_show=Nessuna modifica da mostrare.
|
||||
editor.fail_to_update_file=La creazione o la modifica del file '%s' è fallita: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Aggiungi sottocartella...
|
||||
editor.unable_to_upload_files=È fallito il caricamento dei file su '%s': %v
|
||||
editor.upload_files_to_dir=Carica file su '%s'
|
||||
@@ -546,8 +595,8 @@ issues.next=Pagina successiva
|
||||
issues.open_title=Aperto
|
||||
issues.closed_title=Chiuso
|
||||
issues.num_comments=%d commenti
|
||||
issues.commented_at=`commented <a href="#%s">%s</a>`
|
||||
issues.delete_comment_confirm=Are you sure you want to delete this comment?
|
||||
issues.commented_at=`ha commentato <a href="#%s">%s</a>`
|
||||
issues.delete_comment_confirm=Sei sicuro/a di voler eliminare questo commento?
|
||||
issues.no_content=Non ci sono ancora contenuti.
|
||||
issues.close_issue=Chiudi
|
||||
issues.close_comment_issue=Commenta e chiudi
|
||||
@@ -575,8 +624,8 @@ issues.label_deletion=Elimina Etichetta
|
||||
issues.label_deletion_desc=Eliminare l'etichetta rimuovera le sue informazioni in tutti i problemi correlati. Vuoi continuare?
|
||||
issues.label_deletion_success=Etichetta eliminata con successo!
|
||||
issues.num_participants=%d Partecipanti
|
||||
issues.attachment.open_tab=`Click to see "%s" in a new tab`
|
||||
issues.attachment.download=`Click to download "%s"`
|
||||
issues.attachment.open_tab='Clicca per vedere "%s" in una nuova scheda'
|
||||
issues.attachment.download=«Clicca qui per scaricare "%s"»
|
||||
|
||||
pulls.new=Nuova Pull Request
|
||||
pulls.compare_changes=Confronta le modifiche
|
||||
@@ -586,6 +635,7 @@ pulls.compare_compare=confronta
|
||||
pulls.filter_branch=Filtra branch
|
||||
pulls.no_results=Nessun risultato trovato.
|
||||
pulls.nothing_to_compare=Non c'è niente da confrontare perchè i branch base e head uguali.
|
||||
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
|
||||
pulls.has_pull_request=`E' già presente una pull request tra questi due trargets: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Crea Pull Request
|
||||
pulls.title_desc=vorrebbe unire %[1]d commit da <code>%[2]s</code> a <code>%[3]s</code>
|
||||
@@ -598,12 +648,15 @@ pulls.merged=Unito
|
||||
pulls.has_merged=Questo contributo è stato incluso con successo!
|
||||
pulls.data_broken=I dati di questa pull request si sono rotti causa dell'eliminazione delle informazioni di fork.
|
||||
pulls.is_checking=Il controllo dei conflitti è ancora in corso, per favore aggiorna pagina tra qualche istante.
|
||||
pulls.can_auto_merge_desc=La pull request non può essere mergiata automaticamente.
|
||||
pulls.can_auto_merge_desc=La pull request può essere mergiata automaticamente.
|
||||
pulls.cannot_auto_merge_desc=Questa pull request non può essere mergiata automaticamente perchè ci sono dei conflitti.
|
||||
pulls.cannot_auto_merge_helper=Effettua il merge manualmente per risolvere i conflitti.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Effettua un Rebase prima del Merge
|
||||
pulls.commit_description=Descrizione del Commit
|
||||
pulls.merge_pull_request=Unisci Pull Request
|
||||
pulls.open_unmerged_pull_exists=`You can't perform reopen operation because there is already an open pull request (#%d) from same repository with same merge information and is waiting for merging.`
|
||||
pulls.delete_branch=Delete Branch
|
||||
pulls.delete_branch=Elimina Ramo
|
||||
pulls.delete_branch_has_new_commits=Branch cannot be deleted because it has new commits after mergence.
|
||||
|
||||
milestones.new=Nuova Milestone
|
||||
@@ -651,61 +704,63 @@ wiki.last_updated=Ultimo aggiornamento: %s
|
||||
settings=Impostazioni
|
||||
settings.options=Opzioni
|
||||
settings.collaboration=Collaborazione
|
||||
settings.collaboration.admin=Admin
|
||||
settings.collaboration.write=Write
|
||||
settings.collaboration.read=Read
|
||||
settings.collaboration.undefined=Undefined
|
||||
settings.branches=Branches
|
||||
settings.collaboration.admin=Amministratore
|
||||
settings.collaboration.write=Scrivi
|
||||
settings.collaboration.read=Leggi
|
||||
settings.collaboration.undefined=Indefinito
|
||||
settings.branches=Divisioni
|
||||
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
|
||||
settings.default_branch=Default Branch
|
||||
settings.default_branch=Ramo di default
|
||||
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
|
||||
settings.update=Update
|
||||
settings.update=Aggiorna
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_success=Default branch of this repository has been updated successfully!
|
||||
settings.protected_branches=Protected Branches
|
||||
settings.protected_branches=Branch protetti
|
||||
settings.protected_branches_desc=Protect branches from force pushing, accidental deletion and whitelist code committers.
|
||||
settings.choose_a_branch=Choose a branch...
|
||||
settings.branch_protection=Branch Protection
|
||||
settings.choose_a_branch=Scegli un ramo...
|
||||
settings.branch_protection=Protezione Ramo
|
||||
settings.branch_protection_desc=Please choose protect options for branch <b>%s</b>.
|
||||
settings.protect_this_branch=Protect this branch
|
||||
settings.protect_this_branch=Proteggere questo ramo
|
||||
settings.protect_this_branch_desc=Disable force pushes and prevent from deletion.
|
||||
settings.protect_require_pull_request=Require pull request instead direct pushing
|
||||
settings.protect_require_pull_request_desc=Enable this option to disable direct pushing to this branch. Commits have to be pushed to another non-protected branch and merged to this branch through pull request.
|
||||
settings.protect_whitelist_committers=Whitelist who can push to this branch
|
||||
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
|
||||
settings.protect_whitelist_users=Users who can push to this branch
|
||||
settings.protect_whitelist_search_users=Search users
|
||||
settings.protect_whitelist_search_users=Cerca utenti
|
||||
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
|
||||
settings.protect_whitelist_search_teams=Search teams
|
||||
settings.protect_whitelist_search_teams=Cerca Teams
|
||||
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
|
||||
settings.hooks=Webhooks
|
||||
settings.githooks=Git Hooks
|
||||
settings.basic_settings=Impostazioni di Base
|
||||
settings.mirror_settings=Mirror Settings
|
||||
settings.sync_mirror=Sync Now
|
||||
settings.mirror_sync_in_progress=Mirror syncing is in progress, please refresh page in about a minute.
|
||||
settings.mirror_settings=Impostazioni mirror
|
||||
settings.sync_mirror=Sincronizza ora
|
||||
settings.mirror_sync_in_progress=Sincronizzazione del mirror in corso, aggiorna la pagina tra un minuto.
|
||||
settings.site=Sito Ufficiale
|
||||
settings.update_settings=Aggiorna Impostazioni
|
||||
settings.change_reponame_prompt=Questa modifica influirà i link al repository.
|
||||
settings.advanced_settings=Opzioni avanzate
|
||||
settings.wiki_desc=Enable wiki system
|
||||
settings.use_internal_wiki=Use builtin wiki
|
||||
settings.wiki_desc=Abilita wiki
|
||||
settings.use_internal_wiki=Usa wiki incorporato
|
||||
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
|
||||
settings.use_external_wiki=Usa Wiki esterno
|
||||
settings.external_wiki_url=URL Wiki esterno
|
||||
settings.external_wiki_url_desc=I visitatori verranno reindirizzati all'URL quando cliccano sulla scheda.
|
||||
settings.issues_desc=Enable issue tracker
|
||||
settings.use_internal_issue_tracker=Use builtin lightweight issue tracker
|
||||
settings.issues_desc=Abilita tracking problemi
|
||||
settings.use_internal_issue_tracker=Utilizza il segnalatore di problemi integrato (molto leggero)
|
||||
settings.allow_public_issues_desc=Allow public access to issues when repository is private
|
||||
settings.use_external_issue_tracker=Utilizza gestore di problemi esterno
|
||||
settings.external_tracker_url=External Issue Tracker URL
|
||||
settings.external_tracker_url_desc=Visitors will be redirected to URL when they click on the tab.
|
||||
settings.external_tracker_url=URL di un segnalatore di problemi esterno
|
||||
settings.external_tracker_url_desc=I visitatori verranno reindirizzati all'URL quando faranno click sulla scheda.
|
||||
settings.tracker_url_format=Formato URL Gestore Problemi Esterno
|
||||
settings.tracker_issue_style=External Issue Tracker Naming Style:
|
||||
settings.tracker_issue_style.numeric=Numeric
|
||||
settings.tracker_issue_style.alphanumeric=Alphanumeric
|
||||
settings.tracker_issue_style.numeric=Numerico
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumerico
|
||||
settings.tracker_url_format_desc=You can use placeholder <code>{user} {repo} {index}</code> for user name, repository name and issue index.
|
||||
settings.pulls_desc=Abilita le pull requests per accettare contributi pubblici
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignora cambiamenti di spazi bianchi
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Zona Pericolosa
|
||||
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
|
||||
settings.new_owner_has_same_repo=Il nuovo proprietario ha già un repository con lo stesso nome. Per favore scegli un altro nome.
|
||||
@@ -726,7 +781,7 @@ settings.wiki_deletion_success=I dati della wiki del repository sono stati elimi
|
||||
settings.delete=Elimina questo repository
|
||||
settings.delete_desc=Una volta che hai cancellato il repository, non puoi tornare indietro. Si prega di fare attenzione.
|
||||
settings.delete_notices_1=-Questa operazione <strong>NON PUÒ</strong> essere annullata.
|
||||
settings.delete_notices_2=-Questa operazione eliminerà definitivamente il tutto il contenuto del repository, inclusi i dati di Git, incidenti, commenti e accessi dei collaboratori.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- All forks will become independent after deletion.
|
||||
settings.deletion_success=Il repository è stato eliminato con successo!
|
||||
settings.update_settings_success=Le opzioni repository sono state aggiornate con successo.
|
||||
@@ -742,8 +797,10 @@ settings.collaborator_deletion_desc=Questo utente non potrà più collaborare a
|
||||
settings.remove_collaborator_success=Il collaboratore è stato rimosso.
|
||||
settings.search_user_placeholder=Cerca utente...
|
||||
settings.org_not_allowed_to_be_collaborator=Un'organizzazione non può essere aggiunta come collaboratore.
|
||||
settings.add_webhook=Aggiungi Webhook
|
||||
settings.hooks_desc=I Webhooks sono molto simili a un basilare evento trigger HTTP POST. Ogni volta che qualcosa si verifica in Gogs, tratteremo la notifica all'host di destinazione specificato. Ulteriori informazioni in questa <a target="_blank" href="%s">Guida ai Webhooks</a>.
|
||||
settings.webhooks.add_new=Add a new webhook:
|
||||
settings.webhooks.choose_a_type=Choose a type...
|
||||
settings.add_webhook=Aggiungi Webhook
|
||||
settings.webhook_deletion=Elimina Webhook
|
||||
settings.webhook_deletion_desc=Delete this webhook will remove its information and all delivery history. Do you want to continue?
|
||||
settings.webhook_deletion_success=Il Webhook è stato eliminato con successo!
|
||||
@@ -757,6 +814,8 @@ settings.webhook.response=Risposta
|
||||
settings.webhook.headers=Headers
|
||||
settings.webhook.payload=Payload
|
||||
settings.webhook.body=Body
|
||||
settings.webhook.err_cannot_parse_payload_url=Cannot parse payload URL: %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address=Payload URL resolved to a local network address that is implicitly blocked.
|
||||
settings.githooks_desc=Gli Hooks di Git sono una funzionalità di Git stesso, puoi modificare i file degli hooks supportati nell'elenco qui sotto per compiere azioni personalizzate.
|
||||
settings.githook_edit_desc=Se l'hook è inattivo, sarà presentato un contenuto esempio. Lasciando il contenuto vuoto disattiverai questo hook.
|
||||
settings.githook_name=Nome hook
|
||||
@@ -776,19 +835,19 @@ settings.event_send_everything=Ho bisogno di <strong>tutto</strong>.
|
||||
settings.event_choose=Lasciami scegliere ciò di cui ho bisogno.
|
||||
settings.event_create=Crea
|
||||
settings.event_create_desc=Branch, o tag creato
|
||||
settings.event_delete=Delete
|
||||
settings.event_delete_desc=Branch or tag deleted
|
||||
settings.event_fork=Fork
|
||||
settings.event_fork_desc=Repository forked
|
||||
settings.event_delete=Elimina
|
||||
settings.event_delete_desc=Branch o tag eliminato
|
||||
settings.event_fork=Forka
|
||||
settings.event_fork_desc=Repository Forkata
|
||||
settings.event_push=Push
|
||||
settings.event_push_desc=Git push in un repository
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues=Problemi
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Pull request
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_release=Release
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Versione
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Attivo
|
||||
settings.active_helper=Anche i dettagli riguardanti l'evento che ha innescato l'hook saranno inviati.
|
||||
@@ -800,6 +859,7 @@ settings.recent_deliveries=Recenti Deliveries
|
||||
settings.hook_type=Tipo di Hook
|
||||
settings.add_slack_hook_desc=Aggiungi <a href="%s"> Slack</a> integrazione al tuo repository.
|
||||
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.slack_token=Token
|
||||
settings.slack_domain=Dominio
|
||||
settings.slack_channel=Canale
|
||||
@@ -816,6 +876,8 @@ settings.add_key_success=La nuova deploy key '%s' è stata aggiunta con successo
|
||||
settings.deploy_key_deletion=Elimina Deploy Key
|
||||
settings.deploy_key_deletion_desc=Cancellando questa deploy key verrà rismosso ogni accesso relativo a questa repository. Vuoi continuare?
|
||||
settings.deploy_key_deletion_success=Deploy key eliminata con successo!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Sfoglia il codice sorgente
|
||||
diff.parent=parent
|
||||
@@ -853,12 +915,12 @@ release.cancel=Annulla
|
||||
release.publish=Pubblica Rilascio
|
||||
release.save_draft=Salva Bozza
|
||||
release.edit_release=Modifica Rilascio
|
||||
release.delete_release=Cancela questa Release
|
||||
release.delete_release=Cancella questa Release
|
||||
release.deletion=Eliminazione Release
|
||||
release.deletion_desc=Eliminando questa release cancellarai anche i tag Git corrispondenti. Vuoi continuare?
|
||||
release.deletion_success=La release è stata eliminata con successo!
|
||||
release.tag_name_already_exist=Un rilascio con questo tag esiste già.
|
||||
release.tag_name_invalid=Tag name is not valid.
|
||||
release.tag_name_invalid=Il nome del Tag non è valido.
|
||||
release.downloads=Download
|
||||
|
||||
[org]
|
||||
@@ -880,9 +942,8 @@ team_name_helper=Verrà usato questo nome per riferirsi a questo team nella conv
|
||||
team_desc_helper=In cosa consiste questo team?
|
||||
team_permission_desc=Quale livello di autorizzazione dovrebbe avere questa squadra?
|
||||
|
||||
form.name_reserved=Il nome organizzazione '%s' è riservato.
|
||||
form.name_pattern_not_allowed=La struttura del nome dell'organizzazione '%s' non è consentita.
|
||||
form.team_name_reserved=Team name '%s' is reserved.
|
||||
form.name_not_allowed=Organization name or pattern %q is not allowed.
|
||||
form.team_name_not_allowed=Team name or pattern %q is not allowed.
|
||||
|
||||
settings=Impostazioni
|
||||
settings.options=Opzioni
|
||||
@@ -954,12 +1015,19 @@ first_page=Prima
|
||||
last_page=Ultima
|
||||
total=Totale: %d
|
||||
|
||||
dashboard.build_info=Build Information
|
||||
dashboard.app_ver=Application version
|
||||
dashboard.git_version=Git version
|
||||
dashboard.go_version=Go version
|
||||
dashboard.build_time=Build time
|
||||
dashboard.build_commit=Build commit
|
||||
dashboard.statistic=Statistiche
|
||||
dashboard.operations=Operazioni
|
||||
dashboard.system_status=Stato del Monitor di Sistema
|
||||
dashboard.statistic_info=Il database di Gogs ha <b>%d</b> utenti, <b>%d</b> organizzazioni, <b>%d</b> chiavi pubbliche, <b>%d</b> repository, <b>%d</b> utenti che seguono, <b>%d</b> voti, <b>%d</b> azioni, <b>%d</b> accessi, <b>%d</b> problemi, <b>%d</b> commenti, <b>%d</b> account sociali, <b>%d</b> utenti seguiti, <b>%d</b> mirror, <b>%d</b> rilasci, <b>%d</b> fonti di accesso, <b>%d</b> webhook, <b>%d</b> traguardi, <b>%d</b> etichette, <b>%d</b> incarichi hook, <b>%d</b> team, <b>%d</b> attività di aggiornamento, <b>%d</b> allegati.
|
||||
dashboard.operation_name=Nome Operazione
|
||||
dashboard.operation_switch=Cambia
|
||||
dashboard.select_operation_to_run=Please select operation to run
|
||||
dashboard.operation_run=Esegui
|
||||
dashboard.clean_unbind_oauth=Pulire OAuthes non associati
|
||||
dashboard.clean_unbind_oauth_success=Tutti gli OAuthes non associati eliminati con successo.
|
||||
@@ -1049,13 +1117,14 @@ repos.private=Privati
|
||||
repos.watches=Segue
|
||||
repos.stars=Voti
|
||||
repos.issues=Problemi
|
||||
repos.size=Size
|
||||
repos.size=Dimensione
|
||||
|
||||
auths.auth_manage_panel=Pannello di configurazione dei meccanismi di autenticazione
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Aggiungi Nuova Origine
|
||||
auths.name=Nome
|
||||
auths.type=Tipo
|
||||
auths.enabled=Attivo
|
||||
auths.default=Default
|
||||
auths.updated=Aggiornato
|
||||
auths.auth_type=Tipo di autenticazione
|
||||
auths.auth_name=Nome di autenticazione
|
||||
@@ -1064,15 +1133,21 @@ auths.domain=Dominio
|
||||
auths.host=Host
|
||||
auths.port=Porta
|
||||
auths.bind_dn=Binda DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_password=Binda Password
|
||||
auths.bind_password_helper=Attenzione: Questa password è salvata in chiaro. Non usare su un acount con alti privilegi.
|
||||
auths.user_base=User Search Base
|
||||
auths.user_dn=DN dell'utente
|
||||
auths.attribute_username=Attributo username
|
||||
auths.attribute_username_placeholder=Se vuoto, verrà usato il nome di login dell'accesso.
|
||||
auths.attribute_name=Attributo Nome
|
||||
auths.attribute_name=First Name Attribute
|
||||
auths.attribute_surname=Attributo Cognome
|
||||
auths.attribute_mail=Attributo Email
|
||||
auths.verify_group_membership=Verifica gruppo di appartenenza
|
||||
auths.group_search_base_dn=Group Search Base DN
|
||||
auths.group_filter=Group Filter
|
||||
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
|
||||
auths.user_attribute_listed_in_group=User Attribute Listed in Group
|
||||
auths.attributes_in_bind=Fetch attributes in Bind DN context
|
||||
auths.filter=Fitro utente
|
||||
auths.admin_filter=Filtro Amministratore
|
||||
@@ -1086,9 +1161,9 @@ auths.enable_tls=Abilitare Crittografia TLS
|
||||
auths.skip_tls_verify=Salta verifica TLS
|
||||
auths.pam_service_name=Nome del Servizio PAM
|
||||
auths.enable_auto_register=Abilitare Registrazione Automatica
|
||||
auths.tips=Consigli
|
||||
auths.edit=Modifica impostazioni di autenticazione
|
||||
auths.activated=Questa Autenticazione è stata attivata
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Nuovo meccanismo di autenticazione '%s' aggiunto.
|
||||
auths.update_success=Parametro di autenticazione aggiornato.
|
||||
auths.update=Aggiornare le impostazioni di autenticazione
|
||||
@@ -1098,117 +1173,188 @@ auths.delete_auth_desc=Eliminazione del meccanismo di autenticazione. Continuare
|
||||
auths.still_in_used=Questo meccanismo di autenticazione è ancora attivo per alcuni utenti. Eliminare gli utenti o cambiare il loro meccanismo di autenticazione prima di ritentare.
|
||||
auths.deletion_success=Il meccanismo di autenticazione è stato eliminato!
|
||||
auths.login_source_exist=La fonte di autenticazione '%s' esiste già.
|
||||
auths.github_api_endpoint=API Endpoint
|
||||
|
||||
config.not_set=(non impostata)
|
||||
config.server_config=Configurazione Server
|
||||
config.app_name=Nome Applicazione
|
||||
config.app_ver=Versione Applicazione
|
||||
config.app_url=URL Applicazione
|
||||
config.domain=Dominio
|
||||
config.offline_mode=Modalità Offline
|
||||
config.disable_router_log=Disattivare Log del Router
|
||||
config.brand_name=Brand name
|
||||
config.run_user=Utente Esecutore
|
||||
config.run_mode=Modalità Esecuzione
|
||||
config.git_version=Versione Git
|
||||
config.static_file_root_path=Percorso Root del File Statico
|
||||
config.log_file_root_path=Percorso Root del File di Log
|
||||
config.reverse_auth_user=Autenticazione Utente Inversa
|
||||
config.server.external_url=External URL
|
||||
config.server.domain=Domain
|
||||
config.server.protocol=Protocol
|
||||
config.server.http_addr=HTTP address
|
||||
config.server.http_port=HTTP port
|
||||
config.server.cert_file=Certificate file
|
||||
config.server.key_file=Key file
|
||||
config.server.tls_min_version=Minimum TLS version
|
||||
config.server.unix_socket_permission=Unix socket permission
|
||||
config.server.local_root_url=Local root URL
|
||||
config.server.offline_mode=Offline mode
|
||||
config.server.disable_router_log=Disable router log
|
||||
config.server.enable_gzip=Abilita Gzip
|
||||
config.server.app_data_path=Application data path
|
||||
config.server.load_assets_from_disk=Load assets from disk
|
||||
config.server.landing_url=Landing URL
|
||||
|
||||
config.ssh_config=Configurazione SSH
|
||||
config.ssh_enabled=Attivo
|
||||
config.ssh_start_builtin_server=Avvia server builtin
|
||||
config.ssh_domain=Dominio
|
||||
config.ssh_port=Porta
|
||||
config.ssh_listen_port=Porta in ascolto
|
||||
config.ssh_root_path=Percorso Root
|
||||
config.ssh_key_test_path=Percorso chiave di test
|
||||
config.ssh_keygen_path=Percorso Keygen ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Verifica delle dimensioni minime della chiave
|
||||
config.ssh_minimum_key_sizes=Dimensioni minime della chiave
|
||||
config.ssh.enabled=Enabled
|
||||
config.ssh.domain=Exposed domain
|
||||
config.ssh.port=Exposed port
|
||||
config.ssh.root_path=Root path
|
||||
config.ssh.keygen_path=Keygen path
|
||||
config.ssh.key_test_path=Key test path
|
||||
config.ssh.minimum_key_size_check=Minimum key size check
|
||||
config.ssh.minimum_key_sizes=Minimum key sizes
|
||||
config.ssh.rewrite_authorized_keys_at_start=Rewrite "authorized_keys" at start
|
||||
config.ssh.start_builtin_server=Start builtin server
|
||||
config.ssh.listen_host=Listen host
|
||||
config.ssh.listen_port=Listen port
|
||||
config.ssh.server_ciphers=Server ciphers
|
||||
config.ssh.server_macs=Server MACs
|
||||
config.ssh.server_algorithms=Server algorithms
|
||||
|
||||
config.repo_config=Repository Configuration
|
||||
config.repo_root_path=Percorso Root del Repository
|
||||
config.script_type=Tipo di Script
|
||||
config.repo_force_private=Force Private
|
||||
config.max_creation_limit=Max Creation Limit
|
||||
config.preferred_licenses=Preferred Licenses
|
||||
config.disable_http_git=Disable HTTP Git
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
config.repo_config=Configurazione Repository
|
||||
config.repo.root_path=Root path
|
||||
config.repo.script_type=Script type
|
||||
config.repo.ansi_chatset=ANSI charset
|
||||
config.repo.force_private=Force private
|
||||
config.repo.max_creation_limit=Max creation limit
|
||||
config.repo.preferred_licenses=Preferred licenses
|
||||
config.repo.disable_http_git=Disable HTTP Git
|
||||
config.repo.enable_local_path_migration=Enable local path migration
|
||||
config.repo.enable_raw_file_render_mode=Enable raw file render mode
|
||||
config.repo.commits_fetch_concurrency=Commits fetch concurrency
|
||||
config.repo.editor.line_wrap_extensions=Editor line wrap extensions
|
||||
config.repo.editor.previewable_file_modes=Editor previewable file modes
|
||||
config.repo.upload.enabled=Upload enabled
|
||||
config.repo.upload.temp_path=Upload temporary path
|
||||
config.repo.upload.allowed_types=Upload allowed types
|
||||
config.repo.upload.file_max_size=Upload file size limit
|
||||
config.repo.upload.max_files=Upload files limit
|
||||
|
||||
config.db_config=Configurazione Database
|
||||
config.db_type=Tipo
|
||||
config.db_host=Host
|
||||
config.db_name=Nome
|
||||
config.db_user=Utente
|
||||
config.db_ssl_mode=Modalità SSL
|
||||
config.db_ssl_mode_helper=(solo per "postgres")
|
||||
config.db_path=Percorso
|
||||
config.db_path_helper=(per "sqlite3" e "tidb")
|
||||
config.db.type=Tipo
|
||||
config.db.host=Host
|
||||
config.db.name=Nome
|
||||
config.db.schema=Schema
|
||||
config.db.schema_helper=(for "postgres" only)
|
||||
config.db.user=Utente
|
||||
config.db.ssl_mode=modalità SSL
|
||||
config.db.ssl_mode_helper=(solo per "postgres")
|
||||
config.db.path=Percorso
|
||||
config.db.path_helper=(solo per "sqlite3")
|
||||
config.db.max_open_conns=Maximum open connections
|
||||
config.db.max_idle_conns=Maximum idle connections
|
||||
|
||||
config.service_config=Configurazione Servizio
|
||||
config.register_email_confirm=Richiedono Conferma dell'Email
|
||||
config.disable_register=Disabilita Registrazione
|
||||
config.show_registration_button=Mostra Pulsante Registrazione
|
||||
config.require_sign_in_view=Richiesto Accesso per Vedere
|
||||
config.mail_notify=Email di Notifica
|
||||
config.disable_key_size_check=Disabilita controllo sulle dimensioni minime della chiave
|
||||
config.enable_captcha=Abilita Captcha
|
||||
config.active_code_lives=Attiva Vita del Codice
|
||||
config.reset_password_code_lives=Reimpostare Password della Vita del Codice
|
||||
config.security_config=Security configuration
|
||||
config.security.login_remember_days=Login remember days
|
||||
config.security.cookie_remember_name=Remember cookie
|
||||
config.security.cookie_username=Username cookie
|
||||
config.security.cookie_secure=Enable secure cookie
|
||||
config.security.reverse_proxy_auth_user=Reverse proxy authentication header
|
||||
config.security.enable_login_status_cookie=Enable login status cookie
|
||||
config.security.login_status_cookie_name=Login status cookie
|
||||
config.security.local_network_allowlist=Local network allowlist
|
||||
|
||||
config.webhook_config=Configurazione Webhook
|
||||
config.queue_length=Lunghezza della coda
|
||||
config.deliver_timeout=Tempo Limite di Consegna
|
||||
config.skip_tls_verify=Salta verifiche TLS
|
||||
config.email_config=Email configuration
|
||||
config.email.enabled=Enabled
|
||||
config.email.subject_prefix=Subject prefix
|
||||
config.email.host=Host
|
||||
config.email.from=Da
|
||||
config.email.user=Utente
|
||||
config.email.disable_helo=Disattiva HELO
|
||||
config.email.helo_hostname=HELO hostname
|
||||
config.email.skip_verify=Skip certificate verify
|
||||
config.email.use_certificate=Use custom certificate
|
||||
config.email.cert_file=File certificato
|
||||
config.email.key_file=Key file
|
||||
config.email.use_plain_text=Usa testo semplice
|
||||
config.email.add_plain_text_alt=Add plain text alternative
|
||||
config.email.send_test_mail=Invia email di test
|
||||
config.email.test_mail_failed=Failed to send test email to '%s': %v
|
||||
config.email.test_mail_sent=Test email has been sent to '%s'.
|
||||
|
||||
config.mailer_config=Configurazione Mailer
|
||||
config.mailer_enabled=Attivo
|
||||
config.mailer_disable_helo=Disattiva HELO
|
||||
config.mailer_name=Nome
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Utente
|
||||
config.send_test_mail=Invia email di test
|
||||
config.test_mail_failed=Impossibile inviare mail a '%s': %v
|
||||
config.test_mail_sent=Una mail di prova è stata inviata a '%s'.
|
||||
config.auth_config=Authentication configuration
|
||||
config.auth_custom_logout_url=Custom logout URL
|
||||
config.auth.activate_code_lives=Activate code lives
|
||||
config.auth.reset_password_code_lives=Reset password code lives
|
||||
config.auth.require_email_confirm=Require email confirmation
|
||||
config.auth.require_sign_in_view=Require sign in view
|
||||
config.auth.disable_registration=Disable registration
|
||||
config.auth.enable_registration_captcha=Enable registration captcha
|
||||
config.auth.enable_reverse_proxy_authentication=Enable reverse proxy authentication
|
||||
config.auth.enable_reverse_proxy_auto_registration=Enable reverse proxy auto registration
|
||||
config.auth.reverse_proxy_authentication_header=Reverse proxy authentication header
|
||||
|
||||
config.oauth_config=Configurazione OAuth
|
||||
config.oauth_enabled=Attivo
|
||||
|
||||
config.cache_config=Configurazione Cache
|
||||
config.cache_adapter=Adattatore Cache
|
||||
config.cache_interval=Intervallo Cache
|
||||
config.cache_conn=Connessione Cache
|
||||
config.user_config=User configuration
|
||||
config.user.enable_email_notify=Enable email notification
|
||||
|
||||
config.session_config=Configurazione Sessione
|
||||
config.session_provider=Fornitore Sessione
|
||||
config.provider_config=Impostazioni Provider
|
||||
config.cookie_name=Nome del Cookie
|
||||
config.enable_set_cookie=Abilita Uso dei Cookie
|
||||
config.gc_interval_time=Intervallo di tempo della GC
|
||||
config.session_life_time=Durata Sessione
|
||||
config.https_only=Solo HTTPS
|
||||
config.cookie_life_time=Durata Cookie
|
||||
config.session.provider=Provider
|
||||
config.session.provider_config=Provider config
|
||||
config.session.cookie_name=Cookie
|
||||
config.session.https_only=Solo HTTPS
|
||||
config.session.gc_interval=GC interval
|
||||
config.session.max_life_time=Max life time
|
||||
config.session.csrf_cookie_name=Cookie CSRF
|
||||
|
||||
config.cache_config=Configurazione Cache
|
||||
config.cache.adapter=Adattatore
|
||||
config.cache.interval=Intervallo GC
|
||||
config.cache.host=Host
|
||||
|
||||
config.http_config=Configurazione HTTP
|
||||
config.http.access_control_allow_origin=Access control allow origin
|
||||
|
||||
config.attachment_config=Attachment configuration
|
||||
config.attachment.enabled=Attivo
|
||||
config.attachment.path=Percorso
|
||||
config.attachment.allowed_types=Allowed types
|
||||
config.attachment.max_size=Size limit
|
||||
config.attachment.max_files=Files limit
|
||||
|
||||
config.release_config=Release configuration
|
||||
config.release.attachment.enabled=Attachment enabled
|
||||
config.release.attachment.allowed_types=Attachment allowed types
|
||||
config.release.attachment.max_size=Attachment size limit
|
||||
config.release.attachment.max_files=Attachment files limit
|
||||
|
||||
config.picture_config=Configurazione Foto
|
||||
config.picture_service=Servizio foto
|
||||
config.disable_gravatar=Disabilita Gravatar
|
||||
config.enable_federated_avatar=Attiva Federated Avatars
|
||||
config.picture.avatar_upload_path=User avatar upload path
|
||||
config.picture.repo_avatar_upload_path=Repository avatar upload path
|
||||
config.picture.gravatar_source=Gravatar source
|
||||
config.picture.disable_gravatar=Disable Gravatar
|
||||
config.picture.enable_federated_avatar=Enable federated avatars
|
||||
|
||||
config.mirror_config=Mirror configuration
|
||||
config.mirror.default_interval=Default interval
|
||||
|
||||
config.webhook_config=Configurazione Webhook
|
||||
config.webhook.types=Types
|
||||
config.webhook.deliver_timeout=Deliver timeout
|
||||
config.webhook.skip_tls_verify=Skip TLS verify
|
||||
|
||||
config.git_config=Configurazione Git
|
||||
config.git_disable_diff_highlight=Disattiva evidenziazione delle differenze
|
||||
config.git_max_diff_lines=Numero massimo di righe di diff (per singolo file)
|
||||
config.git_max_diff_line_characters=Numero massimo di caratteri di diff (per singola riga)
|
||||
config.git_max_diff_files=Numero massimo di file diff mostrati
|
||||
config.git_gc_args=Parametri GC
|
||||
config.git_migrate_timeout=Timeout per la migrazione
|
||||
config.git_mirror_timeout=Timeoute per l'aggiornamento del mirror
|
||||
config.git_clone_timeout=Timeout per il clone
|
||||
config.git_pull_timeout=Timeout per il pull
|
||||
config.git_gc_timeout=Timeout per le operazioni di GC
|
||||
config.git.disable_diff_highlight=Disable diff syntax highlight
|
||||
config.git.max_diff_lines=Diff lines limit (for a single file)
|
||||
config.git.max_diff_line_characters=Diff characters limit (for a single line)
|
||||
config.git.max_diff_files=Diff files limit (for a single diff)
|
||||
config.git.gc_args=GC arguments
|
||||
config.git.migrate_timeout=Migration timeout
|
||||
config.git.mirror_timeout=Mirror fetch timeout
|
||||
config.git.clone_timeout=Clone timeout
|
||||
config.git.pull_timeout=Pull timeout
|
||||
config.git.gc_timeout=GC timeout
|
||||
|
||||
config.lfs_config=LFS configuration
|
||||
config.lfs.storage=Storage
|
||||
config.lfs.objects_path=Objects path
|
||||
|
||||
config.log_config=Configurazione Log
|
||||
config.log_mode=Mode
|
||||
config.log_options=Options
|
||||
config.log_file_root_path=Percorso Root del File di Log
|
||||
config.log_mode=Modalità
|
||||
config.log_options=Opzioni
|
||||
|
||||
monitor.cron=Incarici di cron
|
||||
monitor.name=Nome
|
||||
@@ -1237,7 +1383,6 @@ notices.delete_success=Gli avvisi di sistema sono stati successivamente eliminat
|
||||
|
||||
[action]
|
||||
create_repo=ha creato il repository <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=repository rinominato da <code>%[1]s</code> a <a href="%[2]s">[3]s</a>
|
||||
commit_repo=ha pushato nel <a href="%[1]s/src/%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Visualizza comparazione tra questi %d commit
|
||||
@@ -1254,6 +1399,10 @@ create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href=
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=ha pushato il tag <a href="%s/src/%s">%[2]s</a> a <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=fa
|
||||
@@ -1275,6 +1424,7 @@ months=%d mesi %s
|
||||
years=%d anni %s
|
||||
raw_seconds=secondi
|
||||
raw_minutes=minuti
|
||||
raw_hours=ore
|
||||
|
||||
[dropzone]
|
||||
default_message=Trascina i file qui o clicca per caricare.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -9,7 +9,6 @@ sign_out=로그아웃
|
||||
sign_up=가입하기
|
||||
register=가입하기
|
||||
website=웹 사이트
|
||||
version=버전
|
||||
page=페이지
|
||||
template=템플릿
|
||||
language=언어
|
||||
@@ -44,17 +43,22 @@ issues=이슈
|
||||
|
||||
cancel=취소
|
||||
|
||||
[status]
|
||||
page_not_found=페이지를 찾을 수 없음
|
||||
internal_server_error=내부 서버 오류
|
||||
|
||||
[install]
|
||||
install=설치
|
||||
title=첫 실행을 위한 설치단계
|
||||
docker_helper=Gogs를 Docker에서 운영하고 있다면 <a target="_blank" href="%s">안내</a>를 읽고 변경해 주세요!
|
||||
requite_db_desc=Gogs 는 MySQL, PostgreSQL, SQLite3, MSSQL 또는 TiDB 를 필요로 합니다.
|
||||
requite_db_desc=Gogs는 MySQL, PostgreSQL, SQLite3, TiDB (MySQL protocol)을 필요로 합니다.
|
||||
db_title=데이터베이스 설정
|
||||
db_type=데이터베이스 유형
|
||||
host=호스트
|
||||
user=사용자
|
||||
password=비밀번호
|
||||
db_name=데이터베이스 이름
|
||||
db_schema=스키마
|
||||
db_helper=MySQL에서는 utf8_general_ci 캐릭터셋으로 INNODB엔진을 이용해 주세요
|
||||
ssl_mode=SSL 모드
|
||||
path=경로
|
||||
@@ -75,15 +79,16 @@ domain_helper=Git SSH url에 영향을 미칩니다.
|
||||
ssh_port=SSH 포트
|
||||
ssh_port_helper=SSH서버가 실행되고 있는 포트를 입력하세요. 비워둘 경우 SSH를 사용하지 않습니다.
|
||||
use_builtin_ssh_server=내장 SSH 서버 사용
|
||||
use_builtin_ssh_server_popup=Start builtin SSH server for Git operations to distinguish from system SSH daemon.
|
||||
use_builtin_ssh_server_popup=시스템 SSH 디먼과 구별하기 위해 Git 작업을 위한 빌트인 SSH 서버를 시작하세요.
|
||||
http_port=HTTP 포트
|
||||
http_port_helper=포트 번호는 애플리케이션에서 열고 있습니다.
|
||||
app_url=애플리케이션 URL
|
||||
app_url_helper=이 작업은 HTTP/HTTPS 클론 URL과 이메일의 어딘가에 영향을 미칩니다.
|
||||
log_root_path=로그 경로
|
||||
log_root_path_helper=로그 파일을 쓸 디렉터리.
|
||||
enable_console_mode=Enable Console Mode
|
||||
enable_console_mode_popup=In addition to file mode, also print logs to console.
|
||||
enable_console_mode=콘솔 모드 활성화
|
||||
enable_console_mode_popup=파일 모드 외에 콘솔에 로그를 인쇄하세요.
|
||||
default_branch=기본 브랜치
|
||||
|
||||
optional_title=추가설정
|
||||
email_title=이메일 서비스 설정
|
||||
@@ -119,8 +124,10 @@ sqlite3_not_available=설치하신 버전은 SQLite3을 지원하지 않으므
|
||||
invalid_db_setting=데이터베이스 설정이 올바르지 않습니다: %v
|
||||
invalid_repo_path=저장소 루트 경로가 올바르지 않습니다: %v
|
||||
run_user_not_match=실행 유저가 현재 유저가 아닙니다: %s -> %s
|
||||
smtp_host_missing_port=SMTP 호스트 포트가 주소에 없습니다.
|
||||
invalid_smtp_from=SMTP 보낸 사람 필드가 유효하지 않습니다: %v
|
||||
save_config_failed=설정을 저장할 수 없습니다: %v
|
||||
init_failed=프로그램을 초기화하는데 실패하였습니다: %v
|
||||
invalid_admin_setting=관리자 계정 설정이 잘못되었습니다: %v
|
||||
install_success=환영합니다! Gogs를 선택해 주셔서 감사합니다.
|
||||
invalid_log_root_path=로그 루트 경로가 올바르지 않습니다: %v
|
||||
@@ -150,6 +157,8 @@ register_hepler_msg=이미 계정을 가지고 계신가요? 로그인하세요!
|
||||
social_register_hepler_msg=계정을 가지고 계신가요? 연결하세요!
|
||||
disable_register_prompt=죄송합니다, 가입이 비활성화 되어있습니다. 사이트 관리자에게 문의 해주세요.
|
||||
disable_register_mail=죄송합니다. 메일 등록이 비활성화 되었습니다.
|
||||
auth_source=인증 소스 편집
|
||||
local=로컬
|
||||
remember_me=자동 로그인
|
||||
forgot_password=비밀번호 찾기
|
||||
forget_password=비밀번호를 잊으셨습니까?
|
||||
@@ -168,6 +177,14 @@ reset_password_helper=이곳을 눌러 비밀번호를 재설정
|
||||
password_too_short=비밀번호의 길이는 6글자 미만일 수 없습니다.
|
||||
non_local_account=Gogs 계정이 아니면 암호를 변경할 수 없습니다.
|
||||
|
||||
login_two_factor=2단계 인증
|
||||
login_two_factor_passcode=인증 패스코드
|
||||
login_two_factor_enter_recovery_code=2단계 복구 코드를 입력하세요
|
||||
login_two_factor_recovery=2단계 복구
|
||||
login_two_factor_recovery_code=복구 코드
|
||||
login_two_factor_enter_passcode=2단계 패스코드를 입력하세요
|
||||
login_two_factor_invalid_recovery_code=복구 코드가 사용 중이거나 유효하지 않습니다.
|
||||
|
||||
[mail]
|
||||
activate_account=계정을 활성화하세요
|
||||
activate_email=이메일 주소 확인
|
||||
@@ -203,7 +220,7 @@ Content=컨텐츠
|
||||
require_error=` 비어 있을 수 없습니다.`
|
||||
alpha_dash_error=`은(는) 숫자, 알파벳, 대시(-_) 문자로만 구성되어야 합니다.`
|
||||
alpha_dash_dot_error=` 숫자, 알파벳, 점(.), 대시(-_) 문자로만 구성되어야 합니다.`
|
||||
alpha_dash_dot_slash_error=` must be valid alpha or numeric or dash(-_) or dot characters or slashes.`
|
||||
alpha_dash_dot_slash_error=` 은(는) 알파벳, 숫자, 대시(-_), 점, 슬래시로만 구성되어야 합니다.`
|
||||
size_error=` %s 글자여야 합니다.`
|
||||
min_size_error=` 최소 %s 글자여야 합니다.`
|
||||
max_size_error=` %s 글자를 넘을 수 없습니다.`
|
||||
@@ -220,6 +237,7 @@ org_name_been_taken=이미 사용중인 조직 이름입니다.
|
||||
team_name_been_taken=이미 사용중인 팀 이름입니다.
|
||||
email_been_used=이미 사용중인 이메일 주소입니다.
|
||||
username_password_incorrect=사용자 이름이나 비밀번호가 올바르지 않습니다.
|
||||
auth_source_mismatch=선택 인증 소스는 사용자와 연결 됩니다.
|
||||
enterred_invalid_repo_name=입력한 저장소 이름이 올바른지 확인하십시오.
|
||||
enterred_invalid_owner_name=입력한 사용자 이름이 올바른지 확인하십시오.
|
||||
enterred_invalid_password=입력한 비밀번호가 올바른지 확인하십시오.
|
||||
@@ -247,15 +265,15 @@ following=팔로우 중
|
||||
follow=추적하기
|
||||
unfollow=추적해제
|
||||
|
||||
form.name_reserved=사용자 이름 '%s'는 예약되어 있습니다.
|
||||
form.name_pattern_not_allowed=사용자 이름 패턴 '%s'은 허용 되지 않습니다.
|
||||
form.name_not_allowed=사용자 이름 또는 패턴 %q 은(는) 허용되지 않습니다.
|
||||
|
||||
[settings]
|
||||
profile=프로필
|
||||
password=비밀번호
|
||||
avatar=아바타
|
||||
ssh_keys=SSH 키
|
||||
repos=Repositories
|
||||
security=보안
|
||||
repos=저장소
|
||||
orgs=조직
|
||||
applications=애플리케이션
|
||||
delete=계정 삭제
|
||||
@@ -299,6 +317,7 @@ delete_email=삭제
|
||||
email_deletion=이메일 삭제
|
||||
email_deletion_desc=이메일 주소를 삭제하면 당신의 계정과 연관된 정보도 함께 삭제됩니다. 계속 하시겠습니까?
|
||||
email_deletion_success=이메일 주소를 성공적으로 삭제되하였습니다!
|
||||
email_deletion_primary=기본 이메일 주소를 삭제할 수 없습니다.
|
||||
add_new_email=새 이메일 주소 추가
|
||||
add_email=이메일 추가
|
||||
add_email_confirmation_sent=새로운 이메일 주소 인증이 '%s'로 발송되었습니다. %d시간 안에 확인 절차를 완료하셔야 합니다.
|
||||
@@ -324,14 +343,37 @@ no_activity=최근 활동 없음
|
||||
key_state_desc=이 키는 최근 1주일 동안 사용된 적이 있습니다.
|
||||
token_state_desc=이 토큰은 최근 1주일 동안 사용된 적이 있습니다.
|
||||
|
||||
manage_social=SNS계정 관리
|
||||
social_desc=연결된 SNS계정 리스트입니다. 직접 로그인 하지 않은 계정은 연결을 해제하세요.
|
||||
unbind=해제
|
||||
unbind_success=SNS계정이 연결 해제되었습니다.
|
||||
two_factor=2단계 인증
|
||||
two_factor_status=상태:
|
||||
two_factor_on=켜기
|
||||
two_factor_off=끄기
|
||||
two_factor_enable=활성화
|
||||
two_factor_disable=비활성화
|
||||
two_factor_view_recovery_codes=<a href="%s%s">복구 코드</a>를 안전한 장소에 저장해 두십시오. 인증 애플리케이션에 접근할 수 없을때 사용할 수 있습니다.
|
||||
two_factor_http=HTTP/HTTPS 작업에 더이상 평문 사용자명과 비밀번호를 사용할 수 없습니다. <a href="%[1]s%[2]s">개인 액세스 토큰</a>을 생성후 사용해 주세요. 예. <code>%[3]s</code>.
|
||||
two_factor_enable_title=2단계 인증 활성화
|
||||
two_factor_scan_qr=인증 애플리케이션으로 이 이미지를 스캔하세요:
|
||||
two_factor_or_enter_secret=또는 이 비밀키를 입력하세요:
|
||||
two_factor_then_enter_passcode=그리고 코드를 입력하세요:
|
||||
two_factor_verify=확인
|
||||
two_factor_invalid_passcode=입력한 코드가 올바르지 않습니다. 다시 시도해 주세요!
|
||||
two_factor_reused_passcode=입력하신 비밀번호가 이미 사용되였습니.다른 비밀번호를 사용해보십시오!.
|
||||
two_factor_enable_error=2단계 인증 활성화 실패: %v
|
||||
two_factor_enable_success=2단계 인증이 성공적으로 활성화되었습니다!
|
||||
two_factor_recovery_codes_title=2단계 인증 복구 코드
|
||||
two_factor_recovery_codes_desc=복구 코드는 당신이 2단계 인증 프로그램에 접근할 수 없을때 사용합니다. 각 코드들은 한 번만 사용될 수 있습니다. <b>이 코드들은 안전한 장소에 보관하세요.</b>
|
||||
two_factor_regenerate_recovery_codes=복구 코드 재생성
|
||||
two_factor_regenerate_recovery_codes_error=복구 코드 재생성 실패: %v
|
||||
two_factor_regenerate_recovery_codes_success=성공적으로 새로운 복구 코드가 생성되었습니다!
|
||||
two_factor_disable_title=2단계 인증 비활성화
|
||||
two_factor_disable_desc=2단계 인증을 끄면 보안 수준이 낮아집니다. 계속하시겠습니까?
|
||||
two_factor_disable_success=2단계 인증이 성공적으로 비활성화되었습니다!
|
||||
|
||||
manage_access_token=개인 액세스 토큰 관리
|
||||
generate_new_token=새 토큰을 생성
|
||||
tokens_desc=Gogs Api에 액세스 하는 데 사용할 수 있는 토큰입니다.
|
||||
access_token_tips=개인 액세스 토큰은 사용자 이름 또는 비밀번호로 사용할 수 있습니다. Git 애플리케이션에서는 'x-access-token'을 사용자 이름으로 사용하고, 개인 액세스 토큰을 비밀번호로 사용하는 것이 권장됩니다.
|
||||
|
||||
new_token_desc=각 토큰은 당신의 모든 권한을 행사할 수 있습니다.
|
||||
token_name=토큰 이름
|
||||
generate_token=토큰 생성
|
||||
@@ -340,15 +382,16 @@ delete_token=삭제
|
||||
access_token_deletion=개인 액세스 토큰 삭제
|
||||
access_token_deletion_desc=이 토큰을 사용하는 애플리케이션의 접근권한 또한 삭제됩니다. 계속 하시겠습니까?
|
||||
delete_token_success=액세스 토큰이 삭제되었습니다. 애플리케이션의 업데이트도 잊지 마세요.
|
||||
token_name_exists=같은 이름의 토큰이 이미 존재합니다.
|
||||
|
||||
orgs.none=당신은 어떤 조직의 구성원도 아닙니다.
|
||||
orgs.leave_title=조직 떠나기
|
||||
orgs.leave_desc=조직을 떠난 후에는 모든 리포지토리와 팀에 액세스 할 수 없게 됩니다. 계속 하시겠습니까?
|
||||
|
||||
repos.leave=Leave
|
||||
repos.leave_title=Leave repository
|
||||
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
|
||||
repos.leave_success=You have left repository '%s' successfully!
|
||||
repos.leave=나가기
|
||||
repos.leave_title=저장소 나가기
|
||||
repos.leave_desc=이 페지를 떠나면 저장소에 액세스할수 없게 됩니다. 계속하시겠습니까?
|
||||
repos.leave_success=당신은 저장소 '%s' 에서 성공적으로 탈퇴하였습니다.!
|
||||
|
||||
delete_account=계정 삭제
|
||||
delete_prompt=당신의 계정을 삭제합니다. 완료된 후에는 <strong>취소할 수 없습니다</strong>.
|
||||
@@ -361,7 +404,9 @@ owner=소유자
|
||||
repo_name=저장소 이름
|
||||
repo_name_helper=좋은 저장소 이름은 짧고 기억하기 좋은 유니크한 키워드로 이루어 집니다.
|
||||
visibility=가시성
|
||||
unlisted=비공개
|
||||
visiblity_helper=이 저장소는 <span class="ui red text">비공개</span> 저장소입니다
|
||||
unlisted_helper=이 저장소는 <span class="ui red text">비공개</span> 저장소입니다.
|
||||
visiblity_helper_forced=사이트 관리자가 모든 저장소를 <span class="ui red text">비공개</span>로 변경하였습니다.
|
||||
visiblity_fork_helper=(이 값의 변경은 모든 포크에 영향을 줍니다)
|
||||
clone_helper=클론하는데에 도움이 필요하면 <a target="_blank" href="%s">Help</a>에 방문하세요.
|
||||
@@ -387,10 +432,11 @@ mirror_last_synced=마지막으로 동기화됨
|
||||
watchers=주시하고 있는 사람들
|
||||
stargazers=별을 준 사람들
|
||||
forks=포크
|
||||
repo_description_helper=저장소 설명.최대 512길이의 문자열이 가능합니다.
|
||||
repo_description_length=가능한 문자열입니다.
|
||||
|
||||
form.reach_limit_of_creation=소유자가 저장소 만들기 최대 제한에 (%d개) 도달했습니다.
|
||||
form.name_reserved=저장소 이름 '%s'은 예약 되어 있습니다.
|
||||
form.name_pattern_not_allowed=저장소 이름 패턴 '%s'은 허용 되지 않습니다.
|
||||
form.name_not_allowed=저장소명 또는 패턴 %q 은(는) 허용되지 않습니다.
|
||||
|
||||
need_auth=인증 필요
|
||||
migrate_type=마이그레이션 유형
|
||||
@@ -401,6 +447,7 @@ migrate.clone_address_desc=HTTP/HTTPS/GIT URL일 수 있습니다.
|
||||
migrate.clone_address_desc_import_local=로컬 서버 경로를 기준으로 저장소를 마이그레이션 할 수도 있습니다.
|
||||
migrate.permission_denied=로컬 저장소는 가져오기를 할 수 없습니다.
|
||||
migrate.invalid_local_path=잘못된 로컬 경로입니다. 존재하지 않는 경로거나 폴더가 아닙니다.
|
||||
migrate.clone_address_resolved_to_blocked_local_address=복제 주소는 암묵적으로 차단된 로컬 네트워크 주소로 확인되었습니다.
|
||||
migrate.failed=마이그레이션 실패: %v
|
||||
|
||||
mirror_from=의 미러
|
||||
@@ -420,7 +467,7 @@ quick_guide=퀵 가이드
|
||||
clone_this_repo=이 저장소 복제
|
||||
create_new_repo_command=커맨드 라인에서 새 저장소 만들기
|
||||
push_exist_repo=커맨드 라인에서 기존 저장소 푸시하기
|
||||
bare_message=This repository does not have any content yet.
|
||||
bare_message=이 저장소에는 아직 내용이 없습니다.
|
||||
|
||||
files=파일
|
||||
branch=브렌치
|
||||
@@ -433,7 +480,7 @@ pulls=풀 리퀘스트
|
||||
labels=레이블
|
||||
milestones=마일스톤
|
||||
commits=커밋
|
||||
git_branches=Branches
|
||||
git_branches=브랜치
|
||||
releases=릴리즈
|
||||
file_raw=Raw
|
||||
file_history=히스토리
|
||||
@@ -442,12 +489,14 @@ file_permalink=고유링크
|
||||
file_too_large=이 파일은 표시하기엔 너무 큽니다.
|
||||
video_not_supported_in_browser=이 브라우저는 HTML5 비디오 태그를 지원하지 않습니다.
|
||||
|
||||
branches.overview=Overview
|
||||
branches.active_branches=Active Branches
|
||||
branches.stale_branches=Stale Branches
|
||||
branches.all=All Branches
|
||||
branches.updated_by=Updated %[1]s by %[2]s
|
||||
branches.change_default_branch=Change Default Branch
|
||||
branches.overview=개요
|
||||
branches.active_branches=활성 브랜치
|
||||
branches.stale_branches=오래된 브랜치
|
||||
branches.all=모든 브랜치
|
||||
branches.updated_by=%[2]s이 %[1]s를 업데이트
|
||||
branches.change_default_branch=기본 브랜치 변경
|
||||
branches.default_deletion_not_allowed=Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed=Cannot delete a protected branch.
|
||||
|
||||
editor.new_file=파일 생성
|
||||
editor.upload_file=파일 업로드
|
||||
@@ -484,6 +533,7 @@ editor.file_changed_while_editing=편집을 시작한 이후 파일 내용이
|
||||
editor.file_already_exists=이 저장소에 이름이 '%s'인 파일이 이미 존재합니다.
|
||||
editor.no_changes_to_show=표시할 변경사항이 없습니다.
|
||||
editor.fail_to_update_file=파일 '%s'를 변경/추가 하는데 실패하였습니다. 에러: %v
|
||||
editor.fail_to_delete_file=파일 '%s'를 삭제하는데 실패하였습니다. 오유: %v
|
||||
editor.add_subdir=하위 디렉토리 추가...
|
||||
editor.unable_to_upload_files=파일 '%s'를 업로드하는데 실패하였습니다. 에러: %v
|
||||
editor.upload_files_to_dir=파일 업로드 '%s'
|
||||
@@ -586,6 +636,7 @@ pulls.compare_compare=비교
|
||||
pulls.filter_branch=Filter Branch
|
||||
pulls.no_results=결과 없음
|
||||
pulls.nothing_to_compare=Base 와 head 브랜치가 동일해서 비교할 게 없습니다.
|
||||
pulls.nothing_merge_base=두 브런치의 리력이 완전히 다르므로 비교할수 없습니다.
|
||||
pulls.has_pull_request=`이 두 타겟 사이엔 이미 풀 리퀘스트가 있습니다:<a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=풀 리퀘스트 생성
|
||||
pulls.title_desc=<code>%[2]s</code> 에서 <code>%[3]s</code> 로 %[1]d commits 를 머지하려 합니다
|
||||
@@ -602,6 +653,9 @@ pulls.is_checking=아직 컨플릭트 여부 체크 중입니다, 잠시 후 이
|
||||
pulls.can_auto_merge_desc=이 풀리퀘스트는 자동적으로 머지될 수 있습니다.
|
||||
pulls.cannot_auto_merge_desc=컨플릭이 존재해서 이 풀리퀘스트는 자동을 머지될 수 없습니다.
|
||||
pulls.cannot_auto_merge_helper=컨플릭을 해결하려면 수동으로 머지해 주십시오.
|
||||
pulls.create_merge_commit=합치기커밋 생성
|
||||
pulls.rebase_before_merging=병합 하기 전에 리베이스
|
||||
pulls.commit_description=커밋설명
|
||||
pulls.merge_pull_request=풀리퀘스트 머지
|
||||
pulls.open_unmerged_pull_exists=`같은 리파지토리에서 같은 머지 정보로 만들어진 풀리퀘스트 (#%d) 가 이미 오픈 상태이고 머지를 기다리고 있기 때문에 다시 열기 작업을 할 수 없습니다.`
|
||||
pulls.delete_branch=브랜치 삭제
|
||||
@@ -657,11 +711,11 @@ settings.collaboration.write=쓰기
|
||||
settings.collaboration.read=읽기
|
||||
settings.collaboration.undefined=미정의
|
||||
settings.branches=브랜치
|
||||
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
|
||||
settings.branches_bare=당신은 빈 저장소에 대한 브런치를 관리할수 없습니다. 먼저 저장소에 내용을 푸쉬하십시오.
|
||||
settings.default_branch=기본 브랜치
|
||||
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
|
||||
settings.default_branch_desc=기본 브랜치는 코드 커밋, 풀 리퀘스트 및 온라인 편집을 위한 "기본" 브랜치로 간주됩니다.
|
||||
settings.update=업데이트
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_unsupported=서버의 Git 버전에서는 기본 브랜치 변경이 지원되지 않습니다.
|
||||
settings.update_default_branch_success=이 레포지토리의 기본 브랜치가 성공적으로 설정되었습니다!
|
||||
settings.protected_branches=보호된 브랜치
|
||||
settings.protected_branches_desc=보호된 브랜치는 force 푸시, 실수로 인한 코드 삭제를 방지하며 코드 커미터를 화이트리스트 합니다.
|
||||
@@ -673,12 +727,12 @@ settings.protect_this_branch_desc=Force 푸시와 삭제를 비활성화합니
|
||||
settings.protect_require_pull_request=직접 push 를 하지 않고 Pull Request 를 필요로 하도록 합니다.
|
||||
settings.protect_require_pull_request_desc=이 브랜치에 직접 푸시를 하는 것을 막고 싶다면 이 옵션을 활성화하세요. 커밋은 다른 비보호 브랜치에 푸시되어야 하며 이 브랜치에는 Pull Request 를 통해 병합될 것입니다.
|
||||
settings.protect_whitelist_committers=이 브랜치에 푸시할 수 있는 유저
|
||||
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
|
||||
settings.protect_whitelist_committers_desc=이 브랜치에 직접 푸시할 수 있는 허용 목록에 사람 또는 팀을 추가합니다. 허용 목록에 있는 사용자는 풀 리퀘스트 확인을 거치지 않습니다.
|
||||
settings.protect_whitelist_users=이 브랜치에 푸시를 할 수 있는 유저
|
||||
settings.protect_whitelist_search_users=유저 검색
|
||||
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
|
||||
settings.protect_whitelist_search_teams=Search teams
|
||||
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
|
||||
settings.protect_whitelist_teams=이 브랜치에 푸시할 수 있는 팀의 멤버들
|
||||
settings.protect_whitelist_search_teams=팀 검색
|
||||
settings.update_protect_branch_success=브랜치의 보호 옵션이 성공적으로 업데이트되었습니다!
|
||||
settings.hooks=Webhooks
|
||||
settings.githooks=Git Hooks
|
||||
settings.basic_settings=기본 설정
|
||||
@@ -691,13 +745,13 @@ settings.change_reponame_prompt=이 변경은 이 저장소와 연관된 링크
|
||||
settings.advanced_settings=고급 설정
|
||||
settings.wiki_desc=위키 시스템 활성화
|
||||
settings.use_internal_wiki=내장 위키 사용
|
||||
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
|
||||
settings.allow_public_wiki_desc=저장소가 비공개되어 있으면 위키에 공개적으로 접속할 수 있도록 허용하기
|
||||
settings.use_external_wiki=외부 위키 사용하기
|
||||
settings.external_wiki_url=외부 위키 URL
|
||||
settings.external_wiki_url_desc=탭을 클릭하면 URL로 리다이렉트됩니다.
|
||||
settings.issues_desc=이슈 추적기를 사용하도록 설정
|
||||
settings.use_internal_issue_tracker=내장된 경량 이슈 트레커를 사용
|
||||
settings.allow_public_issues_desc=Allow public access to issues when repository is private
|
||||
settings.allow_public_issues_desc=저장소가 비공개인 경우 이슈에 공개적으로 접속할 수 있도록 허용하기
|
||||
settings.use_external_issue_tracker=외부 이슈 트래커 사용하기
|
||||
settings.external_tracker_url=외부 이슈 트래커 URL
|
||||
settings.external_tracker_url_desc=방문자는 탭을 클릭하면 URL로 리다이렉트 됩니다.
|
||||
@@ -706,9 +760,11 @@ settings.tracker_issue_style=외부 이슈 트래커 명명 스타일:
|
||||
settings.tracker_issue_style.numeric=숫자
|
||||
settings.tracker_issue_style.alphanumeric=문자 숫자
|
||||
settings.tracker_url_format_desc=<code>{user} {repo} {index}</code> 사용자 명, 저장소 명, 이슈 인덱스를 사용하여 표시자를 사용할 수 있습니다.
|
||||
settings.pulls_desc=끌어오기 요청을 공개적으로 기여받을 수 있도록 활성화합니다.
|
||||
settings.pulls_desc=다른 저장소와 브랜치 간의 기여를 수용할 수 있도록 풀 리퀘스트 활성화
|
||||
settings.pulls.ignore_whitespace=공백 변경 무시
|
||||
settings.pulls.allow_rebase_merge=커밋을 머지하기 위해 리베이스 사용 허용
|
||||
settings.danger_zone=위험 설정
|
||||
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
|
||||
settings.cannot_fork_to_same_owner=본인 소유의 저장소를 본인 명의로 포크할 수 없습니다.
|
||||
settings.new_owner_has_same_repo=새로운 소유자가 같은 이름의 저장소를 이미 가지고 있습니다. 다른 이름을 선택해주세요.
|
||||
settings.convert=일반 리파지토리로 변환
|
||||
settings.convert_desc=이 미러를 일반 리파지토리로 변환할 수 없습니다. 반대로는 할 수 없습니다.
|
||||
@@ -727,7 +783,7 @@ settings.wiki_deletion_success=저장소의 Wiki 데이터가 성공적으로
|
||||
settings.delete=이 저장소 삭제
|
||||
settings.delete_desc=저장소를 지우고 나면 되돌릴 수 없습니다. 다시 한번 확인하세요.
|
||||
settings.delete_notices_1=- 이 작업은 취소할 수 <strong>없습니다.</strong>
|
||||
settings.delete_notices_2=- 이 작업은 저장소의 모든 항목을 영구적으로 삭제합니다. Git 데이터, 이슈, 주석 및 공동 작업자의 액세스를 포함합니다.
|
||||
settings.delete_notices_2=- 이 작업을 수행하면 Git 데이터, 이슈, 댓글, 협업자 액세스 등 이 저장소의 모든 내용이 영구적으로 삭제됩니다.
|
||||
settings.delete_notices_fork_1=- 모든 포크들은 삭제 후에도 독립적으로 유지됩니다.
|
||||
settings.deletion_success=저장소가 성공적으로 삭제 되었습니다!
|
||||
settings.update_settings_success=저장소 옵션이 성공적으로 업데이트 되었습니다.
|
||||
@@ -743,21 +799,25 @@ settings.collaborator_deletion_desc=이 사용자는 더 이상 이 저장소의
|
||||
settings.remove_collaborator_success=공동작업자가 삭제 되었습니다.
|
||||
settings.search_user_placeholder=사용자 검색...
|
||||
settings.org_not_allowed_to_be_collaborator=조직을 공동 작업자로 추가할 수 없습니다.
|
||||
settings.add_webhook=Webhook 추가
|
||||
settings.hooks_desc=웹후크는 기본적인 HTTP POST 이벤트 트리거입니다. Gogs에서 무슨 일이 발생할 때마다, 지정한 대상 호스트에 알림을 보냅니다. <a target="_blank" href="%s">웹후크 안내서</a>에서 자세히 알아보십시오.
|
||||
settings.webhooks.add_new=새 웹훅 추가
|
||||
settings.webhooks.choose_a_type=유형 선택...
|
||||
settings.add_webhook=Webhook 추가
|
||||
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=Webhook 테스트가 delivery 큐에 추가되었습니다. delivery 기록에서 나오기까지 몇 초의 시간이 걸릴 것입니다.
|
||||
settings.webhook.redelivery=Redelivery
|
||||
settings.webhook.redelivery_success=Hook task '%s' has been readded to delivery queue. It may take few seconds to update delivery status in history.
|
||||
settings.webhook.redelivery=재전송
|
||||
settings.webhook.redelivery_success=웹훅 작업 '%s'이(가) 다시 전달 큐에 추가되었습니다. 전달 상태는 이력에서 잠시 후 반영됩니다.
|
||||
settings.webhook.request=요청
|
||||
settings.webhook.response=응답
|
||||
settings.webhook.headers=제목
|
||||
settings.webhook.payload=페이로드
|
||||
settings.webhook.body=본문
|
||||
settings.webhook.err_cannot_parse_payload_url=페이로드 URL을 구문 분석할 수 없습니다: %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address=로컬 네트워크 주소로 확인된 페이로드 URL이 암묵적으로 차단되었습니다.
|
||||
settings.githooks_desc=Git Hooks는 Git 자체에서 제공되며, 아래 목록에서 지원되는 후크 파일을 편집하여 사용자 정의 작업을 수행 할 수 있습니다.
|
||||
settings.githook_edit_desc=후크가 비활성인 경우 샘플 콘텐츠가 표시됩니다. 내용을 빈 값으로 두면 이 훅은 비활성화됩니다.
|
||||
settings.githook_name=Hook 이름
|
||||
@@ -767,7 +827,7 @@ settings.add_webhook_desc=Gogs는 발생한 이벤트와 관련하여 지정한
|
||||
settings.payload_url=페이로드 URL
|
||||
settings.content_type=컨텐츠 타입
|
||||
settings.secret=비밀
|
||||
settings.secret_desc=Secret will be sent as SHA256 HMAC hex digest of payload via <code>X-Gogs-Signature</code> header.
|
||||
settings.secret_desc=시크릿은 <code>X-Gogs-Signature</code> 헤더를 통해 페이로드의 SHA256 HMAC 16진수 다이제스트로 전송됩니다.
|
||||
settings.slack_username=사용자 이름
|
||||
settings.slack_icon_url=아이콘 URL
|
||||
settings.slack_color=색
|
||||
@@ -777,20 +837,20 @@ settings.event_send_everything=<strong>모든 것</strong>이 필요합니다.
|
||||
settings.event_choose=필요한 것을 선택해주세요.
|
||||
settings.event_create=생성
|
||||
settings.event_create_desc=브랜치 또는 태그를 생성합니다.
|
||||
settings.event_delete=Delete
|
||||
settings.event_delete_desc=Branch or tag deleted
|
||||
settings.event_fork=Fork
|
||||
settings.event_fork_desc=Repository forked
|
||||
settings.event_delete=삭제
|
||||
settings.event_delete_desc=브랜치나 태그 삭제됨
|
||||
settings.event_fork=포크
|
||||
settings.event_fork_desc=저장소 포크됨
|
||||
settings.event_push=푸시
|
||||
settings.event_push_desc=깃 저장소로 푸시
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_issues=이슈
|
||||
settings.event_issues_desc=이슈가 생성됨, 닫힘, 다시 열림, 편집됨, 담당자 지정 또는 해제, 라벨 업데이트 또는 제거, 마일스톤 지정 또는 해제됨.
|
||||
settings.event_pull_request=끌어오기 요청
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.event_issue_comment=이슈 댓글
|
||||
settings.event_issue_comment_desc=이슈 댓글이 작성, 편집 또는 삭제되었습니다.
|
||||
settings.event_release=릴리즈
|
||||
settings.event_release_desc=저장소에 릴리즈가 출시되었습니다.
|
||||
settings.active=활성
|
||||
settings.active_helper=후크를 트리거하면 이벤트에 대한 세부 정보도 전달됩니다.
|
||||
settings.add_hook_success=새로운 웹훅이 생성되었습니다.
|
||||
@@ -801,6 +861,7 @@ settings.recent_deliveries=최근의 Deliveries
|
||||
settings.hook_type=훅 타입
|
||||
settings.add_slack_hook_desc=저장소에 <a href="%s">슬랙</a>연동을 추가
|
||||
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.slack_token=토큰
|
||||
settings.slack_domain=도메인
|
||||
settings.slack_channel=채널
|
||||
@@ -817,6 +878,8 @@ settings.add_key_success=새로운 배포 키 '%s'가 성공적으로 추가 되
|
||||
settings.deploy_key_deletion=배포 키 삭제
|
||||
settings.deploy_key_deletion_desc=이 배포키를 삭제하면 이 저장소와 관련된 모든 접근 권한이 삭제됩니다. 계속 하시겠습니까?
|
||||
settings.deploy_key_deletion_success=배포 키가 성공적으로 삭제되었습니다!
|
||||
settings.description_desc=저장소 설명입니다. 최대 512길이의 문자열이 가능합니다.
|
||||
settings.description_length=사용 가능한 문자열
|
||||
|
||||
diff.browse_source=소스 검색
|
||||
diff.parent=부모
|
||||
@@ -881,9 +944,8 @@ team_name_helper=대화에서 이 팀을 언급할 때 이 이름을 사용합
|
||||
team_desc_helper=이 팀은 무엇입니까?
|
||||
team_permission_desc=이 팀이 가진 권한이 무엇입니까?
|
||||
|
||||
form.name_reserved=조직이름 '%s'는 예약되어있습니다.
|
||||
form.name_pattern_not_allowed=조직이름 패턴 '%s'는 허용되지 않았습니다.
|
||||
form.team_name_reserved=Team name '%s' is reserved.
|
||||
form.name_not_allowed=Organization name or pattern %q is not allowed.
|
||||
form.team_name_not_allowed=Team name or pattern %q is not allowed.
|
||||
|
||||
settings=설정
|
||||
settings.options=옵션
|
||||
@@ -955,12 +1017,19 @@ first_page=처음
|
||||
last_page=마지막
|
||||
total=총: %d
|
||||
|
||||
dashboard.build_info=빌드정보
|
||||
dashboard.app_ver=애플리케이션 버전
|
||||
dashboard.git_version=Git 버전
|
||||
dashboard.go_version=Go 버전
|
||||
dashboard.build_time=태그 만들기
|
||||
dashboard.build_commit=빌드 커밋
|
||||
dashboard.statistic=통계
|
||||
dashboard.operations=작업
|
||||
dashboard.system_status=시스템 모니터 상태
|
||||
dashboard.statistic_info=Gogs 데이터베이스에는 <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.select_operation_to_run=Please select operation to run
|
||||
dashboard.operation_run=실행
|
||||
dashboard.clean_unbind_oauth=연결되지 않은 OAuth들을 정리
|
||||
dashboard.clean_unbind_oauth_success=연결되지 않은 모든 OAuth들이 성공적으로 삭제되었습니다.
|
||||
@@ -1050,13 +1119,14 @@ repos.private=비공개
|
||||
repos.watches=지켜보기
|
||||
repos.stars=Stars
|
||||
repos.issues=이슈
|
||||
repos.size=Size
|
||||
repos.size=크기
|
||||
|
||||
auths.auth_manage_panel=인증 관리 패널
|
||||
auths.auth_sources=인증 소스
|
||||
auths.new=새로운 소스를 추가
|
||||
auths.name=이름
|
||||
auths.type=유형
|
||||
auths.enabled=활성화됨
|
||||
auths.default=기본값
|
||||
auths.updated=업데이트됨
|
||||
auths.auth_type=인증 유형
|
||||
auths.auth_name=인증 이름
|
||||
@@ -1065,15 +1135,21 @@ auths.domain=도메인
|
||||
auths.host=호스트
|
||||
auths.port=포트
|
||||
auths.bind_dn=DN 연결
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_password=비밀번호 연결
|
||||
auths.bind_password_helper=경고: 이 암호는 일반 텍스트로 저장됩니다. 높은 권한의 계정을 사용하지 마십시오.
|
||||
auths.user_base=사용자 검색 기준
|
||||
auths.user_dn=사용자 DN
|
||||
auths.attribute_username=유저 명 속성
|
||||
auths.attribute_username_placeholder=사용자 이름에 대한 로그인 폼 필드 값을 사용하려면 비워 둡니다.
|
||||
auths.attribute_name=이름 속성
|
||||
auths.attribute_name=첫번째 이름 속성
|
||||
auths.attribute_surname=성씨 속성
|
||||
auths.attribute_mail=이메일 속성
|
||||
auths.verify_group_membership=그룹 구성원 자격을 확인
|
||||
auths.group_search_base_dn=그룹 설정 Base DN
|
||||
auths.group_filter=그룹 필터
|
||||
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
|
||||
auths.user_attribute_listed_in_group=User Attribute Listed in Group
|
||||
auths.attributes_in_bind=DN 컨텍스트에서 속성을 가져와 연결합니다.
|
||||
auths.filter=사용자 필터
|
||||
auths.admin_filter=관리자 필터
|
||||
@@ -1087,9 +1163,9 @@ auths.enable_tls=TLS 암호화 활성화
|
||||
auths.skip_tls_verify=TLS 검증 건너뛰기
|
||||
auths.pam_service_name=PAM 서비스 명
|
||||
auths.enable_auto_register=자동 등록을 활성화
|
||||
auths.tips=도움말
|
||||
auths.edit=인증 설정 편집
|
||||
auths.activated=이 인증정보는 활성화되어있습니다.
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=새로운 인증 '%s'가 성공적으로 추가 되었습니다.
|
||||
auths.update_success=인증 설정이 성공적으로 변경되었습니다.
|
||||
auths.update=인증 설정 업데이트
|
||||
@@ -1099,117 +1175,188 @@ auths.delete_auth_desc=이 인증이 삭제됩니다. 정말로 진행하시겠
|
||||
auths.still_in_used=이 인증은 아직 몇몇 사용자들이 사용하고 있습니다, 먼저 사용자들의 로그인 유형을 삭제하거나 변경해주십시오.
|
||||
auths.deletion_success=인증이 성공적으로 삭제 되었습니다!
|
||||
auths.login_source_exist=로그인 소스 '%s'는 이미 존재합니다.
|
||||
auths.github_api_endpoint=API 끝점
|
||||
|
||||
config.not_set=(설정되지 않음)
|
||||
config.server_config=서버 설정
|
||||
config.app_name=애플리케이션 이름
|
||||
config.app_ver=응용 프로그램 버전
|
||||
config.app_url=애플리케이션 URL
|
||||
config.domain=도메인
|
||||
config.offline_mode=오프라인 모드
|
||||
config.disable_router_log=라우터 로그 비활성화
|
||||
config.brand_name=브랜드 이름
|
||||
config.run_user=데몬 실행 계정
|
||||
config.run_mode=실행 모드
|
||||
config.git_version=Git 버전
|
||||
config.static_file_root_path=정적 파일 최상위 경로
|
||||
config.log_file_root_path=로그 파일 최상위 경로
|
||||
config.reverse_auth_user=역방향 사용자 인증
|
||||
config.server.external_url=외부 URL
|
||||
config.server.domain=도메인
|
||||
config.server.protocol=프로토콜
|
||||
config.server.http_addr=HTTP 주소
|
||||
config.server.http_port=HTTP 포트
|
||||
config.server.cert_file=인증서 파일
|
||||
config.server.key_file=키 파일
|
||||
config.server.tls_min_version=최소 TLS 버전
|
||||
config.server.unix_socket_permission=Unix 소켓 권한
|
||||
config.server.local_root_url=로컬 최상위 URL
|
||||
config.server.offline_mode=오프라인 모드
|
||||
config.server.disable_router_log=라우터 로그 비활성화
|
||||
config.server.enable_gzip=Gzip 활성화
|
||||
config.server.app_data_path=애플리케이션 데이터 경로
|
||||
config.server.load_assets_from_disk=디스크에서 요소 불러오기
|
||||
config.server.landing_url=랜딩 URL
|
||||
|
||||
config.ssh_config=SSH 설정
|
||||
config.ssh_enabled=활성화됨
|
||||
config.ssh_start_builtin_server=빌트인 서버 시작
|
||||
config.ssh_domain=도메인
|
||||
config.ssh_port=포트
|
||||
config.ssh_listen_port=수신 대기 포트
|
||||
config.ssh_root_path=최상위 경로
|
||||
config.ssh_key_test_path=주 테스트 경로
|
||||
config.ssh_keygen_path=키 생성 ('ssh-keygen') 경로
|
||||
config.ssh_minimum_key_size_check=최소 키 사이즈 검사
|
||||
config.ssh_minimum_key_sizes=최소 키 사이즈
|
||||
config.ssh.enabled=활성화됨
|
||||
config.ssh.domain=노출된 도메인
|
||||
config.ssh.port=노출 포트
|
||||
config.ssh.root_path=최상위 경로
|
||||
config.ssh.keygen_path=키 생성 경로
|
||||
config.ssh.key_test_path=키 테스트 경로
|
||||
config.ssh.minimum_key_size_check=최소 키 크기 검사
|
||||
config.ssh.minimum_key_sizes=최소 키 사이즈
|
||||
config.ssh.rewrite_authorized_keys_at_start=Rewrite "authorized_keys" at start
|
||||
config.ssh.start_builtin_server=빌트인 서버 시작
|
||||
config.ssh.listen_host=수신 대기 호스트
|
||||
config.ssh.listen_port=수신 대기 포트
|
||||
config.ssh.server_ciphers=서버 암호화
|
||||
config.ssh.server_macs=Server MACs
|
||||
config.ssh.server_algorithms=Server algorithms
|
||||
|
||||
config.repo_config=Repository Configuration
|
||||
config.repo_root_path=저장소 최상위 경로
|
||||
config.script_type=스크립트 유형
|
||||
config.repo_force_private=Force Private
|
||||
config.max_creation_limit=Max Creation Limit
|
||||
config.preferred_licenses=Preferred Licenses
|
||||
config.disable_http_git=Disable HTTP Git
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
config.repo_config=저장소 설정
|
||||
config.repo.root_path=최상위 경로
|
||||
config.repo.script_type=스크립트 유형
|
||||
config.repo.ansi_chatset=ANSI 문자열
|
||||
config.repo.force_private=비공개 강제
|
||||
config.repo.max_creation_limit=최대 생성 제한
|
||||
config.repo.preferred_licenses=선호 라이선스
|
||||
config.repo.disable_http_git=HTTP Git 비활성화
|
||||
config.repo.enable_local_path_migration=로컬 경로 마이그레이션 활성화
|
||||
config.repo.enable_raw_file_render_mode=raw 파일 렌더링 모드 활성화
|
||||
config.repo.commits_fetch_concurrency=Commits fetch concurrency
|
||||
config.repo.editor.line_wrap_extensions=편집기 줄 바꿈 확장
|
||||
config.repo.editor.previewable_file_modes=Editor previewable file modes
|
||||
config.repo.upload.enabled=업로드 활성화됨
|
||||
config.repo.upload.temp_path=임시 경로 업로드
|
||||
config.repo.upload.allowed_types=허용되는 유형 업로드
|
||||
config.repo.upload.file_max_size=업로드 파일 크기 제한
|
||||
config.repo.upload.max_files=업로드 파일 제한
|
||||
|
||||
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.db.type=유형
|
||||
config.db.host=호스트
|
||||
config.db.name=이름
|
||||
config.db.schema=스키마
|
||||
config.db.schema_helper=("postgres" 전용)
|
||||
config.db.user=사용자
|
||||
config.db.ssl_mode=SSL 모드
|
||||
config.db.ssl_mode_helper=("postgres" 전용)
|
||||
config.db.path=경로
|
||||
config.db.path_helper={"sqlite3" 전용)
|
||||
config.db.max_open_conns=Maximum open connections
|
||||
config.db.max_idle_conns=Maximum idle connections
|
||||
|
||||
config.service_config=서비스 설정
|
||||
config.register_email_confirm=이메일 확인 필수
|
||||
config.disable_register=등록 비활성화
|
||||
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.security_config=보안 설정
|
||||
config.security.login_remember_days=로그인 기억 날짜
|
||||
config.security.cookie_remember_name=쿠키 기억하기
|
||||
config.security.cookie_username=사용자 이름 쿠키
|
||||
config.security.cookie_secure=보안 쿠키 활성화
|
||||
config.security.reverse_proxy_auth_user=Reverse proxy authentication header
|
||||
config.security.enable_login_status_cookie=로그인 상태 쿠키 활성화
|
||||
config.security.login_status_cookie_name=로그인 상태 쿠키
|
||||
config.security.local_network_allowlist=Local network allowlist
|
||||
|
||||
config.webhook_config=웹훅 설정
|
||||
config.queue_length=큐 길이
|
||||
config.deliver_timeout=시간 제한 사용
|
||||
config.skip_tls_verify=TLS 확인 건너뛰기
|
||||
config.email_config=이메일 설정
|
||||
config.email.enabled=활성화됨
|
||||
config.email.subject_prefix=제목 접두어
|
||||
config.email.host=호스트
|
||||
config.email.from=보내는 사람
|
||||
config.email.user=사용자
|
||||
config.email.disable_helo=HELO 비활성화
|
||||
config.email.helo_hostname=HELO 호스트 이름
|
||||
config.email.skip_verify=인증서 검증 건너뛰기
|
||||
config.email.use_certificate=커스텀 인증서 사용하기
|
||||
config.email.cert_file=인증서 파일
|
||||
config.email.key_file=키 파일
|
||||
config.email.use_plain_text=평문 텍스트 사용
|
||||
config.email.add_plain_text_alt=평문 텍스트 대체 추가
|
||||
config.email.send_test_mail=테스트 이메일 보내기
|
||||
config.email.test_mail_failed=Failed to send test email to '%s': %v
|
||||
config.email.test_mail_sent='%s'로 테스트 이메일을 보냈습니다.
|
||||
|
||||
config.mailer_config=메일러 설정
|
||||
config.mailer_enabled=활성화됨
|
||||
config.mailer_disable_helo=HELO 비활성화
|
||||
config.mailer_name=이름
|
||||
config.mailer_host=호스트
|
||||
config.mailer_user=사용자
|
||||
config.send_test_mail=테스트 이메일 보내기
|
||||
config.test_mail_failed='%s'로 테스트 이메일을 보내는데 실패하였습니다.: %v
|
||||
config.test_mail_sent='%s'로 테스트 이메일을 보냈습니다.
|
||||
config.auth_config=Authentication configuration
|
||||
config.auth_custom_logout_url=Custom logout URL
|
||||
config.auth.activate_code_lives=Activate code lives
|
||||
config.auth.reset_password_code_lives=Reset password code lives
|
||||
config.auth.require_email_confirm=이메일 인증 필요
|
||||
config.auth.require_sign_in_view=Require sign in view
|
||||
config.auth.disable_registration=등록 비활성화
|
||||
config.auth.enable_registration_captcha=등록시 CAPTCHA 사용
|
||||
config.auth.enable_reverse_proxy_authentication=Enable reverse proxy authentication
|
||||
config.auth.enable_reverse_proxy_auto_registration=Enable reverse proxy auto registration
|
||||
config.auth.reverse_proxy_authentication_header=Reverse proxy authentication header
|
||||
|
||||
config.oauth_config=OAuth 설정
|
||||
config.oauth_enabled=활성화됨
|
||||
|
||||
config.cache_config=캐시 설정
|
||||
config.cache_adapter=캐시 어댑터
|
||||
config.cache_interval=캐시 간격
|
||||
config.cache_conn=캐시 연결
|
||||
config.user_config=User configuration
|
||||
config.user.enable_email_notify=이메일 알림 활성화
|
||||
|
||||
config.session_config=세션 설정
|
||||
config.session_provider=세션 공급자
|
||||
config.provider_config=공급자 설정
|
||||
config.cookie_name=쿠키 이름
|
||||
config.enable_set_cookie=쿠키 활성화
|
||||
config.gc_interval_time=GC 인터벌 시간
|
||||
config.session_life_time=세션 수명
|
||||
config.https_only=HTTPS만
|
||||
config.cookie_life_time=쿠키 수명
|
||||
config.session.provider=공급자
|
||||
config.session.provider_config=공급자 설정
|
||||
config.session.cookie_name=쿠키
|
||||
config.session.https_only=HTTPS만
|
||||
config.session.gc_interval=GC 간격
|
||||
config.session.max_life_time=Max life time
|
||||
config.session.csrf_cookie_name=CSRF 쿠키
|
||||
|
||||
config.cache_config=캐시 설정
|
||||
config.cache.adapter=Adapter
|
||||
config.cache.interval=GC 간격
|
||||
config.cache.host=호스트
|
||||
|
||||
config.http_config=HTTP 설정
|
||||
config.http.access_control_allow_origin=Access control allow origin
|
||||
|
||||
config.attachment_config=첨부 파일 설정
|
||||
config.attachment.enabled=활성화됨
|
||||
config.attachment.path=경로
|
||||
config.attachment.allowed_types=허용 유형
|
||||
config.attachment.max_size=크기 제한
|
||||
config.attachment.max_files=파일 제한
|
||||
|
||||
config.release_config=릴리즈 설정
|
||||
config.release.attachment.enabled=첨부 파일 활성화됨
|
||||
config.release.attachment.allowed_types=허용되는 첨부 파일 유형
|
||||
config.release.attachment.max_size=첨부 파일 크기 제한
|
||||
config.release.attachment.max_files=첨부 파일 제한
|
||||
|
||||
config.picture_config=이미지 설정
|
||||
config.picture_service=이미지 서비스
|
||||
config.disable_gravatar=Gravatar 사용안함
|
||||
config.enable_federated_avatar=연합 아바타 사용
|
||||
config.picture.avatar_upload_path=사용자 아바타 업로드 경로
|
||||
config.picture.repo_avatar_upload_path=Repository avatar upload path
|
||||
config.picture.gravatar_source=Gravatar source
|
||||
config.picture.disable_gravatar=Gravatar 비활성화
|
||||
config.picture.enable_federated_avatar=Enable federated avatars
|
||||
|
||||
config.mirror_config=미러 설정
|
||||
config.mirror.default_interval=기본 간격
|
||||
|
||||
config.webhook_config=웹훅 설정
|
||||
config.webhook.types=유형
|
||||
config.webhook.deliver_timeout=배달 제한 시간
|
||||
config.webhook.skip_tls_verify=TLS 검증 건너뛰기
|
||||
|
||||
config.git_config=깃 설정
|
||||
config.git_disable_diff_highlight=변경 사항 구문 강조 비활성화
|
||||
config.git_max_diff_lines=변경사항 최대 표시 줄 수 (단일 파일에 대해)
|
||||
config.git_max_diff_line_characters=변경사항 최대 표시 문자 수 (단일 행에 대해)
|
||||
config.git_max_diff_files=변경사항 최대 파일 개 수 (표시 되는)
|
||||
config.git_gc_args=가비지 콜렉션 인수
|
||||
config.git_migrate_timeout=마이그레이션 제한 시간
|
||||
config.git_mirror_timeout=미러 업데이트 시간 제한
|
||||
config.git_clone_timeout=복제 작업 시간 제한
|
||||
config.git_pull_timeout=끌어오기 작업 시간 제한
|
||||
config.git_gc_timeout=가비지 콜렉션 작업 시간 제한
|
||||
config.git.disable_diff_highlight=Disable diff syntax highlight
|
||||
config.git.max_diff_lines=Diff lines limit (for a single file)
|
||||
config.git.max_diff_line_characters=Diff characters limit (for a single line)
|
||||
config.git.max_diff_files=Diff files limit (for a single diff)
|
||||
config.git.gc_args=GC 인수
|
||||
config.git.migrate_timeout=마이그레이션 제한 시간
|
||||
config.git.mirror_timeout=미러 페치 제한 시간
|
||||
config.git.clone_timeout=클론 제한 시간
|
||||
config.git.pull_timeout=풀 제한 시간
|
||||
config.git.gc_timeout=GC 제한 시간
|
||||
|
||||
config.lfs_config=LFS 구성
|
||||
config.lfs.storage=저장소
|
||||
config.lfs.objects_path=Objects path
|
||||
|
||||
config.log_config=로그 설정
|
||||
config.log_mode=Mode
|
||||
config.log_options=Options
|
||||
config.log_file_root_path=로그 파일 최상위 경로
|
||||
config.log_mode=모드
|
||||
config.log_options=설정
|
||||
|
||||
monitor.cron=Cron 작업
|
||||
monitor.name=이름
|
||||
@@ -1238,7 +1385,6 @@ notices.delete_success=시스템 알림들이 성공적으로 삭제되었습니
|
||||
|
||||
[action]
|
||||
create_repo=저장소를 만들었습니다. <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=<code>%[1]s에서</code>에서 <a href="%[2]s"> %[3]s</a>으로 저장소 이름을 바꾸었습니다.
|
||||
commit_repo=<a href="%[1]s">%[4]s</a>에서 <a href="%[1]s/src/%[2]s">%[3]s</a>으로 푸시함
|
||||
compare_commits=이 %d개의 커밋에 대한 비교 보기
|
||||
@@ -1254,7 +1400,11 @@ merge_pull_request=`병합된 끌어오기 요청 <a href="%s/pulls/%s"> %s #%[2
|
||||
create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=태그 <a href="%s/src/%s">%[2]s</a>를 <a href="%[1]s">%[3]s</a>로 푸시함
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=<a href="%[1]s">%[3]s</a>에서 code>%[2]s</code> 태그 삭제됨
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=전
|
||||
@@ -1276,6 +1426,7 @@ months=%d 달 %s
|
||||
years=%d 년 %s
|
||||
raw_seconds=초
|
||||
raw_minutes=분
|
||||
raw_hours=시간
|
||||
|
||||
[dropzone]
|
||||
default_message=여기에 파일을 끌어 놓거나 클릭하여 업로드하세요.
|
||||
|
||||
@@ -9,7 +9,6 @@ sign_out=Izrakstīties
|
||||
sign_up=Reģistrēties
|
||||
register=Reģistrēties
|
||||
website=Mājas lapa
|
||||
version=Versija
|
||||
page=Lapa
|
||||
template=Sagatave
|
||||
language=Valoda
|
||||
@@ -44,22 +43,27 @@ issues=Problēmas
|
||||
|
||||
cancel=Atcelt
|
||||
|
||||
[status]
|
||||
page_not_found=Page Not Found
|
||||
internal_server_error=Internal Server Error
|
||||
|
||||
[install]
|
||||
install=Instalācija
|
||||
title=Instalācijas soļi pirmo reizi palaižot
|
||||
docker_helper=Ja Gogs tiek lietots zem Docker, izlasiet uzmanīgi <a target="_blank" href="%s">vadlīnijas</a>, pirms ko maināt šajā lapā!
|
||||
requite_db_desc=Gogs requires MySQL, PostgreSQL, SQLite3, MSSQL or TiDB.
|
||||
requite_db_desc=Gogs requires MySQL, PostgreSQL, SQLite3 or TiDB (via MySQL protocol).
|
||||
db_title=Datu bāzes iestatījumi
|
||||
db_type=Datu bāzes veids
|
||||
host=Resursdators
|
||||
user=Lietotājs
|
||||
password=Parole
|
||||
db_name=Datu bāzes nosaukums
|
||||
db_schema=Schema
|
||||
db_helper=Nepieciešams izmantot MySQL INNODB dzini ar rakstzīmju kopu utf8_general_ci.
|
||||
ssl_mode=SSL režīms
|
||||
path=Ceļš
|
||||
sqlite_helper=The file path of SQLite3 database. <br>Please use absolute path when you start as service.
|
||||
err_empty_db_path=SQLite3 database path cannot be empty.
|
||||
sqlite_helper=Faila ceļs uz SQLite3 datu bāzi. <br>Norādiet absolūtu ceļu, kad laižat kā servisu.
|
||||
err_empty_db_path=SQLite3 datu bāzes ceļš nevar būt tukšs.
|
||||
no_admin_and_disable_registration=Reģistrāciju nevar atslēgt, kamēr nav izveidots administratora konts.
|
||||
err_empty_admin_password=Administratora kontam ir obligāti jānorāda parole.
|
||||
|
||||
@@ -74,16 +78,17 @@ domain=Domēns
|
||||
domain_helper=Tas ietekmē SSH klonēšanas URL.
|
||||
ssh_port=SSH ports
|
||||
ssh_port_helper=Porta numurs, kuru izmanto Jūsu SSH serveris, atstājiet tukšu, ja nevēlaties izmantot SSH.
|
||||
use_builtin_ssh_server=Use Builtin SSH Server
|
||||
use_builtin_ssh_server_popup=Start builtin SSH server for Git operations to distinguish from system SSH daemon.
|
||||
use_builtin_ssh_server=Izmantot iebūvēto SSH serveri
|
||||
use_builtin_ssh_server_popup=Startēt iebūvēto SSH serveri Git darbībām, lai atšķirtu no sistēmas SSH servisa.
|
||||
http_port=HTTP ports
|
||||
http_port_helper=Porta numurs pēc kura lietojumprogrammai būs iespējams pieslēgties.
|
||||
app_url=Lietotnes URL
|
||||
app_url_helper=Tas ietekmē HTTP/HTTPS klonēšanas URL un e-pasta saturā izsūtītās saites.
|
||||
log_root_path=Žurnalizēšanas direktorija
|
||||
log_root_path_helper=Direktorija, kurā tiks glabāti žurnāla faili.
|
||||
enable_console_mode=Enable Console Mode
|
||||
enable_console_mode_popup=In addition to file mode, also print logs to console.
|
||||
enable_console_mode=Iespējot konsoles režīmu
|
||||
enable_console_mode_popup=Papildus faila režīmam, papildus rakstīt žurnāla ierakstus konsolē.
|
||||
default_branch=Default Branch
|
||||
|
||||
optional_title=Neobligātie iestatījumi
|
||||
email_title=E-pasta pakalpojuma iestatījumi
|
||||
@@ -119,8 +124,10 @@ sqlite3_not_available=Jūsu versija neatbalsta SQLite3, lūdzu lejupielādējiet
|
||||
invalid_db_setting=Datu bāzes iestatījums nav pareizs: %v
|
||||
invalid_repo_path=Repozitorija atrašanās vieta ir nekorekta: %v
|
||||
run_user_not_match=Izpildes lietotājs nav pašreizējais lietotājs: %s -> %s
|
||||
invalid_smtp_from=SMTP From field is not valid: %v
|
||||
smtp_host_missing_port=SMTP adresē nav norādīts ports.
|
||||
invalid_smtp_from=SMTP sūtītāja lauks ir nekorekts: %v
|
||||
save_config_failed=Neizdevās saglabāt konfigurāciju: %v
|
||||
init_failed=Failed to initialize application: %v
|
||||
invalid_admin_setting=Nekorekts admin konta iestatījums: %v
|
||||
install_success=Laipni lūdzam! Mēs priecājamies, ka Jūs izvēlaties Gogs, patīkamu lietošanu!
|
||||
invalid_log_root_path=Norādītā žurnalizēšanas direktorija ir kļūdaina: %v
|
||||
@@ -141,7 +148,7 @@ issues.in_your_repos=Jūsu repozitorijos
|
||||
[explore]
|
||||
repos=Repozitoriji
|
||||
users=Lietotāji
|
||||
organizations=Organizations
|
||||
organizations=Organizācijas
|
||||
search=Meklēt
|
||||
|
||||
[auth]
|
||||
@@ -150,6 +157,8 @@ register_hepler_msg=Jau ir konts? Pieraksties tagad!
|
||||
social_register_hepler_msg=Jau ir konts? Sasaisti tagad!
|
||||
disable_register_prompt=Atvainojiet, reģistrācija ir atspējota. Lūdzu, sazinieties ar vietnes administratoru.
|
||||
disable_register_mail=Atvainojiet, reģistrācijas e-pasta apstiprināšana ir atspējota.
|
||||
auth_source=Autentificēšanas avots
|
||||
local=Local
|
||||
remember_me=Atcerēties mani
|
||||
forgot_password=Aizmirsu paroli
|
||||
forget_password=Aizmirsi paroli?
|
||||
@@ -168,6 +177,14 @@ reset_password_helper=Nospiediet šeit, lai atjaunotu paroli
|
||||
password_too_short=Paroles garums nedrīkst būt mazāks par 6.
|
||||
non_local_account=Tikai lokālie konti var nomainīt savu paroli Gogs.
|
||||
|
||||
login_two_factor=Divu faktoru autentifikācija
|
||||
login_two_factor_passcode=Autentifikācijas kods
|
||||
login_two_factor_enter_recovery_code=Ievadiet divu faktoru atjaunošanas kodu
|
||||
login_two_factor_recovery=Divu faktoru atjaunošana
|
||||
login_two_factor_recovery_code=Atjaunošanas kods
|
||||
login_two_factor_enter_passcode=Ievadiet divu faktoru kodu
|
||||
login_two_factor_invalid_recovery_code=Atjaunošanas kods jau ir izmantots vai nav pareizs.
|
||||
|
||||
[mail]
|
||||
activate_account=Lūdzu, aktivizējiet savu kontu
|
||||
activate_email=Apstipriniet savu e-pasta adresi
|
||||
@@ -203,7 +220,7 @@ Content=Saturs
|
||||
require_error=` nedrīkst būt tukšs.`
|
||||
alpha_dash_error=` drīkst saturēt tikai latīņu alfabēta burtus, ciparus vai domuzīmes (-_).`
|
||||
alpha_dash_dot_error=` drīkst saturēt tikai latīņu alfabēta burtus, ciparus, domuzīmes (-_) vai punktu.`
|
||||
alpha_dash_dot_slash_error=` must be valid alpha or numeric or dash(-_) or dot characters or slashes.`
|
||||
alpha_dash_dot_slash_error=` drīkst saturēt tikai latīņu alfabēta burtus, ciparus, domuzīmes (-_), slīpsvītru vai punktu.`
|
||||
size_error=` jābūt %s simbolus garam.`
|
||||
min_size_error=` jabūt vismaz %s simbolu garumā.`
|
||||
max_size_error=` jabūt ne mazāk kā %s simbolu garumā.`
|
||||
@@ -220,6 +237,7 @@ org_name_been_taken=Organizācijas nosaukums ir jau aizņemts.
|
||||
team_name_been_taken=Komandas nosaukums ir jau aizņemts.
|
||||
email_been_used=E-pasta adrese jau tiek izmantota.
|
||||
username_password_incorrect=Lietotājvārds vai parole nav pareiza.
|
||||
auth_source_mismatch=Izvēlētais autentificēšanas avots nav saistīts ar lietotāju.
|
||||
enterred_invalid_repo_name=Lūdzu, pārliecinieties, vai ievadītā repozitorija nosaukums ir pareizs.
|
||||
enterred_invalid_owner_name=Lūdzu, pārliecinieties, vai ievadītā īpašnieka vārds ir pareizs.
|
||||
enterred_invalid_password=Lūdzu pārliecinieties, vai Jūsu ievadītā parole ir pareiza.
|
||||
@@ -247,15 +265,15 @@ following=Seko
|
||||
follow=Sekot
|
||||
unfollow=Nesekot
|
||||
|
||||
form.name_reserved=Lietotāja vārds '%s' jau ir aizņemts.
|
||||
form.name_pattern_not_allowed=Lietotāja vārds '%s' nav atļauts.
|
||||
form.name_not_allowed=User name or pattern %q is not allowed.
|
||||
|
||||
[settings]
|
||||
profile=Profils
|
||||
password=Parole
|
||||
avatar=Profila attēls
|
||||
ssh_keys=SSH atslēgas
|
||||
repos=Repositories
|
||||
security=Drošība
|
||||
repos=Repozitoriji
|
||||
orgs=Organizācijas
|
||||
applications=Lietotnes
|
||||
delete=Dzēst kontu
|
||||
@@ -299,6 +317,7 @@ delete_email=Dzēst
|
||||
email_deletion=E-pasta dzēšana
|
||||
email_deletion_desc=Dzēšot šo e-pasta adresi, tiks dzēsta arī visa ar to saistītā informācija no Jūsu konta. Vai vēlaties turpināt?
|
||||
email_deletion_success=E-pasta adrese ir veiksmīgi izdzēsta!
|
||||
email_deletion_primary=Cannot delete primary email address.
|
||||
add_new_email=Pievienot jaunu e-pasta adresi
|
||||
add_email=Pievienot e-pastu
|
||||
add_email_confirmation_sent=Jauns apstiprinājuma e-pasts tika nosūtīts uz '%s', pārbaudiet savu e-pastu tuvāko %d stundu laikā, lai pabeigtu apstiprināšanas procesu.
|
||||
@@ -324,14 +343,36 @@ no_activity=Nav nesenas aktivitātes
|
||||
key_state_desc=Šī atslēga tika izmantota pēdējo 7 dienu laikā
|
||||
token_state_desc=Šis talons tika izmantots pēdējo 7 dienu laikā
|
||||
|
||||
manage_social=Pārvaldīt piesaistītos sociālos kontus
|
||||
social_desc=Šeit tiek attēloti visi sociālie konti, kas ir piesaistīti Jūsu kontam. Dzēsiet visus, kurus Jūs neatpazīstat.
|
||||
unbind=Atsaistīt
|
||||
unbind_success=Sociālais konts tika atsaistīts.
|
||||
two_factor=Divu faktoru autentifikācija
|
||||
two_factor_status=Statuss:
|
||||
two_factor_on=Ieslēgts
|
||||
two_factor_off=Izslēgts
|
||||
two_factor_enable=Iespējot
|
||||
two_factor_disable=Atspējot
|
||||
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
|
||||
two_factor_http=HTTP/HTTPS darbībām vairs nav iespējams izmantot tikai lietotāja vārdu un paroli. Izveidojiet un izmantojiet <a href="%[1]s%[2]s">Personīgo piekļuves talonu</a> kā pilnvaru, piemēram, <code>%[3]s</code>.
|
||||
two_factor_enable_title=Iespējot divu faktoru autentifikāciju
|
||||
two_factor_scan_qr=Please use your authentication application to scan the image:
|
||||
two_factor_or_enter_secret=Vai ievadiet noslēpumu:
|
||||
two_factor_then_enter_passcode=Pēc tam ievadiet kodu:
|
||||
two_factor_verify=Pārbaudīt
|
||||
two_factor_invalid_passcode=Ievadītais piekļuves kods nav derīgs. Lūdzu mēģiniet vēlreiz!
|
||||
two_factor_reused_passcode=Ievadītais piekļuves kods jau ir izmantots. Lūdzu mēģiniet citu!
|
||||
two_factor_enable_error=Divu faktoru autentifikācijas iespējošana neizdevās: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
two_factor_recovery_codes_desc=Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
|
||||
two_factor_regenerate_recovery_codes=Regenerate Recovery Codes
|
||||
two_factor_regenerate_recovery_codes_error=Regenerate recovery codes failed: %v
|
||||
two_factor_regenerate_recovery_codes_success=New recovery codes has been generated successfully!
|
||||
two_factor_disable_title=Atspējot divu faktoru autentifikāciju
|
||||
two_factor_disable_desc=Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
|
||||
two_factor_disable_success=Divu faktoru autentificēšana ir atspējota!
|
||||
|
||||
manage_access_token=Pārvaldīt personīgos piekļuves talonus
|
||||
generate_new_token=Ģenerēt jaunu talonu
|
||||
tokens_desc=Taloni, kurus esat uzģenerējuši, kas var tikt izmantoti, lai piekļūtu Gogs API.
|
||||
access_token_tips=The personal access token may be used as either username or password. It is recommended to use the "x-access-token" as the username and the personal access token as the password for Git applications.
|
||||
new_token_desc=Pašlaik visiem taloniem ir pilna piekļuve Jūsu kontam.
|
||||
token_name=Talona nosaukums
|
||||
generate_token=Ģenerēt talonu
|
||||
@@ -340,15 +381,16 @@ delete_token=Dzēst
|
||||
access_token_deletion=Personīgā piekļuves talona dzēšana
|
||||
access_token_deletion_desc=Dzēšot personīgo piekļuves talonu, tiks liegta piekļuve aplikācijām, kas to izmanto. Vai vēlaties turpināt?
|
||||
delete_token_success=Personīgās piekļuves talons veiksmīgi izdzēsts! Neaizmirstiet nomainīt uz citu aplikācijās, kas to izmantoja.
|
||||
token_name_exists=Token with same name already exists.
|
||||
|
||||
orgs.none=You are not a member of any organizations.
|
||||
orgs.leave_title=Leave organization
|
||||
orgs.none=Jūs neesat nevienas organizācijas dalībnieks.
|
||||
orgs.leave_title=Pamest organizāciju
|
||||
orgs.leave_desc=You will lose access to all repositories and teams after you left the organization. Do you want to continue?
|
||||
|
||||
repos.leave=Leave
|
||||
repos.leave_title=Leave repository
|
||||
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
|
||||
repos.leave_success=You have left repository '%s' successfully!
|
||||
repos.leave=Pamest
|
||||
repos.leave_title=Pamest repozitoriju
|
||||
repos.leave_desc=Tiks zaudēta piekļuve repozitorijam, kad būsiet to pametis. Vai patiešām vēlaties turpināt?
|
||||
repos.leave_success=Repozitorijs '%s' veiksmīgi pamests!
|
||||
|
||||
delete_account=Dzēst savu kontu
|
||||
delete_prompt=Šī darbība pilnībā izdzēsīs Jūsu kontu, kā arī tā ir <strong>NEATGRIEZENISKA</strong>!
|
||||
@@ -361,7 +403,9 @@ owner=Īpašnieks
|
||||
repo_name=Repozitorija nosaukums
|
||||
repo_name_helper=Labi repzotoriju nosaukumi ir īsi, tādi kurus viegli atcerēties un <strong>unikāli</strong>.
|
||||
visibility=Redzamība
|
||||
unlisted=Unlisted
|
||||
visiblity_helper=Šis repozitorijs ir <span class="ui red text">privāts</span>
|
||||
unlisted_helper=This repository is <span class="ui red text">Unlisted</span>
|
||||
visiblity_helper_forced=Lapas administrators ir noteicis, ka visiem repozitorijiem ir jābūt <span class="ui red text">privātiem</span>
|
||||
visiblity_fork_helper=(Šīs vērtības maiņa ietekmēs arī visus atdalītos repozitorijus)
|
||||
clone_helper=Nepieciešama palīdzība kā veikt klonēšana? Apmeklējiet <a target="_blank" href="%s">Palīdzība</a> lapu!
|
||||
@@ -377,7 +421,7 @@ readme=LasiMani
|
||||
readme_helper=Izvēlieties faila LasiMani sagatavi
|
||||
auto_init=Inicializēt šo repozitoriju ar izvēlētajiem failiem un sagatavi
|
||||
create_repo=Izveidot repozitoriju
|
||||
default_branch=Noklusējuma atzars
|
||||
default_branch=Noklusētais atzars
|
||||
mirror_prune=Izmest
|
||||
mirror_prune_desc=Izdzēst visas ārējās atsauces, kas ārējā repozitorijā vairs neeksistē
|
||||
mirror_interval=Spoguļošanas intervāls (stundās)
|
||||
@@ -387,20 +431,22 @@ mirror_last_synced=Pēdējo reizi sinhronizēts
|
||||
watchers=Novērotāji
|
||||
stargazers=Zvaigžņdevēji
|
||||
forks=Atdalītie repozitoriji
|
||||
repo_description_helper=Repozitorija apraksts. Maksimālais garums 512 rakstzīmes.
|
||||
repo_description_length=Pieejamās rakstzīmes
|
||||
|
||||
form.reach_limit_of_creation=Īpašnieks sasniedza maksimālu pieļaujamo (%d) izveidoto repozitoriju skaitu.
|
||||
form.name_reserved=Repozitorija nosaukums '%s' ir rezervēts.
|
||||
form.name_pattern_not_allowed=Repozitorija nosaukums '%s' nav atļauts.
|
||||
form.name_not_allowed=Repository name or pattern %q is not allowed.
|
||||
|
||||
need_auth=Nepieciešama autorizācija
|
||||
migrate_type=Migrācijas veids
|
||||
migrate_type_helper=Šis repozitorijs būs <span class="text blue">spogulis</span>
|
||||
migrate_repo=Migrēt repozitoriju
|
||||
migrate.clone_address=Klonēšanas adrese
|
||||
migrate.clone_address_desc=This can be a HTTP/HTTPS/GIT URL.
|
||||
migrate.clone_address_desc=Tas var būt HTTP/HTTPS/GIT URL.
|
||||
migrate.clone_address_desc_import_local=You're also allowed to migrate a repository by local server path.
|
||||
migrate.permission_denied=Jums nav tiesību importēt lokālu repozitoriju.
|
||||
migrate.invalid_local_path=Nekorents lokālais ceļš, tas neeksistē vai nav direktorijs.
|
||||
migrate.clone_address_resolved_to_blocked_local_address=Clone address resolved to a local network address that is implicitly blocked.
|
||||
migrate.failed=Migrācija neizdevās: %v
|
||||
|
||||
mirror_from=spogulis no
|
||||
@@ -422,7 +468,7 @@ create_new_repo_command=Izveidot jaunu repozitoriju komandrindā
|
||||
push_exist_repo=Nosūtīt izmaiņas no komandrindas eksistējošam repozitorijam
|
||||
bare_message=This repository does not have any content yet.
|
||||
|
||||
files=Files
|
||||
files=Faili
|
||||
branch=Atzars
|
||||
tree=Koks
|
||||
filter_branch_and_tag=Filtrēt atzarus vai tagus
|
||||
@@ -433,21 +479,23 @@ pulls=Izmaiņu pieprasījumi
|
||||
labels=Etiķetes
|
||||
milestones=Atskaites punkti
|
||||
commits=Revīzijas
|
||||
git_branches=Branches
|
||||
git_branches=Atzari
|
||||
releases=Laidieni
|
||||
file_raw=Neapstrādāts
|
||||
file_history=Vēsture
|
||||
file_view_raw=Rādīt neapstrādātu
|
||||
file_permalink=Patstāvīgā saite
|
||||
file_too_large=Šis fails ir par lielu, lai to parādītu
|
||||
video_not_supported_in_browser=Your browser doesn't support HTML5 video tag.
|
||||
video_not_supported_in_browser=Jūsu pārlūks neatbalsta HTML5 video.
|
||||
|
||||
branches.overview=Overview
|
||||
branches.active_branches=Active Branches
|
||||
branches.stale_branches=Stale Branches
|
||||
branches.all=All Branches
|
||||
branches.updated_by=Updated %[1]s by %[2]s
|
||||
branches.change_default_branch=Change Default Branch
|
||||
branches.overview=Pārskats
|
||||
branches.active_branches=Aktīvie atzari
|
||||
branches.stale_branches=Pamests atzars
|
||||
branches.all=Visi atzari
|
||||
branches.updated_by=%[2]s atjaunoja %[1]s
|
||||
branches.change_default_branch=Mainīt noklusēto atzaru
|
||||
branches.default_deletion_not_allowed=Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed=Cannot delete a protected branch.
|
||||
|
||||
editor.new_file=Jauns fails
|
||||
editor.upload_file=Augšupielādēt failu
|
||||
@@ -477,18 +525,19 @@ editor.cancel=Atcelt
|
||||
editor.filename_cannot_be_empty=Nav ievadīts faila nosaukums.
|
||||
editor.branch_already_exists=Atzars '%s' šajā repozitorijā jau eksistē.
|
||||
editor.directory_is_a_file=Ieraksts '%s' vecāka ceļā ir fails nevis direktorija šajā repozitorijā.
|
||||
editor.file_is_a_symlink=The file '%s' is a symlink that cannot be modified from the web editor.
|
||||
editor.file_is_a_symlink=Fails '%s" ir norāde, kuru nav iespējams labot no tīmekļa redaktora.
|
||||
editor.filename_is_a_directory=Faila nosaukums '%s' sakrīt ar direktorijas nosaukumu šajā repozitorijā.
|
||||
editor.file_editing_no_longer_exists=Fails '%s', ko labojat, vairs neeksistē repozitorijā.
|
||||
editor.file_changed_while_editing=Faila saturs ir mainījies kopš brīža, kad sākāt to labot. <a target="_blank" href="%s">Nospiediet šeit</a>, lai redzētu kas ir mainījies vai <strong>nospiediet atkārtoti pabeigt revīziju</strong>, lai pārrakstītu izmaiņas.
|
||||
editor.file_already_exists=Fails ar nosaukumu '%s' repozitorijā jau eksistē.
|
||||
editor.no_changes_to_show=Nav izmaiņu, ko rādīt.
|
||||
editor.fail_to_update_file=Neizdevās izmainīt/izveidot failu '%s', kļūda: %v
|
||||
editor.fail_to_delete_file=Neizdevās dzēst failu '%s', kļūda: %v
|
||||
editor.add_subdir=Pievienot apakšdirektoriju...
|
||||
editor.unable_to_upload_files=Neizdevās augšupielādēt failus uz direktoriju '%s', kļūda: %v
|
||||
editor.upload_files_to_dir=Augšupielādēt failus uz direktoriju '%s'
|
||||
|
||||
commits.commit_history=Commit History
|
||||
commits.commit_history=Revīziju vēsture
|
||||
commits.commits=Revīzijas
|
||||
commits.search=Meklēt revīzijas
|
||||
commits.find=Meklēt
|
||||
@@ -586,6 +635,7 @@ pulls.compare_compare=salīdzināmais
|
||||
pulls.filter_branch=Filtrēt atzarus
|
||||
pulls.no_results=Nekas netika atrasts.
|
||||
pulls.nothing_to_compare=Nav ko salīdzināt, jo bāzes un salīdzināmie atzari ir vienādi.
|
||||
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
|
||||
pulls.has_pull_request=`Jau eksistē izmaiņu pieprasījums starp šiem diviem atzariem: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
|
||||
pulls.create=Izveidot izmaiņu pieprasījumu
|
||||
pulls.title_desc=vēlas sapludināt %[1]d revīzijas no <code>%[2]s</code> uz <code>%[3]s</code>
|
||||
@@ -601,9 +651,12 @@ pulls.is_checking=Notiek konfliktu pārbaude, mirkli uzgaidiet un atjaunojiet la
|
||||
pulls.can_auto_merge_desc=Šo izmaiņu pieprasījumu var automātiski saplūdināt.
|
||||
pulls.cannot_auto_merge_desc=Šis izmaiņu pieprasījums nevar tikt automātiski saplūdināts konfliktu dēļ.
|
||||
pulls.cannot_auto_merge_helper=Lūdzu sapludiniet manuāli, lai atrisinātu konfliktus.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Izmaiņu pieprasījuma sapludināšana
|
||||
pulls.open_unmerged_pull_exists=`Jūs nevarat veikt atkārtotas atvēršanas darbību, jo jau eksistē izmaiņu pieprasījums (#%d) no šī repozitorija ar tādu pašu sapludināšanas informāciju un gaida sapludināšanu.`
|
||||
pulls.delete_branch=Delete Branch
|
||||
pulls.delete_branch=Dzēst atzaru
|
||||
pulls.delete_branch_has_new_commits=Branch cannot be deleted because it has new commits after mergence.
|
||||
|
||||
milestones.new=Jauns atskaites punkts
|
||||
@@ -655,28 +708,28 @@ settings.collaboration.admin=Administrators
|
||||
settings.collaboration.write=Rakstīšanas
|
||||
settings.collaboration.read=Skatīšanās
|
||||
settings.collaboration.undefined=Nedefinētas
|
||||
settings.branches=Branches
|
||||
settings.branches=Atzari
|
||||
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
|
||||
settings.default_branch=Default Branch
|
||||
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
|
||||
settings.update=Update
|
||||
settings.default_branch=Noklusētais atzars
|
||||
settings.default_branch_desc=Noklusētais atzars tiek uzskatīts par pamata atzaru koda revīzijām, izmaiņu pieprasījumiem un tiešsaistes rediģēšanai.
|
||||
settings.update=Atjaunot
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_success=Default branch of this repository has been updated successfully!
|
||||
settings.protected_branches=Protected Branches
|
||||
settings.protected_branches=Aizsargātie atzari
|
||||
settings.protected_branches_desc=Protect branches from force pushing, accidental deletion and whitelist code committers.
|
||||
settings.choose_a_branch=Choose a branch...
|
||||
settings.branch_protection=Branch Protection
|
||||
settings.choose_a_branch=Izvēlēties atzarus...
|
||||
settings.branch_protection=Atzaru aizsargāšana
|
||||
settings.branch_protection_desc=Please choose protect options for branch <b>%s</b>.
|
||||
settings.protect_this_branch=Protect this branch
|
||||
settings.protect_this_branch=Aizsargāt šo atzaru
|
||||
settings.protect_this_branch_desc=Disable force pushes and prevent from deletion.
|
||||
settings.protect_require_pull_request=Require pull request instead direct pushing
|
||||
settings.protect_require_pull_request_desc=Enable this option to disable direct pushing to this branch. Commits have to be pushed to another non-protected branch and merged to this branch through pull request.
|
||||
settings.protect_whitelist_committers=Whitelist who can push to this branch
|
||||
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
|
||||
settings.protect_whitelist_users=Users who can push to this branch
|
||||
settings.protect_whitelist_search_users=Search users
|
||||
settings.protect_whitelist_users=Lietotāji, kas var nosūtīt izmaiņas uz šo atzaru
|
||||
settings.protect_whitelist_search_users=Meklēt lietotajus
|
||||
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
|
||||
settings.protect_whitelist_search_teams=Search teams
|
||||
settings.protect_whitelist_search_teams=Meklēt komandas
|
||||
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
|
||||
settings.hooks=Tīmekļa āķi
|
||||
settings.githooks=Git āķi
|
||||
@@ -690,22 +743,24 @@ settings.change_reponame_prompt=Šī izmaiņa ietekmēs saites, kas ir saistīta
|
||||
settings.advanced_settings=Papildu iestatījumi
|
||||
settings.wiki_desc=Iespējot vikivietnes
|
||||
settings.use_internal_wiki=Izmantot iebūvēto vikivietni
|
||||
settings.allow_public_wiki_desc=Allow public access to wiki when repository is private
|
||||
settings.allow_public_wiki_desc=Atļaut publisko piekļuvi vikivietnei, ja repozitorijs ir privāts
|
||||
settings.use_external_wiki=Izmantot ārējo vikivietni
|
||||
settings.external_wiki_url=Ārējās Vikivietnes adrese
|
||||
settings.external_wiki_url_desc=Apmeklētāji tiks novirzīti uz adresi, kad viņi uzklikšķinās uz cilnes.
|
||||
settings.issues_desc=Iespējot problēmu sekotāju
|
||||
settings.use_internal_issue_tracker=Izmantot iebūvētu vieglu problēmu sekotāju
|
||||
settings.allow_public_issues_desc=Allow public access to issues when repository is private
|
||||
settings.allow_public_issues_desc=Atļaut publisko piekļuvi problēmām, ja repozitorijs ir privāts
|
||||
settings.use_external_issue_tracker=Izmantot ārējo problēmu sekotāju
|
||||
settings.external_tracker_url=External Issue Tracker URL
|
||||
settings.external_tracker_url=Ārējā problēmu sekotāja URL
|
||||
settings.external_tracker_url_desc=Visitors will be redirected to URL when they click on the tab.
|
||||
settings.tracker_url_format=Ārējā problēmu sekotāja adreses formāts
|
||||
settings.tracker_issue_style=Ārējā problēmu reģistra nosaukumu stils:
|
||||
settings.tracker_issue_style.numeric=Cipari
|
||||
settings.tracker_issue_style.alphanumeric=Burti un cipari
|
||||
settings.tracker_url_format_desc=Jūs varat izmantot <code>{user}{repo}{index}</code> lietotājvārdam, repozitorija nosaukumam un problēmas identifikātoram.
|
||||
settings.pulls_desc=Iespējot izmaiņu pieprasījumus lai saņemtu publiskus ieguldījumus
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignorēt atstarpju izmaiņas
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Bīstamā zona
|
||||
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
|
||||
settings.new_owner_has_same_repo=Jaunajam īpašniekam jau ir repozitorijs ar šādu nosaukumu.
|
||||
@@ -742,8 +797,10 @@ settings.collaborator_deletion_desc=Šim lietotājam pēc dzēšanas vairs nebū
|
||||
settings.remove_collaborator_success=Līdzstrādnieks tika noņemts.
|
||||
settings.search_user_placeholder=Meklēt lietotāju...
|
||||
settings.org_not_allowed_to_be_collaborator=Organizāciju nav atļauts pievienot kā līdzstrādnieku.
|
||||
settings.add_webhook=Pievienot tīmekļa āķi
|
||||
settings.hooks_desc=Tīmekļa āķi ļauj paziņot ārējiem servisiem par noteiktiem notikomiem, kas notiek Git servisā. Kad iestāsies kāds notikums, katram ārējā servisa URL tiks nosūtīts POST pieprasījums. Lai uzzinātu sīkāk skatieties <a target="_blank" href="%s">Tīmekļa āķu rokasgrāmatā</a>.
|
||||
settings.webhooks.add_new=Add a new webhook:
|
||||
settings.webhooks.choose_a_type=Choose a type...
|
||||
settings.add_webhook=Pievienot tīmekļa āķi
|
||||
settings.webhook_deletion=Dzēst tīmekļa āķi
|
||||
settings.webhook_deletion_desc=Dzēšot tīmekļa āķi tiks dzēsta visa ar to saistītā informācija un izpildes vēsture. Vai vēlaties turpināt?
|
||||
settings.webhook_deletion_success=Tīmekļa āķis tika veiksmīgi izdzēsts!
|
||||
@@ -757,6 +814,8 @@ settings.webhook.response=Atbilde
|
||||
settings.webhook.headers=Galvenes
|
||||
settings.webhook.payload=Derīgā krava
|
||||
settings.webhook.body=Saturs
|
||||
settings.webhook.err_cannot_parse_payload_url=Cannot parse payload URL: %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address=Payload URL resolved to a local network address that is implicitly blocked.
|
||||
settings.githooks_desc=Git āķus apstrādā pats Git. Jūs varat labot atbalsīto āku failus sarakstā zemāk, lai veiktu pielāgotas darbības.
|
||||
settings.githook_edit_desc=Ja āķis nav aktīvs, tiks attēlots piemērs kā to izmantot. Atstājot āķa saturu tukšu, tas tiks atspējots.
|
||||
settings.githook_name=Āķa nosaukums
|
||||
@@ -776,20 +835,20 @@ settings.event_send_everything=Vēlos saņemt <strong>visu</strong>.
|
||||
settings.event_choose=Atzīmēt, ko vēlos saņemt.
|
||||
settings.event_create=Izveidot
|
||||
settings.event_create_desc=Atzara vai taga izveidošana
|
||||
settings.event_delete=Delete
|
||||
settings.event_delete_desc=Branch or tag deleted
|
||||
settings.event_fork=Fork
|
||||
settings.event_fork_desc=Repository forked
|
||||
settings.event_delete=Dzēst
|
||||
settings.event_delete_desc=Atzars vai tags izdzēsts
|
||||
settings.event_fork=Atdalīts
|
||||
settings.event_fork_desc=Repozitorijs atdalīts
|
||||
settings.event_push=Izmaiņu nosūtīšana
|
||||
settings.event_push_desc=Git izmaiņu nosūtīšana uz repozitoriju
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues=Problēmas
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Izmaiņu pieprasījums
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.event_issue_comment=Problēmas komentārs
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Laidiens
|
||||
settings.event_release_desc=Laidiens publicēts repozitorijā.
|
||||
settings.active=Aktīvs
|
||||
settings.active_helper=Tiks nosūtīti notikuma dati, kad nostrādās šis āķis.
|
||||
settings.add_hook_success=Jauns tīmekļa āķis tika veiksmīgi pievienots.
|
||||
@@ -800,6 +859,7 @@ settings.recent_deliveries=Pēdējās piegādes
|
||||
settings.hook_type=Āķa veids
|
||||
settings.add_slack_hook_desc=PIevienot <a href="%s">Slack</a> integrāciju Jūsu repozitorijā.
|
||||
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.slack_token=Talons
|
||||
settings.slack_domain=Domēns
|
||||
settings.slack_channel=Kanāls
|
||||
@@ -816,6 +876,8 @@ settings.add_key_success=Izvietošanas atslēga '%s' tik veiksmīgi pievienota!
|
||||
settings.deploy_key_deletion=Dzēst izvietošanas atslēgu
|
||||
settings.deploy_key_deletion_desc=Dzēšot šo izvietošanas atslēgu tiks noņemta arī ar to saistītā piekļuve šim repozitorijam. Vai vēlaties turpināt?
|
||||
settings.deploy_key_deletion_success=Izvietošanas atslēga tika veiksmīgi izdzēsta!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Pārlūkot izejas kodu
|
||||
diff.parent=vecāks
|
||||
@@ -880,9 +942,8 @@ team_name_helper=Šo nosaukumu varēs izmantot, lai pieminētu komandu sarunās.
|
||||
team_desc_helper=Komandas apraksts
|
||||
team_permission_desc=Kādām tiesībām šai komandai būtu jābūt?
|
||||
|
||||
form.name_reserved=Organizācijas nosaukums '%s' ir rezervēts.
|
||||
form.name_pattern_not_allowed=Organizācijas nosaukums '%s' nav atļauts.
|
||||
form.team_name_reserved=Team name '%s' is reserved.
|
||||
form.name_not_allowed=Organization name or pattern %q is not allowed.
|
||||
form.team_name_not_allowed=Team name or pattern %q is not allowed.
|
||||
|
||||
settings=Iestatījumi
|
||||
settings.options=Opcijas
|
||||
@@ -954,12 +1015,19 @@ first_page=Pirmā
|
||||
last_page=Pēdējā
|
||||
total=Kopā: %d
|
||||
|
||||
dashboard.build_info=Build Information
|
||||
dashboard.app_ver=Application version
|
||||
dashboard.git_version=Git versija
|
||||
dashboard.go_version=Go versija
|
||||
dashboard.build_time=Build time
|
||||
dashboard.build_commit=Build commit
|
||||
dashboard.statistic=Statistika
|
||||
dashboard.operations=Darbības
|
||||
dashboard.system_status=Sistēmas uzraudzības statuss
|
||||
dashboard.statistic_info=Gogs datu bāze satur <b>%d</b> lietotājus, <b>%d</b> organizācijas, <b>%d</b> publiskās atslēgas, <b>%d</b> repozitorijus, <b>%d</b> vērošanas, <b>%d</b> atzīmētas zvaigznītes, <b>%d</b> darbības, <b>%d</b> piekļuves, <b>%d</b> problēmas, <b>%d</b> komentārus, <b>%d</b> sociālos kontus, <b>%d</b> sekošanas, <b>%d</b> spoguļošanas, <b>%d</b> izlaides, <b>%d</b> login sources, <b>%d</b> tīmekļa āķus, <b>%d</b> starpposmus, <b>%d</b> etiķetes, <b>%d</b> āķu uzdevumus, <b>%d</b> komandas, <b>%d</b> labotus uzdevumus, <b>%d</b> pielikumus.
|
||||
dashboard.operation_name=Darbības nosaukums
|
||||
dashboard.operation_switch=Pārslēgt
|
||||
dashboard.select_operation_to_run=Please select operation to run
|
||||
dashboard.operation_run=Palaist
|
||||
dashboard.clean_unbind_oauth=Notīrīt nesaistītās OAuth biļetes
|
||||
dashboard.clean_unbind_oauth_success=Visas nesaistītās OAuth biļetes tika veiksmīgi izdzēstas.
|
||||
@@ -1049,13 +1117,14 @@ repos.private=Privāts
|
||||
repos.watches=Vērošana
|
||||
repos.stars=Atzīmētās zvaigznītes
|
||||
repos.issues=Problēmas
|
||||
repos.size=Size
|
||||
repos.size=Izmērs
|
||||
|
||||
auths.auth_manage_panel=Autentifikācijas pārvaldības panelis
|
||||
auths.auth_sources=Authentication Sources
|
||||
auths.new=Pievienot jaunu avotu
|
||||
auths.name=Nosaukums
|
||||
auths.type=Veids
|
||||
auths.enabled=Iespējota
|
||||
auths.default=Default
|
||||
auths.updated=Atjaunināta
|
||||
auths.auth_type=Autentifikācijas tips
|
||||
auths.auth_name=Autentifikācijas nosaukums
|
||||
@@ -1064,6 +1133,7 @@ auths.domain=Domēns
|
||||
auths.host=Resursdators
|
||||
auths.port=Ports
|
||||
auths.bind_dn=Saistīšanas DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_password=Saistīšanas parole
|
||||
auths.bind_password_helper=Brīdinājums: Šī parole tiks saglabāta nešifrētā veidā. Neizmantojiet kontu ar augstām privilēģijām.
|
||||
auths.user_base=Lietotāja pamatnosacījumi
|
||||
@@ -1073,6 +1143,11 @@ auths.attribute_username_placeholder=Atstājiet tukšu, lai izmantotu lietotājv
|
||||
auths.attribute_name=Vārda atribūts
|
||||
auths.attribute_surname=Uzvārda atribūts
|
||||
auths.attribute_mail=E-pasta atribūts
|
||||
auths.verify_group_membership=Pārbaudīt grupas piederību
|
||||
auths.group_search_base_dn=Grupas meklēšanas pamata DN
|
||||
auths.group_filter=Group Filter
|
||||
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
|
||||
auths.user_attribute_listed_in_group=User Attribute Listed in Group
|
||||
auths.attributes_in_bind=Nolasīt atribūtus no saistīšanas DN konteksta
|
||||
auths.filter=Lietotāju filts
|
||||
auths.admin_filter=Administratoru filtrs
|
||||
@@ -1086,9 +1161,9 @@ auths.enable_tls=Iespējot TLS šifrēšanu
|
||||
auths.skip_tls_verify=Izlaist TLS verifikāciju
|
||||
auths.pam_service_name=PAM servisa nosaukums
|
||||
auths.enable_auto_register=Iespējot automātisko reģistrāciju
|
||||
auths.tips=Padomi
|
||||
auths.edit=Labot autentifikācijas iestatījumus
|
||||
auths.activated=Autentifikācija ir aktivizēta
|
||||
auths.default_auth=This authentication is default login source
|
||||
auths.new_success=Jauna autentifikācija '%s' tika veiksmīgi pievienota.
|
||||
auths.update_success=Autentifikācijas iestatījumi tika veiksmīgi saglabāti.
|
||||
auths.update=Mainīt autentifikācijas iestatījumus
|
||||
@@ -1097,118 +1172,189 @@ auths.delete_auth_title=Autentifikācijas dzēšana
|
||||
auths.delete_auth_desc=Šī autentifikācija tiks dzēsta, vai vēlaties turpināt?
|
||||
auths.still_in_used=Daži lietotāji joprojām izmanto šo autentifikācijas veidu. Nepieciešams veikt šo lietotāju konvertāciju vai dzēšanu.
|
||||
auths.deletion_success=Autentifikācija tika veiksmīgi izdzēsta!
|
||||
auths.login_source_exist=Login source '%s' already exists.
|
||||
auths.login_source_exist=Pieteikšanās avots '%s' jau eksistē.
|
||||
auths.github_api_endpoint=API Endpoint
|
||||
|
||||
config.not_set=(nav noteikts)
|
||||
config.server_config=Servera konfigurācija
|
||||
config.app_name=Lietotnes nosaukums
|
||||
config.app_ver=Lietotnes versija
|
||||
config.app_url=Lietotnes URL
|
||||
config.domain=Domēns
|
||||
config.offline_mode=Bezsaistes režīms
|
||||
config.disable_router_log=Atspējot maršrutētāja žurnalizēšanu
|
||||
config.brand_name=Brand name
|
||||
config.run_user=Izpildes lietotājs
|
||||
config.run_mode=Izpildes režīms
|
||||
config.git_version=Git Version
|
||||
config.static_file_root_path=Statisko failu atrašanās vieta
|
||||
config.log_file_root_path=Žurnalizēšanas failu glabāšanas vieta
|
||||
config.reverse_auth_user=Reversā lietotāja autentifikācija
|
||||
config.server.external_url=External URL
|
||||
config.server.domain=Domēns
|
||||
config.server.protocol=Protokols
|
||||
config.server.http_addr=HTTP adrese
|
||||
config.server.http_port=HTTP ports
|
||||
config.server.cert_file=Sertifikāta fails
|
||||
config.server.key_file=Privātais kriptogrāfijas atslēgas fails
|
||||
config.server.tls_min_version=Minimālā TLS versija
|
||||
config.server.unix_socket_permission=Unix socket permission
|
||||
config.server.local_root_url=Local root URL
|
||||
config.server.offline_mode=Offline mode
|
||||
config.server.disable_router_log=Disable router log
|
||||
config.server.enable_gzip=Iespējot Gzip
|
||||
config.server.app_data_path=Application data path
|
||||
config.server.load_assets_from_disk=Load assets from disk
|
||||
config.server.landing_url=Landing URL
|
||||
|
||||
config.ssh_config=SSH konfigurācija
|
||||
config.ssh_enabled=Iespējots
|
||||
config.ssh_start_builtin_server=Startēt iebūvēto serveri
|
||||
config.ssh_domain=Domēns
|
||||
config.ssh_port=Ports
|
||||
config.ssh_listen_port=Klausīšanās ports
|
||||
config.ssh_root_path=Saknes ceļš
|
||||
config.ssh_key_test_path=Atslēgu pārbaudes ceļš
|
||||
config.ssh_keygen_path=Keygen ('ssh-keygen') ceļš
|
||||
config.ssh_minimum_key_size_check=Minimālā atslēgas lieluma pārbaude
|
||||
config.ssh_minimum_key_sizes=Minimālais atslēgas lielums
|
||||
config.ssh.enabled=Iespējots
|
||||
config.ssh.domain=Exposed domain
|
||||
config.ssh.port=Exposed port
|
||||
config.ssh.root_path=Root path
|
||||
config.ssh.keygen_path=Keygen path
|
||||
config.ssh.key_test_path=Key test path
|
||||
config.ssh.minimum_key_size_check=Minimum key size check
|
||||
config.ssh.minimum_key_sizes=Minimum key sizes
|
||||
config.ssh.rewrite_authorized_keys_at_start=Rewrite "authorized_keys" at start
|
||||
config.ssh.start_builtin_server=Start builtin server
|
||||
config.ssh.listen_host=Listen host
|
||||
config.ssh.listen_port=Listen port
|
||||
config.ssh.server_ciphers=Server ciphers
|
||||
config.ssh.server_macs=Server MACs
|
||||
config.ssh.server_algorithms=Server algorithms
|
||||
|
||||
config.repo_config=Repository Configuration
|
||||
config.repo_root_path=Repozitoriju glabāšanas vieta
|
||||
config.script_type=Skripta veids
|
||||
config.repo_force_private=Force Private
|
||||
config.max_creation_limit=Max Creation Limit
|
||||
config.preferred_licenses=Preferred Licenses
|
||||
config.disable_http_git=Disable HTTP Git
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
config.repo_config=Repozitorija konfigurācija
|
||||
config.repo.root_path=Root path
|
||||
config.repo.script_type=Script type
|
||||
config.repo.ansi_chatset=ANSI charset
|
||||
config.repo.force_private=Force private
|
||||
config.repo.max_creation_limit=Max creation limit
|
||||
config.repo.preferred_licenses=Preferred licenses
|
||||
config.repo.disable_http_git=Disable HTTP Git
|
||||
config.repo.enable_local_path_migration=Enable local path migration
|
||||
config.repo.enable_raw_file_render_mode=Enable raw file render mode
|
||||
config.repo.commits_fetch_concurrency=Commits fetch concurrency
|
||||
config.repo.editor.line_wrap_extensions=Editor line wrap extensions
|
||||
config.repo.editor.previewable_file_modes=Editor previewable file modes
|
||||
config.repo.upload.enabled=Upload enabled
|
||||
config.repo.upload.temp_path=Upload temporary path
|
||||
config.repo.upload.allowed_types=Upload allowed types
|
||||
config.repo.upload.file_max_size=Upload file size limit
|
||||
config.repo.upload.max_files=Upload files limit
|
||||
|
||||
config.db_config=Datu bāzes konfigurācija
|
||||
config.db_type=Veids
|
||||
config.db_host=Resursdators
|
||||
config.db_name=Nosaukums
|
||||
config.db_user=Lietotājs
|
||||
config.db_ssl_mode=SSL režīms
|
||||
config.db_ssl_mode_helper=(tikai PostgreSQL datu bāzei)
|
||||
config.db_path=Ceļš
|
||||
config.db_path_helper=(priekš "sqlite3" and "tidb")
|
||||
config.db.type=Tips
|
||||
config.db.host=Host
|
||||
config.db.name=Datubāzes nosaukums
|
||||
config.db.schema=Schema
|
||||
config.db.schema_helper=(for "postgres" only)
|
||||
config.db.user=Datubāzes lietotājs
|
||||
config.db.ssl_mode=SSL mode
|
||||
config.db.ssl_mode_helper=(for "postgres" only)
|
||||
config.db.path=Path
|
||||
config.db.path_helper=(for "sqlite3"only)
|
||||
config.db.max_open_conns=Maximum open connections
|
||||
config.db.max_idle_conns=Maximum idle connections
|
||||
|
||||
config.service_config=Pakalpojuma konfigurācija
|
||||
config.register_email_confirm=Pieprasīt e-pasta apstiprināšanu
|
||||
config.disable_register=Atspējot jaunu lietotāju reģistrāciju
|
||||
config.show_registration_button=Rādīt reģistrēšanās pogu
|
||||
config.require_sign_in_view=Nepieciešama autorizācija
|
||||
config.mail_notify=Pasta paziņojumi
|
||||
config.disable_key_size_check=Atspējot atslēgas minimālā garuma pārbaudi
|
||||
config.enable_captcha=Iespējot drošības kodu
|
||||
config.active_code_lives=Aktīvā koda ilgums
|
||||
config.reset_password_code_lives=Paroles atiestatīšanas koda ilgums
|
||||
config.security_config=Security configuration
|
||||
config.security.login_remember_days=Login remember days
|
||||
config.security.cookie_remember_name=Remember cookie
|
||||
config.security.cookie_username=Username cookie
|
||||
config.security.cookie_secure=Enable secure cookie
|
||||
config.security.reverse_proxy_auth_user=Reverse proxy authentication header
|
||||
config.security.enable_login_status_cookie=Enable login status cookie
|
||||
config.security.login_status_cookie_name=Login status cookie
|
||||
config.security.local_network_allowlist=Local network allowlist
|
||||
|
||||
config.webhook_config=Tīkla āķu konfigurācija
|
||||
config.queue_length=Rindas garums
|
||||
config.deliver_timeout=Piegādes noildze
|
||||
config.skip_tls_verify=Izlaist TLS pārbaudi
|
||||
config.email_config=E-pasta iestatījumi
|
||||
config.email.enabled=Iespējots
|
||||
config.email.subject_prefix=Subject prefix
|
||||
config.email.host=Host
|
||||
config.email.from=Sūtītājs
|
||||
config.email.user=Lietotājs
|
||||
config.email.disable_helo=Disable HELO
|
||||
config.email.helo_hostname=HELO hostname
|
||||
config.email.skip_verify=Skip certificate verify
|
||||
config.email.use_certificate=Use custom certificate
|
||||
config.email.cert_file=Certificate file
|
||||
config.email.key_file=Key file
|
||||
config.email.use_plain_text=Use plain text
|
||||
config.email.add_plain_text_alt=Add plain text alternative
|
||||
config.email.send_test_mail=Nosūtīt pārbaudes e-pastu
|
||||
config.email.test_mail_failed=Failed to send test email to '%s': %v
|
||||
config.email.test_mail_sent=Test email has been sent to '%s'.
|
||||
|
||||
config.mailer_config=Sūtītāja konfigurācija
|
||||
config.mailer_enabled=Iespējots
|
||||
config.mailer_disable_helo=Atspējot HELO
|
||||
config.mailer_name=Nosaukums
|
||||
config.mailer_host=Resursdators
|
||||
config.mailer_user=Lietotājs
|
||||
config.send_test_mail=Nosūtīt pārbaudes e-pastu
|
||||
config.test_mail_failed=Neizdevās nosūtīt pārbaudes e-pasta vēstuli uz '%s': %v
|
||||
config.test_mail_sent=Pārbaudes e-pasta vēstule tika nosūtīta uz '%s'.
|
||||
config.auth_config=Authentication configuration
|
||||
config.auth_custom_logout_url=Custom logout URL
|
||||
config.auth.activate_code_lives=Activate code lives
|
||||
config.auth.reset_password_code_lives=Reset password code lives
|
||||
config.auth.require_email_confirm=Require email confirmation
|
||||
config.auth.require_sign_in_view=Require sign in view
|
||||
config.auth.disable_registration=Disable registration
|
||||
config.auth.enable_registration_captcha=Enable registration captcha
|
||||
config.auth.enable_reverse_proxy_authentication=Enable reverse proxy authentication
|
||||
config.auth.enable_reverse_proxy_auto_registration=Enable reverse proxy auto registration
|
||||
config.auth.reverse_proxy_authentication_header=Reverse proxy authentication header
|
||||
|
||||
config.oauth_config=OAuth konfigurācija
|
||||
config.oauth_enabled=Iespējota
|
||||
|
||||
config.cache_config=Kešatmiņas konfigurācija
|
||||
config.cache_adapter=Kešatmiņas adapteris
|
||||
config.cache_interval=Kešatmiņas intervāls
|
||||
config.cache_conn=Kešatmiņas pieslēguma parametri
|
||||
config.user_config=User configuration
|
||||
config.user.enable_email_notify=Enable email notification
|
||||
|
||||
config.session_config=Sesijas konfigurācja
|
||||
config.session_provider=Sesijas nodrošinātājs
|
||||
config.provider_config=Pakalpojumu sniedzēja konfigurācija
|
||||
config.cookie_name=Sīkdatnes nosaukums
|
||||
config.enable_set_cookie=Ļaut izmantot sīkdatnes
|
||||
config.gc_interval_time=GC laika intervāls
|
||||
config.session_life_time=Sesijas ilgums
|
||||
config.https_only=Tikai HTTPS
|
||||
config.cookie_life_time=Sīkdatņu glabāšanas ilgums
|
||||
config.session.provider=Provider
|
||||
config.session.provider_config=Provider config
|
||||
config.session.cookie_name=Cookie
|
||||
config.session.https_only=Tikai HTTPS
|
||||
config.session.gc_interval=GC interval
|
||||
config.session.max_life_time=Max life time
|
||||
config.session.csrf_cookie_name=CSRF cookie
|
||||
|
||||
config.cache_config=Kešatmiņas konfigurācija
|
||||
config.cache.adapter=Adapter
|
||||
config.cache.interval=GC interval
|
||||
config.cache.host=Host
|
||||
|
||||
config.http_config=HTTP konfigurācija
|
||||
config.http.access_control_allow_origin=Access control allow origin
|
||||
|
||||
config.attachment_config=Attachment configuration
|
||||
config.attachment.enabled=Iespējots
|
||||
config.attachment.path=Path
|
||||
config.attachment.allowed_types=Atļautie tipi
|
||||
config.attachment.max_size=Maksimālais izmērs
|
||||
config.attachment.max_files=Maksimālais failu skaits
|
||||
|
||||
config.release_config=Release configuration
|
||||
config.release.attachment.enabled=Pielikums iespējots
|
||||
config.release.attachment.allowed_types=Atļautie pielikuma tipi
|
||||
config.release.attachment.max_size=Pielikuma maksimālais izmērs
|
||||
config.release.attachment.max_files=Maksimālais pielikuma failu skaits
|
||||
|
||||
config.picture_config=Attēlu konfigurācija
|
||||
config.picture_service=Lokāli attēli
|
||||
config.disable_gravatar=Atspējot Gravatar
|
||||
config.enable_federated_avatar=Iespējot apvienotās profila bildes
|
||||
config.picture.avatar_upload_path=User avatar upload path
|
||||
config.picture.repo_avatar_upload_path=Repository avatar upload path
|
||||
config.picture.gravatar_source=Gravatar source
|
||||
config.picture.disable_gravatar=Disable Gravatar
|
||||
config.picture.enable_federated_avatar=Enable federated avatars
|
||||
|
||||
config.mirror_config=Mirror configuration
|
||||
config.mirror.default_interval=Noklusētais intervāls
|
||||
|
||||
config.webhook_config=Tīkla āķu konfigurācija
|
||||
config.webhook.types=Types
|
||||
config.webhook.deliver_timeout=Deliver timeout
|
||||
config.webhook.skip_tls_verify=Skip TLS verify
|
||||
|
||||
config.git_config=Git konfigurācija
|
||||
config.git_disable_diff_highlight=Atspējot salīdzināšanas sintakses iekrāsošanu
|
||||
config.git_max_diff_lines=Maksimālais salīdzināmo rindu skaits vienam failam
|
||||
config.git_max_diff_line_characters=Maksimālais salīdzināmo simbolu skaits vienai rindai
|
||||
config.git_max_diff_files=Maksimālais salīdzināmo failu skaits, ko attēlot
|
||||
config.git_gc_args=GC argumenti
|
||||
config.git_migrate_timeout=Migrācijas noilgums
|
||||
config.git_mirror_timeout=Spoguļa atjaunošanas noilgums
|
||||
config.git_clone_timeout=Klonēšanas darbības noilgums
|
||||
config.git_pull_timeout=Izmaiņu saņemšanas darbības noilgums
|
||||
config.git_gc_timeout=GC darbības noilgums
|
||||
config.git.disable_diff_highlight=Disable diff syntax highlight
|
||||
config.git.max_diff_lines=Diff lines limit (for a single file)
|
||||
config.git.max_diff_line_characters=Diff characters limit (for a single line)
|
||||
config.git.max_diff_files=Diff files limit (for a single diff)
|
||||
config.git.gc_args=GC arguments
|
||||
config.git.migrate_timeout=Migration timeout
|
||||
config.git.mirror_timeout=Mirror fetch timeout
|
||||
config.git.clone_timeout=Clone timeout
|
||||
config.git.pull_timeout=Pull timeout
|
||||
config.git.gc_timeout=GC timeout
|
||||
|
||||
config.lfs_config=LFS configuration
|
||||
config.lfs.storage=Storage
|
||||
config.lfs.objects_path=Objects path
|
||||
|
||||
config.log_config=Žurnalizēšanas konfigurācija
|
||||
config.log_mode=Mode
|
||||
config.log_options=Options
|
||||
config.log_file_root_path=Žurnalizēšanas failu glabāšanas vieta
|
||||
config.log_mode=Režīms
|
||||
config.log_options=Opcijas
|
||||
|
||||
monitor.cron=Cron uzdevumi
|
||||
monitor.name=Nosaukums
|
||||
@@ -1237,7 +1383,6 @@ notices.delete_success=Sistēmas paziņojumi tika veiksmīgi izdzēstas.
|
||||
|
||||
[action]
|
||||
create_repo=izveidoja repozitoriju <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=pārsauca repozitoriju no <code>%[1]s</code> uz <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=veica izmaiņu nosūtīšanu atzaram <a href="%[1]s/src/%[2]s">%[3]s</a> repozitorijā <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Salīdzināt šīs %d revīzijas
|
||||
@@ -1250,10 +1395,14 @@ create_pull_request=`izveidoja izmaiņu pieprasījumu <a href="%s/pulls/%s">%s#%
|
||||
close_pull_request=`aizvēra izmaiņu pieprasījumu <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
reopen_pull_request=`atkārtoti atvēra izmaiņu pieprasījumu <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
merge_pull_request=`sapludināja izmaiņu pieprasījumu <a href="%s/pulls/%s">%s#%[2]s</a>`
|
||||
create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
create_branch=izveidoja jaunu atzaru <a href="%[1]s/src/%[2]s">%[3]s</a> repozitorijā <a href="%[1]s">%[4]s</a>
|
||||
delete_branch=izdzēsa atzaru <code>%[2]s</code> repozitorijā <a href="%[1]s">%[3]s</a>
|
||||
push_tag=pievienoja tagu <a href="%s/src/%s">%[2]s</a> repozitorijam <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
delete_tag=izdzēsa tagu <code>%[2]s</code> repozitorijā <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=atdalīja repozitoriju uz <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=atpakaļ
|
||||
@@ -1275,6 +1424,7 @@ months=%d mēneši %s
|
||||
years=%d gadi %s
|
||||
raw_seconds=sekundes
|
||||
raw_minutes=minūtes
|
||||
raw_hours=hours
|
||||
|
||||
[dropzone]
|
||||
default_message=Ievelciet failus šeit vai noklikšķiniet, lai augšupielādētu.
|
||||
|
||||
1434
conf/locale/locale_mn-MN.ini
Normal file
1434
conf/locale/locale_mn-MN.ini
Normal file
File diff suppressed because it is too large
Load Diff
@@ -9,7 +9,6 @@ sign_out=Uitloggen
|
||||
sign_up=Aanmelden
|
||||
register=Registreren
|
||||
website=Website
|
||||
version=Versie
|
||||
page=Pagina
|
||||
template=Sjabloon
|
||||
language=Taal
|
||||
@@ -40,26 +39,31 @@ your_settings=Uw instellingen
|
||||
|
||||
activities=Activiteiten
|
||||
pull_requests=Pull requests
|
||||
issues=Kwesties
|
||||
issues=Issues
|
||||
|
||||
cancel=Annuleren
|
||||
|
||||
[status]
|
||||
page_not_found=Pagina niet gevonden
|
||||
internal_server_error=Interne Server Fout
|
||||
|
||||
[install]
|
||||
install=Installatie
|
||||
title=Installatiestappen voor de eerste keer opstarten
|
||||
docker_helper=Als u gebruik maakt Gogs binnen Docker, lees dan de <a target="_blank" href="%s">richtlijnen</a> voordat u iets veranderen op deze pagina!
|
||||
requite_db_desc=Gogs requires MySQL, PostgreSQL, SQLite3, MSSQL or TiDB.
|
||||
requite_db_desc=Gogs heeft MySQL, PostgreSQL, SQLite3 of TiDB (via het MySQL protocool) nodig.
|
||||
db_title=Database-instellingen
|
||||
db_type=Database-type
|
||||
host=Host
|
||||
user=Gebruikersnaam
|
||||
password=Wachtwoord
|
||||
db_name=Databasenaam
|
||||
db_schema=Schema
|
||||
db_helper=Gebruik InnoDB engine met utf8_general_ci karakterset voor MySQL.
|
||||
ssl_mode=SSL-modus
|
||||
path=Pad
|
||||
sqlite_helper=The file path of SQLite3 database. <br>Please use absolute path when you start as service.
|
||||
err_empty_db_path=SQLite3 database path cannot be empty.
|
||||
sqlite_helper=Het pad van de SQLite3-database.<br>Als u Gogs start als een service, geef dan een absoluut pad op.
|
||||
err_empty_db_path=SQLite3 database pad mag niet leeg zijn.
|
||||
no_admin_and_disable_registration=Je kunt niet de registratie uit te schakelen zonder een beheerders account.
|
||||
err_empty_admin_password=Beheerder wachtwoord kan niet leeg zijn.
|
||||
|
||||
@@ -74,16 +78,17 @@ domain=Domein
|
||||
domain_helper=Dit heeft invloed op de SSH kloon URLs
|
||||
ssh_port=SSH-poort
|
||||
ssh_port_helper=Nummer van de poort die uw SSH-server gebruikt, laat dit leeg om de SSH functie uit te schakelen.
|
||||
use_builtin_ssh_server=Use Builtin SSH Server
|
||||
use_builtin_ssh_server_popup=Start builtin SSH server for Git operations to distinguish from system SSH daemon.
|
||||
use_builtin_ssh_server=Gebruik de ingebouwde SSH server
|
||||
use_builtin_ssh_server_popup=Start de ingebouwde SSH server zodat de Git operaties herkenbaar zijn tegenover het systeem SSH Deamon.
|
||||
http_port=HTTP-poort
|
||||
http_port_helper=Poortnummer waar het programma naar luistert.
|
||||
app_url=Applicatie URL
|
||||
app_url_helper=Dit heeft invloed op de HTTP/HTTPS kloon urls en de urls die in de email worden gebruikt
|
||||
log_root_path=Log-pad
|
||||
log_root_path_helper=Directory waar logbestanden opgeslagen worden.
|
||||
enable_console_mode=Enable Console Mode
|
||||
enable_console_mode_popup=In addition to file mode, also print logs to console.
|
||||
enable_console_mode=Schakel Console modus in
|
||||
enable_console_mode_popup=Naast de bestand modus print het ook de logs naar de console.
|
||||
default_branch=Standaard branch
|
||||
|
||||
optional_title=Optionele instellingen
|
||||
email_title=E-mail service instellingen
|
||||
@@ -99,8 +104,8 @@ offline_mode=Off line modus inschakelen
|
||||
offline_mode_popup=Schakel CDN uit in productiemodus, alle bestanden worden lokaal aangeboden.
|
||||
disable_gravatar=Gravatar Service uitschakelen
|
||||
disable_gravatar_popup=Schakel Gravatar en andere bronnen uit, alle avatars worden door gebruikers geüpload of zijn standaard.
|
||||
federated_avatar_lookup=Enable Federated Avatars Lookup
|
||||
federated_avatar_lookup_popup=Enable federated avatars lookup to use federated open source service based on libravatar.
|
||||
federated_avatar_lookup=Federated Avatars zoekopdracht inschakelen
|
||||
federated_avatar_lookup_popup=Schakel federated avatars zoekopdracht in om de op libravatar gebaseerde leveranciers te gebruiken.
|
||||
disable_registration=Schakel zelfregistratie uit
|
||||
disable_registration_popup=Schakel zelfregistratie uit, alleen admins kunnen accounts maken.
|
||||
enable_captcha=Inschakelen Captcha
|
||||
@@ -119,8 +124,10 @@ sqlite3_not_available=Uw versie biedt geen ondersteuning voor SQLite3, download
|
||||
invalid_db_setting=Uw database instellingen zijn niet correct: %v
|
||||
invalid_repo_path=Repositorie basis map is niet correct: %v
|
||||
run_user_not_match=De uitvoerende gebruiker is niet de huidig gebruiker: %s -> %s
|
||||
invalid_smtp_from=SMTP From field is not valid: %v
|
||||
smtp_host_missing_port=SMTP-Host mist een poort in het adres.
|
||||
invalid_smtp_from=SMTP-van-veld is niet geldig: %v
|
||||
save_config_failed=Kan de configuratie niet opslaan: %v
|
||||
init_failed=Programma initialiseren mislukt: %v
|
||||
invalid_admin_setting=Uw admin-instellingen zijn niet geldig: %v
|
||||
install_success=Welkom! Wij zijn veheugd dat u voor Gogs heeft gekozen, veel plezier en tot ziens
|
||||
invalid_log_root_path=Ongeldig log-pad: %v
|
||||
@@ -150,6 +157,8 @@ register_hepler_msg=Heeft u al een account? Meld u nu aan!
|
||||
social_register_hepler_msg=Heeft u al een account? Koppel nu!
|
||||
disable_register_prompt=Sorry, registratie is uitgeschakeld. Neem contact op met de beheerder van deze site.
|
||||
disable_register_mail=Sorry, bevestiging van registratie per e-mail is uitgeschakeld.
|
||||
auth_source=Authenticatiebron
|
||||
local=Lokaal
|
||||
remember_me=Onthoud mij
|
||||
forgot_password=Wachtwoord vergeten
|
||||
forget_password=Wachtwoord vergeten?
|
||||
@@ -166,7 +175,15 @@ reset_password=Reset uw wachtwoord
|
||||
invalid_code=Sorry, uw bevestigingscode is verlopen of niet meer geldig.
|
||||
reset_password_helper=Klik hier om uw wachtwoord opnieuw in te stellen.
|
||||
password_too_short=De lengte van uw wachtwoord moet minimaal zes karakters zijn.
|
||||
non_local_account=Non-local accounts cannot change passwords through Gogs.
|
||||
non_local_account=Niet lokale accounts mogen hun wachtwoord niet veranderen via Gogs.
|
||||
|
||||
login_two_factor=Twee-traps authenticatie
|
||||
login_two_factor_passcode=Authenticatie wachtwoord
|
||||
login_two_factor_enter_recovery_code=Voer de two-factor herstelcode in
|
||||
login_two_factor_recovery=Two-factor herstel
|
||||
login_two_factor_recovery_code=Herstel code
|
||||
login_two_factor_enter_passcode=Voer een two-factor wachtwoord in
|
||||
login_two_factor_invalid_recovery_code=Herstelcode is al gebruikt of ongeldig.
|
||||
|
||||
[mail]
|
||||
activate_account=Activeer uw account
|
||||
@@ -196,14 +213,14 @@ AdminEmail=E-mail beheerder
|
||||
NewBranchName=Nieuwe branch naam
|
||||
CommitSummary=Commit samenvatting
|
||||
CommitMessage=Commit bericht
|
||||
CommitChoice=Commit choice
|
||||
CommitChoice=Keuze toepassen
|
||||
TreeName=Bestandspad
|
||||
Content=Inhoud
|
||||
|
||||
require_error=kan niet leeg zijn.
|
||||
alpha_dash_error=moet een valide alfanumeriek of dash(-_) karakter zijn.
|
||||
alpha_dash_dot_error=moet een valide alfanumeriek, dash(-_) of (.) punt karakter zijn.
|
||||
alpha_dash_dot_slash_error=` must be valid alpha or numeric or dash(-_) or dot characters or slashes.`
|
||||
alpha_dash_dot_slash_error=` moet een geldige alfanumeriek, (lage) streepje (-_), punt of een schuin karakter zijn.`
|
||||
size_error=moet groter zijn dan %s
|
||||
min_size_error=moet minimaal %s karakters bevatten.
|
||||
max_size_error=mag maximaal %s karakters bevatten.
|
||||
@@ -220,6 +237,7 @@ org_name_been_taken=Organisatie naam is al in gebruik.
|
||||
team_name_been_taken=Team naam is al in gebruik.
|
||||
email_been_used=e-mailadres is al in gebruik.
|
||||
username_password_incorrect=Gebruikersnaam of wachtwoord is niet correct.
|
||||
auth_source_mismatch=De geselecteerde authenticatiebron is niet gekoppeld aan de gebruiker.
|
||||
enterred_invalid_repo_name=U heeft een onjuiste repositorie naam ingevoerd.
|
||||
enterred_invalid_owner_name=U heeft een onjuiste eigenaar ingevoerd.
|
||||
enterred_invalid_password=U heeft een onjuiste wachtwoord ingevoerd.
|
||||
@@ -247,14 +265,14 @@ following=Volgt
|
||||
follow=Volg
|
||||
unfollow=Niet meer volgen
|
||||
|
||||
form.name_reserved=De gebruikersnaam '%s' is gereserveerd.
|
||||
form.name_pattern_not_allowed=Het gebruikersnaam patroon '%s' is niet toegestaan.
|
||||
form.name_not_allowed=User name or pattern %q is not allowed.
|
||||
|
||||
[settings]
|
||||
profile=Profiel
|
||||
password=Wachtwoord
|
||||
avatar=Profielfoto
|
||||
ssh_keys=SSH-sleutels
|
||||
security=Beveiliging
|
||||
repos=Repositories
|
||||
orgs=Organisaties
|
||||
applications=Toepassingen
|
||||
@@ -299,6 +317,7 @@ delete_email=Verwijder
|
||||
email_deletion=E-mail Verwijderen
|
||||
email_deletion_desc=Dit e-mailadres verwijdert, worden gerelateerde informatie van uw account te verwijderen. Wil je verdergaan?
|
||||
email_deletion_success=E-mail is succesvol verwijderd!
|
||||
email_deletion_primary=Kan het primaire e-mailadres niet verwijderen.
|
||||
add_new_email=Nieuw e-mailadres toevoegen
|
||||
add_email=E-mailadres toevoegen
|
||||
add_email_confirmation_sent=Een nieuwe bevestiging e-mail werd verstuurd naar '%s', gelieve uw inbox in de komende %d uren te controleren om het bevestigingsproces te voltooien.
|
||||
@@ -324,14 +343,36 @@ no_activity=Geen recente activiteiten
|
||||
key_state_desc=Deze sleutel werd gebruikt in de laatste 7 dagen
|
||||
token_state_desc=Deze token is de laatste 7 dagen gebruikt
|
||||
|
||||
manage_social=Beheer gekoppelde sociale accounts
|
||||
social_desc=Dit is een lijst van de bijbehorende sociale accounts koppelingen, Verwijder eventueel koppelingen die u niet herkent.
|
||||
unbind=Loskoppelen
|
||||
unbind_success=Sociaal account is ontkoppeld.
|
||||
two_factor=Twee-factor authenticatie
|
||||
two_factor_status=Status:
|
||||
two_factor_on=Aan
|
||||
two_factor_off=Uit
|
||||
two_factor_enable=Inschakelen
|
||||
two_factor_disable=Uitschakelen
|
||||
two_factor_view_recovery_codes=View and save <a href="%s%s">your recovery codes</a> in a safe place. You can use them as passcode if you lose access to your authentication application.
|
||||
two_factor_http=For HTTP/HTTPS operations, you are no longer able to use plain username and password. Please create and use <a href="%[1]s%[2]s">Personal Access Token</a> as your credential, e.g. <code>%[3]s</code>.
|
||||
two_factor_enable_title=Tweestapsverificatie inschakelen
|
||||
two_factor_scan_qr=Please use your authentication application to scan the image:
|
||||
two_factor_or_enter_secret=Of voer het geheim in:
|
||||
two_factor_then_enter_passcode=Then enter passcode:
|
||||
two_factor_verify=Verifiëren
|
||||
two_factor_invalid_passcode=The passcode you entered is not valid, please try again!
|
||||
two_factor_reused_passcode=The passcode you entered has already been used, please try another one!
|
||||
two_factor_enable_error=Enable Two-factor authentication failed: %v
|
||||
two_factor_enable_success=Two-factor authentication has enabled for your account successfully!
|
||||
two_factor_recovery_codes_title=Two-factor Authentication Recovery Codes
|
||||
two_factor_recovery_codes_desc=Recovery codes are used when you temporarily lose access to your authentication application. Each recovery code can only be used once, <b>please keep these codes in a safe place</b>.
|
||||
two_factor_regenerate_recovery_codes=Regenerate Recovery Codes
|
||||
two_factor_regenerate_recovery_codes_error=Regenerate recovery codes failed: %v
|
||||
two_factor_regenerate_recovery_codes_success=New recovery codes has been generated successfully!
|
||||
two_factor_disable_title=Disable Two-factor Authentication
|
||||
two_factor_disable_desc=Your account security level will decrease after disabled two-factor authentication. Do you want to continue?
|
||||
two_factor_disable_success=Two-factor authentication has disabled successfully!
|
||||
|
||||
manage_access_token=Persoonlijke toegangstokens beheren
|
||||
generate_new_token=Nieuwe Token genereren
|
||||
tokens_desc=Tokens die u hebt gegenereerd om toegang tot de Gogs APIs te verkrijgen.
|
||||
access_token_tips=The personal access token may be used as either username or password. It is recommended to use the "x-access-token" as the username and the personal access token as the password for Git applications.
|
||||
new_token_desc=Zoals voor nu, moet elke token zal hebben volledige toegang tot uw account.
|
||||
token_name=Symbolische naam
|
||||
generate_token=Token genereren
|
||||
@@ -340,13 +381,14 @@ delete_token=Verwijderen
|
||||
access_token_deletion=Persoonlijke toegang token verwijderen
|
||||
access_token_deletion_desc=Verwijderen van deze persoonlijke toegang token zal alle verwante toegang verwijderen. Wilt u doorgaan?
|
||||
delete_token_success=Persoonlijke toegangstoken is met succes verwijderd! Vergeet niet uw toepassingen ook bij te werken.
|
||||
token_name_exists=Token with same name already exists.
|
||||
|
||||
orgs.none=U bent geen lid van een organisatie.
|
||||
orgs.leave_title=Een organisatie verlaten
|
||||
orgs.leave_desc=U verliest toegang tot alle repositories en teams nadat u de organisatie verlaten hebt. Wilt u doorgaan?
|
||||
|
||||
repos.leave=Leave
|
||||
repos.leave_title=Leave repository
|
||||
repos.leave=Verlaat
|
||||
repos.leave_title=Verlaat repository
|
||||
repos.leave_desc=You will lose access to the repository after you left. Do you want to continue?
|
||||
repos.leave_success=You have left repository '%s' successfully!
|
||||
|
||||
@@ -361,7 +403,9 @@ owner=Eigenaar
|
||||
repo_name=Naam van repository
|
||||
repo_name_helper=Een goede repository-naam is kort, makkelijk te onthouden en <strong>uniek</strong>.
|
||||
visibility=Zichtbaarheid
|
||||
unlisted=Unlisted
|
||||
visiblity_helper=Deze repositorie is <span class="ui red text">privaat</span>
|
||||
unlisted_helper=This repository is <span class="ui red text">Unlisted</span>
|
||||
visiblity_helper_forced=Sitebeheerder heeft alle nieuwe repositories gedwongen <span class="ui red text">privé</span> te zijn
|
||||
visiblity_fork_helper=(Verandering van deze waarde zal van invloed zijn op alle forks)
|
||||
clone_helper=De behoeftehulp van klonen? Bezoek <a target="_blank" href="%s"> helpen</a>!
|
||||
@@ -387,10 +431,11 @@ mirror_last_synced=Laatste synchronisatie
|
||||
watchers=Volgers
|
||||
stargazers=Stargazers
|
||||
forks=Forks
|
||||
repo_description_helper=Description of repository. Maximum 512 characters length.
|
||||
repo_description_length=Available characters
|
||||
|
||||
form.reach_limit_of_creation=De eigenaar heeft maximale creatie limiet van %d repositories bereikt.
|
||||
form.name_reserved=Repositorienaam '%s' is gereserveerd.
|
||||
form.name_pattern_not_allowed=Repositorie naampatroon '%s' is niet toegestaan.
|
||||
form.name_not_allowed=Repository name or pattern %q is not allowed.
|
||||
|
||||
need_auth=Autorisatie vereist
|
||||
migrate_type=Migratie type
|
||||
@@ -401,6 +446,7 @@ migrate.clone_address_desc=Dit kan een HTTP/HTTPS/GIT URL zijn.
|
||||
migrate.clone_address_desc_import_local=You're also allowed to migrate a repository by local server path.
|
||||
migrate.permission_denied=U bent niet toegestaan om deze lokale repositories te importeren.
|
||||
migrate.invalid_local_path=Ongeldig lokaal pad, het pad bestaat niet of het is geen map.
|
||||
migrate.clone_address_resolved_to_blocked_local_address=Clone address resolved to a local network address that is implicitly blocked.
|
||||
migrate.failed=Migratie is mislukt: %v
|
||||
|
||||
mirror_from=spiegel van
|
||||
@@ -420,7 +466,7 @@ quick_guide=Snelstart gids
|
||||
clone_this_repo=Kloon deze repositorie
|
||||
create_new_repo_command=Maak een nieuwe repositorie aan vanaf de console
|
||||
push_exist_repo=Push een bestaande repositorie vanaf de console
|
||||
bare_message=This repository does not have any content yet.
|
||||
bare_message=Deze repository bevat nog geen inhoud.
|
||||
|
||||
files=Bestanden
|
||||
branch=Aftakking
|
||||
@@ -428,7 +474,7 @@ tree=Boom
|
||||
filter_branch_and_tag=Filter branch of tag
|
||||
branches=Aftakkingen
|
||||
tags=Labels
|
||||
issues=Kwesties
|
||||
issues=Issues
|
||||
pulls=Pull-aanvragen
|
||||
labels=Labels
|
||||
milestones=Mijlpalen
|
||||
@@ -442,12 +488,14 @@ file_permalink=Permalink
|
||||
file_too_large=Dit bestand is te groot om te worden getoond
|
||||
video_not_supported_in_browser=Uw browser ondersteunt geen HTML5 video label.
|
||||
|
||||
branches.overview=Overview
|
||||
branches.overview=Overzicht
|
||||
branches.active_branches=Active Branches
|
||||
branches.stale_branches=Stale Branches
|
||||
branches.all=All Branches
|
||||
branches.updated_by=Updated %[1]s by %[2]s
|
||||
branches.change_default_branch=Change Default Branch
|
||||
branches.default_deletion_not_allowed=Cannot delete the default branch.
|
||||
branches.protected_deletion_not_allowed=Cannot delete a protected branch.
|
||||
|
||||
editor.new_file=Nieuw bestand
|
||||
editor.upload_file=Bestand uploaden
|
||||
@@ -458,18 +506,18 @@ editor.edit_this_file=Bestand aanpassen
|
||||
editor.must_be_on_a_branch=Je moet in een branch zijn om aanpassingen te maken of voor te stellen
|
||||
editor.fork_before_edit=Je moet deze repository eerst vorken om dit bestand aan te kunnen passen
|
||||
editor.delete_this_file=Verwijder dit bestand
|
||||
editor.must_have_write_access=You must have write access to make or propose changes to this file
|
||||
editor.must_have_write_access=U moet schrijftoegang hebben om aanpassingen te maken of voor te stellen in dit bestand
|
||||
editor.file_delete_success=Bestand '%s' is succesvol verwijderd!
|
||||
editor.name_your_file=Bestandsnaam...
|
||||
editor.filename_help=To add directory, just type it and press /. To remove a directory, go to the beginning of the field and press backspace.
|
||||
editor.filename_help=Om een map toe te voegen, begin met typen en druk op /. Om een map te verwijderen, ga naar het begin van het veld en druk op backspace.
|
||||
editor.or=of
|
||||
editor.cancel_lower=annuleren
|
||||
editor.commit_changes=Commit Changes
|
||||
editor.commit_changes=Wijzigingen toepassen
|
||||
editor.add_tmpl='%s/<filename>' toevoegen
|
||||
editor.add='%s' toevoegen
|
||||
editor.update='%s' updaten
|
||||
editor.delete='%s' verwijderen
|
||||
editor.commit_message_desc=Add an optional extended description...
|
||||
editor.commit_message_desc=Voeg een optionele beschrijving toe...
|
||||
editor.commit_directly_to_this_branch=Commit directly to the <strong class="branch-name">%s</strong> branch.
|
||||
editor.create_new_branch=Create a <strong>new branch</strong> for this commit and start a pull request.
|
||||
editor.new_branch_name_desc=Naam nieuwe aftakking...
|
||||
@@ -479,11 +527,12 @@ editor.branch_already_exists=Aftakking '%s' bestaat al in deze repository.
|
||||
editor.directory_is_a_file=Entry '%s' in the parent path is a file not a directory in this repository.
|
||||
editor.file_is_a_symlink=The file '%s' is a symlink that cannot be modified from the web editor.
|
||||
editor.filename_is_a_directory=The filename '%s' is an existing directory in this repository.
|
||||
editor.file_editing_no_longer_exists=The file '%s' you are editing no longer exists in the repository.
|
||||
editor.file_editing_no_longer_exists=Het bestand '%s' die u aan het bewerken bent bestaat niet meer in deze repository.
|
||||
editor.file_changed_while_editing=File content has been changed since you started editing. <a target="_blank" href="%s">Click here</a> to see what have been changed or <strong>press commit again</strong> to overwrite those changes.
|
||||
editor.file_already_exists=A file with name '%s' already exists in this repository.
|
||||
editor.no_changes_to_show=Er zijn geen wijzigingen om weer te geven.
|
||||
editor.fail_to_update_file=Failed to update/create file '%s' with error: %v
|
||||
editor.fail_to_delete_file=Failed to delete file '%s' with error: %v
|
||||
editor.add_subdir=Submap toevoegen...
|
||||
editor.unable_to_upload_files=Failed to upload files to '%s' with error: %v
|
||||
editor.upload_files_to_dir=Bestanden uploaden naar '%s'
|
||||
@@ -528,7 +577,7 @@ issues.filter_milestone_no_select=Geen geselecteerde mijlpaal
|
||||
issues.filter_assignee=Aangewezene
|
||||
issues.filter_assginee_no_select=Geen geselecteerde verantwoordelijke
|
||||
issues.filter_type=Type
|
||||
issues.filter_type.all_issues=Alle kwesties
|
||||
issues.filter_type.all_issues=Alle issues
|
||||
issues.filter_type.assigned_to_you=Aan jou toegewezen
|
||||
issues.filter_type.created_by_you=Aangemaakt door jou
|
||||
issues.filter_type.mentioning_you=Vermelden jou
|
||||
@@ -586,6 +635,7 @@ pulls.compare_compare=vergelijk
|
||||
pulls.filter_branch=Filter branch
|
||||
pulls.no_results=Geen resultaten gevonden.
|
||||
pulls.nothing_to_compare=Er is niets te vergelijken omdat base en head branches dezelfde zijn.
|
||||
pulls.nothing_merge_base=There is nothing to compare because two branches have completely different history.
|
||||
pulls.has_pull_request=' Er is al een pull-aanvraag tussen deze twee targets: <a href="%[1]s/pulls/%[3]d"> %[2]s #% [3]d</a>'
|
||||
pulls.create=Pull verzoek aanmaken
|
||||
pulls.title_desc=wil %[1]d commits van <code>%[2]s</code> samenvoegen met <code>%[3]s</code>
|
||||
@@ -601,6 +651,9 @@ pulls.is_checking=Controle van conflicten is nog bezig, ververs deze pagina in e
|
||||
pulls.can_auto_merge_desc=Dit pull-request kan automatisch samengevoegd worden.
|
||||
pulls.cannot_auto_merge_desc=Dit pull-request kan niet worden gemerged omdat er conflicten zijn.
|
||||
pulls.cannot_auto_merge_helper=Gelieve beide versies manueel samen te voegen om de conflicten op te lossen.
|
||||
pulls.create_merge_commit=Create a merge commit
|
||||
pulls.rebase_before_merging=Rebase before merging
|
||||
pulls.commit_description=Commit Description
|
||||
pulls.merge_pull_request=Samenvoegen van pull verzoek
|
||||
pulls.open_unmerged_pull_exists=U kan de bewerking 'heropenen' niet uitvoeren omdat er al een pull-aanvraag (#%d) is van dezelfde repository met dezelfde informatie. Voeg deze eerst samen.
|
||||
pulls.delete_branch=Aftakking verwijderen
|
||||
@@ -659,7 +712,7 @@ settings.branches=Branches
|
||||
settings.branches_bare=You cannot manage branches for bare repository. Please push some content first.
|
||||
settings.default_branch=Default Branch
|
||||
settings.default_branch_desc=The default branch is considered the "base" branch for code commits, pull requests and online editing.
|
||||
settings.update=Update
|
||||
settings.update=Bijwerken
|
||||
settings.update_default_branch_unsupported=Change default branch is not supported by the Git version on server.
|
||||
settings.update_default_branch_success=Default branch of this repository has been updated successfully!
|
||||
settings.protected_branches=Protected Branches
|
||||
@@ -674,7 +727,7 @@ settings.protect_require_pull_request_desc=Enable this option to disable direct
|
||||
settings.protect_whitelist_committers=Whitelist who can push to this branch
|
||||
settings.protect_whitelist_committers_desc=Add people or teams to whitelist of direct push to this branch. Users in whitelist will bypass require pull request check.
|
||||
settings.protect_whitelist_users=Users who can push to this branch
|
||||
settings.protect_whitelist_search_users=Search users
|
||||
settings.protect_whitelist_search_users=Doorzoek gebruikers
|
||||
settings.protect_whitelist_teams=Teams for which members of them can push to this branch
|
||||
settings.protect_whitelist_search_teams=Search teams
|
||||
settings.update_protect_branch_success=Protect options for this branch has been updated successfully!
|
||||
@@ -694,18 +747,20 @@ settings.allow_public_wiki_desc=Allow public access to wiki when repository is p
|
||||
settings.use_external_wiki=Externe wiki gebruiken
|
||||
settings.external_wiki_url=Externe wiki-URL
|
||||
settings.external_wiki_url_desc=Bezoekers worden doorgestuurd naar de URL als ze op het tabblad klikken.
|
||||
settings.issues_desc=Kwestietracker inschakelen
|
||||
settings.use_internal_issue_tracker=Gebruik ingebouwde eenvoudige kwestietracker
|
||||
settings.issues_desc=Issuetracker inschakelen
|
||||
settings.use_internal_issue_tracker=Gebruik ingebouwde eenvoudige issuetracker
|
||||
settings.allow_public_issues_desc=Allow public access to issues when repository is private
|
||||
settings.use_external_issue_tracker=Externe issuetracker gebruiken
|
||||
settings.external_tracker_url=URL externe kwestietracker
|
||||
settings.external_tracker_url=URL externe issuetracker
|
||||
settings.external_tracker_url_desc=Bezoekers worden doorgestuurd naar de URL als ze op het tabblad klikken.
|
||||
settings.tracker_url_format=URL-formaat externe issuetracker
|
||||
settings.tracker_issue_style=Naamgevingstijl externe kwestietracker:
|
||||
settings.tracker_issue_style=Naamgevingstijl externe issuetracker:
|
||||
settings.tracker_issue_style.numeric=Nummeriek
|
||||
settings.tracker_issue_style.alphanumeric=Alfanummeriek
|
||||
settings.tracker_url_format_desc=U kan de aanduidingen <code>{user} {repo} {index}</code> gebruiken voor de gebruikersnaam, de naam van de repository en de lijst van open tickets.
|
||||
settings.pulls_desc=Schakel 'pull request' in om publieke bijdragen te mogelijk te maken
|
||||
settings.pulls_desc=Enable pull requests to accept contributions between repositories and branches
|
||||
settings.pulls.ignore_whitespace=Ignore changes in whitespace
|
||||
settings.pulls.allow_rebase_merge=Allow use rebase to merge commits
|
||||
settings.danger_zone=Gevaren zone
|
||||
settings.cannot_fork_to_same_owner=You cannot fork a repository to its original owner.
|
||||
settings.new_owner_has_same_repo=De nieuwe eigenaar heeft al een repositorie met deze naam
|
||||
@@ -726,7 +781,7 @@ settings.wiki_deletion_success=De repository met wiki data is succesvol gewist.
|
||||
settings.delete=Verwijder deze repositorie
|
||||
settings.delete_desc=Als u eenmaal een repositorie verwijderd is er geen weg terug. Gelieve zeker te zijn van uw acties.
|
||||
settings.delete_notices_1=- Deze bewerking kan <strong>NIET</strong> ongedaan gemaakt worden.
|
||||
settings.delete_notices_2=- Deze bewerking verwijdert permanent alle informatie van deze repository met inbegrip van Git gegevens, tickets, opmerkingen en de toegang van medewerkers.
|
||||
settings.delete_notices_2=- This operation will permanently delete everything in this repository, including Git data, issues, comments and collaborator access.
|
||||
settings.delete_notices_fork_1=- All forks will become independent after deletion.
|
||||
settings.deletion_success=Repository is succesvol verwijderd!
|
||||
settings.update_settings_success=Repositorie instellingen zijn succesvol bijgewerkt.
|
||||
@@ -742,8 +797,10 @@ settings.collaborator_deletion_desc=Deze gebruiker zal niet langer toegang hebbe
|
||||
settings.remove_collaborator_success=medewerker is verwijderd.
|
||||
settings.search_user_placeholder=Zoek gebruiker...
|
||||
settings.org_not_allowed_to_be_collaborator=De organisatie kan niet toegevoegd worden als medewerker.
|
||||
settings.add_webhook=Webhook toevoegen
|
||||
settings.hooks_desc=Webhooks dat de externe diensten om kennisgevingen te ontvangen wanneer bepaalde gebeurtenissen op Gogs plaatsvinden. Wanneer de opgegeven gebeurtenissen plaatsvinden, sturen we een POST-aanvraag naar elk van de URL's die u opgeeft. Meer informatie vindt u in onze <a target="_blank" href="%s"> Webhooks gids</a>.
|
||||
settings.webhooks.add_new=Add a new webhook:
|
||||
settings.webhooks.choose_a_type=Choose a type...
|
||||
settings.add_webhook=Webhook toevoegen
|
||||
settings.webhook_deletion=Webhook verwijderen
|
||||
settings.webhook_deletion_desc=Verwijderen van deze webhook zal de informatie en alle geschiedenis verwijderen. Wilt u doorgaan?
|
||||
settings.webhook_deletion_success=Webhook is succesvol verwijderd!
|
||||
@@ -757,6 +814,8 @@ settings.webhook.response=Antwoord
|
||||
settings.webhook.headers=Headers
|
||||
settings.webhook.payload=Lading
|
||||
settings.webhook.body=Inhoud
|
||||
settings.webhook.err_cannot_parse_payload_url=Cannot parse payload URL: %v
|
||||
settings.webhook.url_resolved_to_blocked_local_address=Payload URL resolved to a local network address that is implicitly blocked.
|
||||
settings.githooks_desc=Git haken worden aangedreven door Git zelf, u kunt bestanden van ondersteunde haken in de lijst hieronder om aangepaste acties van toepassing bewerken.
|
||||
settings.githook_edit_desc=Als haak niet actief is, zal monster inhoud worden gepresenteerd. Verlof inhoud leeg zal deze haak uitschakelen.
|
||||
settings.githook_name=Haak naam
|
||||
@@ -776,7 +835,7 @@ settings.event_send_everything=Ik moet <strong>alles</strong> hebben.
|
||||
settings.event_choose=Laat me kiezen wat ik nodig heb.
|
||||
settings.event_create=Creëer
|
||||
settings.event_create_desc=Branch, of tag aangemaakt
|
||||
settings.event_delete=Delete
|
||||
settings.event_delete=Verwijderen
|
||||
settings.event_delete_desc=Branch or tag deleted
|
||||
settings.event_fork=Fork
|
||||
settings.event_fork_desc=Repository forked
|
||||
@@ -784,10 +843,10 @@ settings.event_push=Push
|
||||
settings.event_push_desc=Git push naar een repository
|
||||
settings.event_issues=Issues
|
||||
settings.event_issues_desc=Issue opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, or demilestoned.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_pull_request=Pull request
|
||||
settings.event_pull_request_desc=Pull request opened, closed, reopened, edited, assigned, unassigned, label updated, label cleared, milestoned, demilestoned, or synchronized.
|
||||
settings.event_issue_comment=Issue Comment
|
||||
settings.event_issue_comment_desc=Issue comment created, edited, or deleted.
|
||||
settings.event_release=Release
|
||||
settings.event_release_desc=Release published in a repository.
|
||||
settings.active=Actief
|
||||
@@ -800,6 +859,7 @@ settings.recent_deliveries=Recente bezorgingen
|
||||
settings.hook_type=Type hook
|
||||
settings.add_slack_hook_desc=<a href="%s"> toegestane vertraging</a> integratie toevoegen aan uw repository.
|
||||
settings.add_discord_hook_desc=Add <a href="%s">Discord</a> integration to your repository.
|
||||
settings.add_dingtalk_hook_desc=Add <a href="%s">Dingtalk</a> integration to your repository.
|
||||
settings.slack_token=Slack token
|
||||
settings.slack_domain=Slack domein
|
||||
settings.slack_channel=Slack kanaal
|
||||
@@ -816,6 +876,8 @@ settings.add_key_success=Nieuwe deploy sleutel '%s' werd succesvol toegevoegd!
|
||||
settings.deploy_key_deletion=Verwijder deploy sleutel
|
||||
settings.deploy_key_deletion_desc=Het verwijderen van deze deploy sleutel zal alle gerelateerde toegang verwijderen voor deze repositorie. Wilt u doorgaan?
|
||||
settings.deploy_key_deletion_success=Deploy sleutel werd met succes verwijderd!
|
||||
settings.description_desc=Description of repository. Maximum 512 characters length.
|
||||
settings.description_length=Available characters
|
||||
|
||||
diff.browse_source=Bladeren bron
|
||||
diff.parent=bovenliggende
|
||||
@@ -880,9 +942,8 @@ team_name_helper=U gebruikt deze naam om dit team te vermelden in conversaties.
|
||||
team_desc_helper=Waar gaat dit team doen?
|
||||
team_permission_desc=Welke privileges zou dit team moeten hebben?
|
||||
|
||||
form.name_reserved=Organisatienaam '%s' is gereserveerd.
|
||||
form.name_pattern_not_allowed=Organisatie naampatroon '%s' is niet toegestaan.
|
||||
form.team_name_reserved=Team name '%s' is reserved.
|
||||
form.name_not_allowed=Organization name or pattern %q is not allowed.
|
||||
form.team_name_not_allowed=Team name or pattern %q is not allowed.
|
||||
|
||||
settings=Instellingen
|
||||
settings.options=Opties
|
||||
@@ -954,12 +1015,19 @@ first_page=Eerste
|
||||
last_page=Laatste
|
||||
total=Totaal: %d
|
||||
|
||||
dashboard.build_info=Build Information
|
||||
dashboard.app_ver=Application version
|
||||
dashboard.git_version=Git version
|
||||
dashboard.go_version=Go version
|
||||
dashboard.build_time=Build time
|
||||
dashboard.build_commit=Build commit
|
||||
dashboard.statistic=Statistieken
|
||||
dashboard.operations=Bewerkingen
|
||||
dashboard.system_status=Status Systeemmonitor
|
||||
dashboard.statistic_info=Gogs database heeft <b>%d</b> gebruikers, <b>%d</b> organisaties, <b>%d</b> openbare sleutels, <b>%d</b> repositories, <b>%d</b> volgers, <b>%d</b> sterren, <b>%d</b> acties, <b>%d</b> participanten, <b>%d</b> issues, <b>%d</b> reacties, <b>%d</b> sociale accounten, <b>%d</b> volgers, <b>%d</b> mirrors, <b>%d</b> publicaties, <b>%d</b> login bronnen, <b>%d</b> webhooks, <b>%d</b> mijlpalen, <b>%d</b> labels, <b>%d</b> hook taken, <b>%d</b> teams, <b>%d</b> bijgewerkte taken, <b>%d</b> bijlagen.
|
||||
dashboard.operation_name=Bewerking naam
|
||||
dashboard.operation_switch=Omschakelen
|
||||
dashboard.select_operation_to_run=Please select operation to run
|
||||
dashboard.operation_run=Uitvoeren
|
||||
dashboard.clean_unbind_oauth=Clean unbound OAuths
|
||||
dashboard.clean_unbind_oauth_success=Alle OAuthes binding hebben verwijderd.
|
||||
@@ -1034,7 +1102,7 @@ users.allow_import_local=Dit account mag lokale repositories importeren
|
||||
users.update_profile=Account profiel bijwerken
|
||||
users.delete_account=Dit account verwijderen
|
||||
users.still_own_repo=Dit account is nog steeds eigendom van een repositorie. U moet deze repositorie eerst verwijderen of overdragen.
|
||||
users.still_has_org=Deze account nog steeds lidmaatschap van organisatie, u hebt naar links of hen eerst verwijderen.
|
||||
users.still_has_org=Dit account is nog lid van ten minste één organisatie. Zeg dit lidmaatschap voor dit account op of verwijder de organisatie eerst.
|
||||
users.deletion_success=Het account is verwijderd!
|
||||
|
||||
orgs.org_manage_panel=Organisaties beheren
|
||||
@@ -1048,14 +1116,15 @@ repos.name=Naam
|
||||
repos.private=Prive
|
||||
repos.watches=Volgers
|
||||
repos.stars=Sterren
|
||||
repos.issues=Kwesties
|
||||
repos.issues=Issues
|
||||
repos.size=Size
|
||||
|
||||
auths.auth_manage_panel=Authenticatie-beheer paneel
|
||||
auths.auth_sources=Authenticatiebronnen
|
||||
auths.new=Nieuwe bron toevoegen
|
||||
auths.name=Naam
|
||||
auths.type=Type
|
||||
auths.enabled=Ingeschakeld
|
||||
auths.default=Default
|
||||
auths.updated=Bijgewerkt
|
||||
auths.auth_type=Authenticatietype
|
||||
auths.auth_name=Authenticatienaam
|
||||
@@ -1064,15 +1133,21 @@ auths.domain=Domein
|
||||
auths.host=Host
|
||||
auths.port=Poort
|
||||
auths.bind_dn=Binden DN
|
||||
auths.bind_dn_helper=You can use '%s' as placeholder for username, e.g. DOM\%s
|
||||
auths.bind_password=Bind wachtwoord
|
||||
auths.bind_password_helper=Opgelet: Dit wachtwoord wordt opgeslagen als leesbare tekst. Gebruik geen account met verhoogde rechten.
|
||||
auths.user_base=User Search Base
|
||||
auths.user_dn=User DN
|
||||
auths.attribute_username=Gebruikersnaam attribuut
|
||||
auths.attribute_username_placeholder=Laat leeg om het login veld van het formulier te gebruiken als gebruikersnaam.
|
||||
auths.attribute_name=Voornaam attribuut
|
||||
auths.attribute_name=First Name Attribute
|
||||
auths.attribute_surname=Achternaam attribuut
|
||||
auths.attribute_mail=E-mail attribuut
|
||||
auths.verify_group_membership=Verify group membership
|
||||
auths.group_search_base_dn=Group Search Base DN
|
||||
auths.group_filter=Group Filter
|
||||
auths.group_attribute_contain_user_list=Group Attribute Containing List of Users
|
||||
auths.user_attribute_listed_in_group=User Attribute Listed in Group
|
||||
auths.attributes_in_bind=Verkrijg attributes van de Bind DN context
|
||||
auths.filter=Gebruikersfilter
|
||||
auths.admin_filter=Beheerdersfilter
|
||||
@@ -1086,9 +1161,9 @@ auths.enable_tls=Activeer TLS-encryptie
|
||||
auths.skip_tls_verify=TLS-verificatie overslaan
|
||||
auths.pam_service_name=PAM servicenaam
|
||||
auths.enable_auto_register=Activeer automatische registratie
|
||||
auths.tips=Tips
|
||||
auths.edit=Verificatie-instelling bewerken
|
||||
auths.activated=Deze autorisatiemethode is geactiveerd
|
||||
auths.default_auth=Deze authenticatie bron is de standaard bron
|
||||
auths.new_success=Nieuwe authenticatie '%s' werd toegevoegd.
|
||||
auths.update_success=Authenticatie instellingen zijn succesvol gewijzigd.
|
||||
auths.update=Authenticatie-instellingen bijwerken
|
||||
@@ -1098,115 +1173,186 @@ auths.delete_auth_desc=Deze authenticatie zal verwijderd worden, wil je verderga
|
||||
auths.still_in_used=This authentication is still used by some users, please delete or convert these users to another login type first.
|
||||
auths.deletion_success=Authenticatie is met succes verwijderd!
|
||||
auths.login_source_exist=Login source '%s' already exists.
|
||||
auths.github_api_endpoint=API Endpoint
|
||||
|
||||
config.not_set=(not set)
|
||||
config.server_config=Serverconfiguratie
|
||||
config.app_name=Applicatienaam
|
||||
config.app_ver=Applicatieversie
|
||||
config.app_url=Applicatie-URL
|
||||
config.domain=Domein
|
||||
config.offline_mode=Offline-modus
|
||||
config.disable_router_log=Router-log uitschakelen
|
||||
config.brand_name=Brand name
|
||||
config.run_user=Uitvoerende gebruiker
|
||||
config.run_mode=Uitvoer modus
|
||||
config.git_version=Gitversie
|
||||
config.static_file_root_path=Statische bestanden basis pad
|
||||
config.log_file_root_path=Log bestand basis pad
|
||||
config.reverse_auth_user=Omgekeerde verificatie gebruiker
|
||||
config.server.external_url=External URL
|
||||
config.server.domain=Domain
|
||||
config.server.protocol=Protocol
|
||||
config.server.http_addr=HTTP address
|
||||
config.server.http_port=HTTP port
|
||||
config.server.cert_file=Certificate file
|
||||
config.server.key_file=Key file
|
||||
config.server.tls_min_version=Minimum TLS version
|
||||
config.server.unix_socket_permission=Unix socket permission
|
||||
config.server.local_root_url=Local root URL
|
||||
config.server.offline_mode=Offline mode
|
||||
config.server.disable_router_log=Disable router log
|
||||
config.server.enable_gzip=Enable Gzip
|
||||
config.server.app_data_path=Application data path
|
||||
config.server.load_assets_from_disk=Load assets from disk
|
||||
config.server.landing_url=Landing URL
|
||||
|
||||
config.ssh_config=SSH-configuratie
|
||||
config.ssh_enabled=Ingeschakeld
|
||||
config.ssh_start_builtin_server=Ingebouwde server starten
|
||||
config.ssh_domain=Domein
|
||||
config.ssh_port=Poort
|
||||
config.ssh_listen_port=Luister op poort
|
||||
config.ssh_root_path=Root-pad
|
||||
config.ssh_key_test_path=Pad voor key-tests
|
||||
config.ssh_keygen_path=Pad van keygen ('ssh-keygen')
|
||||
config.ssh_minimum_key_size_check=Controleer minimale key-lengte
|
||||
config.ssh_minimum_key_sizes=Minimale key-lengtes
|
||||
config.ssh.enabled=Enabled
|
||||
config.ssh.domain=Exposed domain
|
||||
config.ssh.port=Exposed port
|
||||
config.ssh.root_path=Root path
|
||||
config.ssh.keygen_path=Keygen path
|
||||
config.ssh.key_test_path=Key test path
|
||||
config.ssh.minimum_key_size_check=Minimum key size check
|
||||
config.ssh.minimum_key_sizes=Minimum key sizes
|
||||
config.ssh.rewrite_authorized_keys_at_start=Rewrite "authorized_keys" at start
|
||||
config.ssh.start_builtin_server=Start builtin server
|
||||
config.ssh.listen_host=Listen host
|
||||
config.ssh.listen_port=Listen port
|
||||
config.ssh.server_ciphers=Server ciphers
|
||||
config.ssh.server_macs=Server MACs
|
||||
config.ssh.server_algorithms=Server algorithms
|
||||
|
||||
config.repo_config=Repository Configuration
|
||||
config.repo_root_path=Repositorie basis pad
|
||||
config.script_type=Script type
|
||||
config.repo_force_private=Force Private
|
||||
config.max_creation_limit=Max Creation Limit
|
||||
config.preferred_licenses=Preferred Licenses
|
||||
config.disable_http_git=Disable HTTP Git
|
||||
config.enable_local_path_migration=Enable Local Path Migration
|
||||
config.commits_fetch_concurrency=Commits Fetch Concurrency
|
||||
config.repo_config=Repository configuration
|
||||
config.repo.root_path=Root path
|
||||
config.repo.script_type=Script type
|
||||
config.repo.ansi_chatset=ANSI charset
|
||||
config.repo.force_private=Force private
|
||||
config.repo.max_creation_limit=Max creation limit
|
||||
config.repo.preferred_licenses=Preferred licenses
|
||||
config.repo.disable_http_git=Disable HTTP Git
|
||||
config.repo.enable_local_path_migration=Enable local path migration
|
||||
config.repo.enable_raw_file_render_mode=Enable raw file render mode
|
||||
config.repo.commits_fetch_concurrency=Commits fetch concurrency
|
||||
config.repo.editor.line_wrap_extensions=Editor line wrap extensions
|
||||
config.repo.editor.previewable_file_modes=Editor previewable file modes
|
||||
config.repo.upload.enabled=Upload enabled
|
||||
config.repo.upload.temp_path=Upload temporary path
|
||||
config.repo.upload.allowed_types=Upload allowed types
|
||||
config.repo.upload.file_max_size=Upload file size limit
|
||||
config.repo.upload.max_files=Upload files limit
|
||||
|
||||
config.db_config=Databaseconfiguratie
|
||||
config.db_type=Type
|
||||
config.db_host=Host
|
||||
config.db_name=Naam
|
||||
config.db_user=Gebruiker
|
||||
config.db_ssl_mode=SSL modus
|
||||
config.db_ssl_mode_helper=(alleen voor "postgres")
|
||||
config.db_path=Pad
|
||||
config.db_path_helper=(voor "sqlite3" en "tidb")
|
||||
config.db.type=Type
|
||||
config.db.host=Host
|
||||
config.db.name=Name
|
||||
config.db.schema=Schema
|
||||
config.db.schema_helper=(for "postgres" only)
|
||||
config.db.user=User
|
||||
config.db.ssl_mode=SSL mode
|
||||
config.db.ssl_mode_helper=(for "postgres" only)
|
||||
config.db.path=Path
|
||||
config.db.path_helper=(for "sqlite3"only)
|
||||
config.db.max_open_conns=Maximum open connections
|
||||
config.db.max_idle_conns=Maximum idle connections
|
||||
|
||||
config.service_config=Serviceconfiguratie
|
||||
config.register_email_confirm=E-mailbevestiging registreren
|
||||
config.disable_register=Registratie uitgeschakeld
|
||||
config.show_registration_button=Registeren knop weergeven
|
||||
config.require_sign_in_view=Inloggen vereist om te kunnen inzien
|
||||
config.mail_notify=E-mailnotificaties
|
||||
config.disable_key_size_check=Controle op key-lengte uitschakelen
|
||||
config.enable_captcha=CAPTCHA inschakelen
|
||||
config.active_code_lives=Actieve Code leven
|
||||
config.reset_password_code_lives=Reset wachtwoord Code leven
|
||||
config.security_config=Security configuration
|
||||
config.security.login_remember_days=Login remember days
|
||||
config.security.cookie_remember_name=Remember cookie
|
||||
config.security.cookie_username=Username cookie
|
||||
config.security.cookie_secure=Enable secure cookie
|
||||
config.security.reverse_proxy_auth_user=Reverse proxy authentication header
|
||||
config.security.enable_login_status_cookie=Enable login status cookie
|
||||
config.security.login_status_cookie_name=Login status cookie
|
||||
config.security.local_network_allowlist=Local network allowlist
|
||||
|
||||
config.webhook_config=Webhook configuratie
|
||||
config.queue_length=Lengte van wachtrij
|
||||
config.deliver_timeout=Bezorging verlooptijd
|
||||
config.skip_tls_verify=TLS certificaat controle overslaan
|
||||
config.email_config=Email configuration
|
||||
config.email.enabled=Enabled
|
||||
config.email.subject_prefix=Subject prefix
|
||||
config.email.host=Host
|
||||
config.email.from=From
|
||||
config.email.user=User
|
||||
config.email.disable_helo=Disable HELO
|
||||
config.email.helo_hostname=HELO hostname
|
||||
config.email.skip_verify=Skip certificate verify
|
||||
config.email.use_certificate=Use custom certificate
|
||||
config.email.cert_file=Certificate file
|
||||
config.email.key_file=Key file
|
||||
config.email.use_plain_text=Use plain text
|
||||
config.email.add_plain_text_alt=Add plain text alternative
|
||||
config.email.send_test_mail=Send test email
|
||||
config.email.test_mail_failed=Failed to send test email to '%s': %v
|
||||
config.email.test_mail_sent=Test email has been sent to '%s'.
|
||||
|
||||
config.mailer_config=Mailerconfiguatie
|
||||
config.mailer_enabled=Ingeschakeld
|
||||
config.mailer_disable_helo=Schakel HELO uit
|
||||
config.mailer_name=Naam
|
||||
config.mailer_host=Host
|
||||
config.mailer_user=Gebruiker
|
||||
config.send_test_mail=Testbericht verzenden
|
||||
config.test_mail_failed=Verzending van een testmail naar '%s' is mislukt: %v
|
||||
config.test_mail_sent=Test-email is verstuurd naar '%s'.
|
||||
config.auth_config=Authentication configuration
|
||||
config.auth_custom_logout_url=Custom logout URL
|
||||
config.auth.activate_code_lives=Activate code lives
|
||||
config.auth.reset_password_code_lives=Reset password code lives
|
||||
config.auth.require_email_confirm=Require email confirmation
|
||||
config.auth.require_sign_in_view=Require sign in view
|
||||
config.auth.disable_registration=Disable registration
|
||||
config.auth.enable_registration_captcha=Enable registration captcha
|
||||
config.auth.enable_reverse_proxy_authentication=Enable reverse proxy authentication
|
||||
config.auth.enable_reverse_proxy_auto_registration=Enable reverse proxy auto registration
|
||||
config.auth.reverse_proxy_authentication_header=Reverse proxy authentication header
|
||||
|
||||
config.oauth_config=OAuth-configuratie
|
||||
config.oauth_enabled=Ingeschakeld
|
||||
|
||||
config.cache_config=Cache-configuratie
|
||||
config.cache_adapter=Cache-adapter
|
||||
config.cache_interval=Cache-interval
|
||||
config.cache_conn=Cache-connectie
|
||||
config.user_config=User configuration
|
||||
config.user.enable_email_notify=Enable email notification
|
||||
|
||||
config.session_config=Sessieconfiguratie
|
||||
config.session_provider=Sessieprovider
|
||||
config.provider_config=Provider config
|
||||
config.cookie_name=Cookie naam
|
||||
config.enable_set_cookie=Set Cookie inschakelen
|
||||
config.gc_interval_time=GC interval time
|
||||
config.session_life_time=Sessie duur
|
||||
config.https_only=Alleen HTTPS
|
||||
config.cookie_life_time=Cookie duur leeftijd
|
||||
config.session.provider=Provider
|
||||
config.session.provider_config=Provider config
|
||||
config.session.cookie_name=Cookie
|
||||
config.session.https_only=HTTPS only
|
||||
config.session.gc_interval=GC interval
|
||||
config.session.max_life_time=Max life time
|
||||
config.session.csrf_cookie_name=CSRF cookie
|
||||
|
||||
config.cache_config=Cache-configuratie
|
||||
config.cache.adapter=Adapter
|
||||
config.cache.interval=GC interval
|
||||
config.cache.host=Host
|
||||
|
||||
config.http_config=HTTP configuration
|
||||
config.http.access_control_allow_origin=Access control allow origin
|
||||
|
||||
config.attachment_config=Attachment configuration
|
||||
config.attachment.enabled=Enabled
|
||||
config.attachment.path=Path
|
||||
config.attachment.allowed_types=Allowed types
|
||||
config.attachment.max_size=Size limit
|
||||
config.attachment.max_files=Files limit
|
||||
|
||||
config.release_config=Release configuration
|
||||
config.release.attachment.enabled=Attachment enabled
|
||||
config.release.attachment.allowed_types=Attachment allowed types
|
||||
config.release.attachment.max_size=Attachment size limit
|
||||
config.release.attachment.max_files=Attachment files limit
|
||||
|
||||
config.picture_config=Foto configuratie
|
||||
config.picture_service=Foto service
|
||||
config.disable_gravatar=Gravatar uitschakelen
|
||||
config.enable_federated_avatar=Federated Avatars toestaan
|
||||
config.picture.avatar_upload_path=User avatar upload path
|
||||
config.picture.repo_avatar_upload_path=Repository avatar upload path
|
||||
config.picture.gravatar_source=Gravatar source
|
||||
config.picture.disable_gravatar=Disable Gravatar
|
||||
config.picture.enable_federated_avatar=Enable federated avatars
|
||||
|
||||
config.mirror_config=Mirror configuration
|
||||
config.mirror.default_interval=Default interval
|
||||
|
||||
config.webhook_config=Webhook configuratie
|
||||
config.webhook.types=Types
|
||||
config.webhook.deliver_timeout=Deliver timeout
|
||||
config.webhook.skip_tls_verify=Skip TLS verify
|
||||
|
||||
config.git_config=Gitconfiguratie
|
||||
config.git_disable_diff_highlight=Disable Diff Syntax Highlight
|
||||
config.git_max_diff_lines=Max Diff Lines (for a single file)
|
||||
config.git_max_diff_line_characters=Max Diff Characters (for a single line)
|
||||
config.git_max_diff_files=Max Diff Files (to be shown)
|
||||
config.git_gc_args=GC Arguments
|
||||
config.git_migrate_timeout=Migration Timeout
|
||||
config.git_mirror_timeout=Mirror Update Timeout
|
||||
config.git_clone_timeout=Clone Operation Timeout
|
||||
config.git_pull_timeout=Pull Operation Timeout
|
||||
config.git_gc_timeout=GC Operation Timeout
|
||||
config.git.disable_diff_highlight=Disable diff syntax highlight
|
||||
config.git.max_diff_lines=Diff lines limit (for a single file)
|
||||
config.git.max_diff_line_characters=Diff characters limit (for a single line)
|
||||
config.git.max_diff_files=Diff files limit (for a single diff)
|
||||
config.git.gc_args=GC arguments
|
||||
config.git.migrate_timeout=Migration timeout
|
||||
config.git.mirror_timeout=Mirror fetch timeout
|
||||
config.git.clone_timeout=Clone timeout
|
||||
config.git.pull_timeout=Pull timeout
|
||||
config.git.gc_timeout=GC timeout
|
||||
|
||||
config.lfs_config=LFS configuration
|
||||
config.lfs.storage=Storage
|
||||
config.lfs.objects_path=Objects path
|
||||
|
||||
config.log_config=Logconfiguratie
|
||||
config.log_file_root_path=Log bestand basis pad
|
||||
config.log_mode=Mode
|
||||
config.log_options=Options
|
||||
|
||||
@@ -1237,14 +1383,13 @@ notices.delete_success=System notices have been deleted successfully.
|
||||
|
||||
[action]
|
||||
create_repo=repositorie aangemaakt in <a href="%s">%s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
rename_repo=hernoemde repository van <code>%[1]s</code> naar <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=push update naar <a href="%[1]s/src/%[2]s">%[3]s</a> in <a href="%[1]s">%[4]s</a>
|
||||
compare_commits=Toon vergelijking voor deze %d commits
|
||||
transfer_repo=repositorie verplaatst naar <code>%s</code> naar <a href="%s">%s</a>
|
||||
create_issue=`opende issue in <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
close_issue=`sloot kwestie <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
reopen_issue=`heropende kwestie <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
close_issue=`gesloten issue <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
reopen_issue=`heropende issue <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
comment_issue=`reactie op issue <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
create_pull_request=`maakte pull request <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
close_pull_request=`sloot pull request <a href="%s/issues/%s">%s#%[2]s</a>`
|
||||
@@ -1254,6 +1399,10 @@ create_branch=created new branch <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href=
|
||||
delete_branch=deleted branch <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
push_tag=geduwd label <a href="%s/src/%s"> %[2]s</a> naar <a href="%[1]s"> %[3]s</a>
|
||||
delete_tag=deleted tag <code>%[2]s</code> at <a href="%[1]s">%[3]s</a>
|
||||
fork_repo=forked a repository to <a href="%s">%s</a>
|
||||
mirror_sync_push=synced commits to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a> from mirror
|
||||
mirror_sync_create=synced new reference <a href="%s/src/%s">%[2]s</a> to <a href="%[1]s">%[3]s</a> from mirror
|
||||
mirror_sync_delete=synced and deleted reference <code>%[2]s</code> at <a href="%[1]s">%[3]s</a> from mirror
|
||||
|
||||
[tool]
|
||||
ago=geleden
|
||||
@@ -1275,6 +1424,7 @@ months=%d maanden %s
|
||||
years=%d jaren %s
|
||||
raw_seconds=seconden
|
||||
raw_minutes=minuten
|
||||
raw_hours=hours
|
||||
|
||||
[dropzone]
|
||||
default_message=Drop bestanden hier of klik om te uploaden.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user