Skip to content

Commit bf3aba9

Browse files
authored
Merge branch 'master' into add-test
2 parents 7ce68ed + 09304db commit bf3aba9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+188
-95
lines changed

custom/conf/app.example.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ DEFAULT_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,re
6666
PREFIX_ARCHIVE_FILES = true
6767
; Disable the creation of new mirrors. Pre-existing mirrors remain valid.
6868
DISABLE_MIRRORS = false
69+
; Disable migrating feature.
70+
DISABLE_MIGRATIONS = false
6971
; The default branch name of new repositories
7072
DEFAULT_BRANCH = master
7173
; Allow adoption of unadopted repositories

docs/content/doc/advanced/config-cheat-sheet.en-us.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
7474
- `DEFAULT_REPO_UNITS`: **repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects**: Comma separated list of default repo units. Allowed values: \[repo.code, repo.releases, repo.issues, repo.pulls, repo.wiki, repo.projects\]. Note: Code and Releases can currently not be deactivated. If you specify default repo units you should still list them for future compatibility. External wiki and issue tracker can't be enabled by default as it requires additional settings. Disabled repo units will not be added to new repositories regardless if it is in the default list.
7575
- `PREFIX_ARCHIVE_FILES`: **true**: Prefix archive files by placing them in a directory named after the repository.
7676
- `DISABLE_MIRRORS`: **false**: Disable the creation of **new** mirrors. Pre-existing mirrors remain valid.
77+
- `DISABLE_MIGRATIONS`: **false**: Disable migrating feature.
7778
- `DEFAULT_BRANCH`: **master**: Default branch name of all repositories.
7879
- `ALLOW_ADOPTION_OF_UNADOPTED_REPOSITORIES`: **false**: Allow non-admin users to adopt unadopted repositories
7980
- `ALLOW_DELETION_OF_UNADOPTED_REPOSITORIES`: **false**: Allow non-admin users to delete unadopted repositories

integrations/api_settings_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ func TestAPIExposedSettings(t *testing.T) {
4343

4444
DecodeJSON(t, resp, &repo)
4545
assert.EqualValues(t, &api.GeneralRepoSettings{
46-
MirrorsDisabled: setting.Repository.DisableMirrors,
47-
HTTPGitDisabled: setting.Repository.DisableHTTPGit,
46+
MirrorsDisabled: setting.Repository.DisableMirrors,
47+
HTTPGitDisabled: setting.Repository.DisableHTTPGit,
48+
MigrationsDisabled: setting.Repository.DisableMigrations,
4849
}, repo)
4950

5051
attachment := new(api.GeneralAttachmentSettings)

models/issue.go

Lines changed: 43 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1847,30 +1847,43 @@ func (issue *Issue) ResolveMentionsByVisibility(ctx DBContext, doer *User, menti
18471847
if err = issue.loadRepo(ctx.e); err != nil {
18481848
return
18491849
}
1850-
resolved := make(map[string]bool, 20)
1851-
names := make([]string, 0, 20)
1850+
1851+
resolved := make(map[string]bool, 10)
1852+
var mentionTeams []string
1853+
1854+
if err := issue.Repo.getOwner(ctx.e); err != nil {
1855+
return nil, err
1856+
}
1857+
1858+
repoOwnerIsOrg := issue.Repo.Owner.IsOrganization()
1859+
if repoOwnerIsOrg {
1860+
mentionTeams = make([]string, 0, 5)
1861+
}
1862+
18521863
resolved[doer.LowerName] = true
18531864
for _, name := range mentions {
18541865
name := strings.ToLower(name)
18551866
if _, ok := resolved[name]; ok {
18561867
continue
18571868
}
1858-
resolved[name] = false
1859-
names = append(names, name)
1860-
}
1861-
1862-
if err := issue.Repo.getOwner(ctx.e); err != nil {
1863-
return nil, err
1869+
if repoOwnerIsOrg && strings.Contains(name, "/") {
1870+
names := strings.Split(name, "/")
1871+
if len(names) < 2 || names[0] != issue.Repo.Owner.LowerName {
1872+
continue
1873+
}
1874+
mentionTeams = append(mentionTeams, names[1])
1875+
resolved[name] = true
1876+
} else {
1877+
resolved[name] = false
1878+
}
18641879
}
18651880

1866-
if issue.Repo.Owner.IsOrganization() {
1867-
// Since there can be users with names that match the name of a team,
1868-
// if the team exists and can read the issue, the team takes precedence.
1869-
teams := make([]*Team, 0, len(names))
1881+
if issue.Repo.Owner.IsOrganization() && len(mentionTeams) > 0 {
1882+
teams := make([]*Team, 0, len(mentionTeams))
18701883
if err := ctx.e.
18711884
Join("INNER", "team_repo", "team_repo.team_id = team.id").
18721885
Where("team_repo.repo_id=?", issue.Repo.ID).
1873-
In("team.lower_name", names).
1886+
In("team.lower_name", mentionTeams).
18741887
Find(&teams); err != nil {
18751888
return nil, fmt.Errorf("find mentioned teams: %v", err)
18761889
}
@@ -1883,7 +1896,7 @@ func (issue *Issue) ResolveMentionsByVisibility(ctx DBContext, doer *User, menti
18831896
for _, team := range teams {
18841897
if team.Authorize >= AccessModeOwner {
18851898
checked = append(checked, team.ID)
1886-
resolved[team.LowerName] = true
1899+
resolved[issue.Repo.Owner.LowerName+"/"+team.LowerName] = true
18871900
continue
18881901
}
18891902
has, err := ctx.e.Get(&TeamUnit{OrgID: issue.Repo.Owner.ID, TeamID: team.ID, Type: unittype})
@@ -1892,7 +1905,7 @@ func (issue *Issue) ResolveMentionsByVisibility(ctx DBContext, doer *User, menti
18921905
}
18931906
if has {
18941907
checked = append(checked, team.ID)
1895-
resolved[team.LowerName] = true
1908+
resolved[issue.Repo.Owner.LowerName+"/"+team.LowerName] = true
18961909
}
18971910
}
18981911
if len(checked) != 0 {
@@ -1916,24 +1929,28 @@ func (issue *Issue) ResolveMentionsByVisibility(ctx DBContext, doer *User, menti
19161929
}
19171930
}
19181931
}
1932+
}
19191933

1920-
// Remove names already in the list to avoid querying the database if pending names remain
1921-
names = make([]string, 0, len(resolved))
1922-
for name, already := range resolved {
1923-
if !already {
1924-
names = append(names, name)
1925-
}
1926-
}
1927-
if len(names) == 0 {
1928-
return
1934+
// Remove names already in the list to avoid querying the database if pending names remain
1935+
mentionUsers := make([]string, 0, len(resolved))
1936+
for name, already := range resolved {
1937+
if !already {
1938+
mentionUsers = append(mentionUsers, name)
19291939
}
19301940
}
1941+
if len(mentionUsers) == 0 {
1942+
return
1943+
}
1944+
1945+
if users == nil {
1946+
users = make([]*User, 0, len(mentionUsers))
1947+
}
19311948

1932-
unchecked := make([]*User, 0, len(names))
1949+
unchecked := make([]*User, 0, len(mentionUsers))
19331950
if err := ctx.e.
19341951
Where("`user`.is_active = ?", true).
19351952
And("`user`.prohibit_login = ?", false).
1936-
In("`user`.lower_name", names).
1953+
In("`user`.lower_name", mentionUsers).
19371954
Find(&unchecked); err != nil {
19381955
return nil, fmt.Errorf("find mentioned users: %v", err)
19391956
}

models/issue_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,5 +400,5 @@ func TestIssue_ResolveMentions(t *testing.T) {
400400
// Private repo, not a team member
401401
testSuccess("user17", "big_test_private_4", "user20", []string{"user5"}, []int64{})
402402
// Private repo, whole team
403-
testSuccess("user17", "big_test_private_4", "user15", []string{"owners"}, []int64{18})
403+
testSuccess("user17", "big_test_private_4", "user15", []string{"user17/owners"}, []int64{18})
404404
}

modules/context/context.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ func Contexter() macaron.Handler {
343343

344344
ctx.Data["EnableSwagger"] = setting.API.EnableSwagger
345345
ctx.Data["EnableOpenIDSignIn"] = setting.Service.EnableOpenIDSignIn
346+
ctx.Data["DisableMigrations"] = setting.Repository.DisableMigrations
346347

347348
c.Map(ctx)
348349
}

modules/cron/tasks_basic.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"code.gitea.io/gitea/models"
1212
"code.gitea.io/gitea/modules/migrations"
1313
repository_service "code.gitea.io/gitea/modules/repository"
14+
"code.gitea.io/gitea/modules/setting"
1415
mirror_service "code.gitea.io/gitea/services/mirror"
1516
)
1617

@@ -115,5 +116,7 @@ func initBasicTasks() {
115116
registerArchiveCleanup()
116117
registerSyncExternalUsers()
117118
registerDeletedBranchesCleanup()
118-
registerUpdateMigrationPosterID()
119+
if !setting.Repository.DisableMigrations {
120+
registerUpdateMigrationPosterID()
121+
}
119122
}

modules/markup/html.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -596,11 +596,15 @@ func mentionProcessor(ctx *postProcessCtx, node *html.Node) {
596596
mention := node.Data[loc.Start:loc.End]
597597
var teams string
598598
teams, ok := ctx.metas["teams"]
599-
if ok && strings.Contains(teams, ","+strings.ToLower(mention[1:])+",") {
600-
replaceContent(node, loc.Start, loc.End, createLink(util.URLJoin(setting.AppURL, "org", ctx.metas["org"], "teams", mention[1:]), mention, "mention"))
601-
} else {
602-
replaceContent(node, loc.Start, loc.End, createLink(util.URLJoin(setting.AppURL, mention[1:]), mention, "mention"))
599+
// team mention should follow @orgName/teamName style
600+
if ok && strings.Contains(mention, "/") {
601+
mentionOrgAndTeam := strings.Split(mention, "/")
602+
if mentionOrgAndTeam[0][1:] == ctx.metas["org"] && strings.Contains(teams, ","+strings.ToLower(mentionOrgAndTeam[1])+",") {
603+
replaceContent(node, loc.Start, loc.End, createLink(util.URLJoin(setting.AppURL, "org", ctx.metas["org"], "teams", mentionOrgAndTeam[1]), mention, "mention"))
604+
}
605+
return
603606
}
607+
replaceContent(node, loc.Start, loc.End, createLink(util.URLJoin(setting.AppURL, mention[1:]), mention, "mention"))
604608
}
605609

606610
func shortLinkProcessor(ctx *postProcessCtx, node *html.Node) {

modules/references/references.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ var (
2626
// While fast, this is also incorrect and lead to false positives.
2727
// TODO: fix invalid linking issue
2828

29-
// mentionPattern matches all mentions in the form of "@user"
30-
mentionPattern = regexp.MustCompile(`(?:\s|^|\(|\[)(@[0-9a-zA-Z-_]+|@[0-9a-zA-Z-_][0-9a-zA-Z-_.]+[0-9a-zA-Z-_])(?:\s|[:,;.?!]\s|[:,;.?!]?$|\)|\])`)
29+
// mentionPattern matches all mentions in the form of "@user" or "@org/team"
30+
mentionPattern = regexp.MustCompile(`(?:\s|^|\(|\[)(@[0-9a-zA-Z-_]+|@[0-9a-zA-Z-_]+\/?[0-9a-zA-Z-_]+|@[0-9a-zA-Z-_][0-9a-zA-Z-_.]+\/?[0-9a-zA-Z-_.]+[0-9a-zA-Z-_])(?:\s|[:,;.?!]\s|[:,;.?!]?$|\)|\])`)
3131
// issueNumericPattern matches string that references to a numeric issue, e.g. #1287
3232
issueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([#!][0-9]+)(?:\s|$|\)|\]|[:;,.?!]\s|[:;,.?!]$)`)
3333
// issueAlphanumericPattern matches string that references to an alphanumeric issue, e.g. ABC-1234

modules/references/references_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ func TestRegExp_mentionPattern(t *testing.T) {
325325
{"@gitea.", "@gitea"},
326326
{"@gitea,", "@gitea"},
327327
{"@gitea;", "@gitea"},
328+
{"@gitea/team1;", "@gitea/team1"},
328329
}
329330
falseTestCases := []string{
330331
"@ 0",
@@ -340,6 +341,7 @@ func TestRegExp_mentionPattern(t *testing.T) {
340341
"@gitea?this",
341342
"@gitea,this",
342343
"@gitea;this",
344+
"@gitea/team1/more",
343345
}
344346

345347
for _, testCase := range trueTestCases {

modules/setting/repository.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ var (
4242
DefaultRepoUnits []string
4343
PrefixArchiveFiles bool
4444
DisableMirrors bool
45+
DisableMigrations bool
4546
DefaultBranch string
4647
AllowAdoptionOfUnadoptedRepositories bool
4748
AllowDeleteOfUnadoptedRepositories bool
@@ -152,6 +153,7 @@ var (
152153
DefaultRepoUnits: []string{},
153154
PrefixArchiveFiles: true,
154155
DisableMirrors: false,
156+
DisableMigrations: false,
155157
DefaultBranch: "master",
156158

157159
// Repository editor settings

modules/structs/settings.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ package structs
66

77
// GeneralRepoSettings contains global repository settings exposed by API
88
type GeneralRepoSettings struct {
9-
MirrorsDisabled bool `json:"mirrors_disabled"`
10-
HTTPGitDisabled bool `json:"http_git_disabled"`
9+
MirrorsDisabled bool `json:"mirrors_disabled"`
10+
HTTPGitDisabled bool `json:"http_git_disabled"`
11+
MigrationsDisabled bool `json:"migrations_disabled"`
1112
}
1213

1314
// GeneralUISettings contains global ui settings exposed by API

options/locale/locale_cs-CZ.ini

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,7 +1130,7 @@ issues.start_tracking_short=Start
11301130
issues.start_tracking=Spustit sledování času
11311131
issues.start_tracking_history=`započal(a) práci %s`
11321132
issues.tracker_auto_close=Časovač se automaticky zastaví po zavření tohoto úkolu
1133-
issues.tracking_already_started=`Již jste spustili sledování času na tomto <a href="%s">úkolu</a>!`
1133+
issues.tracking_already_started=`Již jste spustili sledování času na <a href="%s">jiném úkolu</a>!`
11341134
issues.stop_tracking=Stop
11351135
issues.stop_tracking_history=`ukončil(a) práci %s`
11361136
issues.add_time=Přidat čas ručně
@@ -1786,6 +1786,7 @@ diff.whitespace_ignore_all_whitespace=Ignorovat bílé znaky při porovnávání
17861786
diff.whitespace_ignore_amount_changes=Ignorovat změny v množství bílých znaků
17871787
diff.whitespace_ignore_at_eol=Ignorovat změny v bílých znacích na konci řídku
17881788
diff.stats_desc=<strong> %d změnil soubory</strong>, kde provedl <strong>%d přidání</strong> a <strong>%d odebrání</strong>
1789+
diff.stats_desc_file=%d změn: %d přidání a %d smazání
17891790
diff.bin=binární
17901791
diff.view_file=Zobrazit soubor
17911792
diff.file_before=Před
@@ -1806,7 +1807,7 @@ diff.review.header=Odeslat posouzení
18061807
diff.review.placeholder=Posoudit komentář
18071808
diff.review.comment=Okomentovat
18081809
diff.review.approve=Schválit
1809-
diff.review.reject=Požadované změny
1810+
diff.review.reject=Požadovat změny
18101811
diff.committed_by=odevzdal
18111812
diff.protected=Chráněno
18121813

options/locale/locale_de-DE.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1114,7 +1114,6 @@ issues.start_tracking_short=Start
11141114
issues.start_tracking=Zeiterfassung starten
11151115
issues.start_tracking_history=hat die Zeiterfassung %s gestartet
11161116
issues.tracker_auto_close=Der Timer wird automatisch gestoppt, wenn dieser Issue geschlossen wird
1117-
issues.tracking_already_started=`Du hast die Zeiterfassung bereits in <a href="%s">diesem Issue</a> gestartet!`
11181117
issues.stop_tracking=Stopp
11191118
issues.stop_tracking_history=hat die Zeiterfassung %s angehalten
11201119
issues.add_time=Zeit manuell hinzufügen

options/locale/locale_en-US.ini

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,7 @@ email_notifications.submit = Set Email Preference
654654

655655
[repo]
656656
owner = Owner
657+
owner_helper = Some organizations may not show up in the dropdown due to a maximum repository count limit.
657658
repo_name = Repository Name
658659
repo_name_helper = Good repository names use short, memorable and unique keywords.
659660
repo_size = Repository Size
@@ -1131,7 +1132,7 @@ issues.start_tracking_short = Start
11311132
issues.start_tracking = Start Time Tracking
11321133
issues.start_tracking_history = `started working %s`
11331134
issues.tracker_auto_close = Timer will be stopped automatically when this issue gets closed
1134-
issues.tracking_already_started = `You have already started time tracking on this <a href="%s">issue</a>!`
1135+
issues.tracking_already_started = `You have already started time tracking on <a href="%s">another issue</a>!`
11351136
issues.stop_tracking = Stop
11361137
issues.stop_tracking_history = `stopped working %s`
11371138
issues.add_time = Manually Add Time

options/locale/locale_es-ES.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1128,7 +1128,6 @@ issues.start_tracking_short=Iniciar
11281128
issues.start_tracking=Inicio de seguimiento de tiempo
11291129
issues.start_tracking_history=`ha empezado a trabajar %s`
11301130
issues.tracker_auto_close=El temporizador se detendrá automáticamente cuando se cierre este problema
1131-
issues.tracking_already_started='Ya has comenzado el tiempo de seguimiento en este <a href="%s">tema</a>!'
11321131
issues.stop_tracking=Detener
11331132
issues.stop_tracking_history=`dejó de trabajar %s`
11341133
issues.add_time=Añadir tiempo gastado manualmente

options/locale/locale_fa-IR.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1027,7 +1027,6 @@ issues.start_tracking_short=آغاز
10271027
issues.start_tracking=شروع به پیگیری زمان
10281028
issues.start_tracking_history=`شروع به کار %s`
10291029
issues.tracker_auto_close=زمان‌سنج به صورت خودکار متوقف میشود زمانی که مسئله بسته شود
1030-
issues.tracking_already_started=`شما میتوانید پیگیری زمان را روی این <a href="%s"> مسئله </a> آغاز کنید!`
10311030
issues.stop_tracking=توقف
10321031
issues.stop_tracking_history=`توقف کار در %s`
10331032
issues.add_time=زمان را به صورت دستی وارد کنید

options/locale/locale_fr-FR.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,6 @@ issues.start_tracking_short=Démarrer
989989
issues.start_tracking=Démarrer le suivi du temps
990990
issues.start_tracking_history=`a démarré il y a %s`
991991
issues.tracker_auto_close=Le suivi de temps sera automatiquement arrêté quand le ticket sera fermé
992-
issues.tracking_already_started=`Vous avez déjà démarré le suivi de temps pour cette <a href="%s">tâche</a>!`
993992
issues.stop_tracking=Arrêter
994993
issues.stop_tracking_history=`a fini de travaillé pour %s`
995994
issues.add_time=Ajouter un minuteur manuellement

options/locale/locale_hu-HU.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -882,7 +882,6 @@ issues.tracker=Időzítő
882882
issues.start_tracking_short=Indítás
883883
issues.start_tracking=Időmérés elkezdése
884884
issues.start_tracking_history=`elkezdett dolgozni %s`
885-
issues.tracking_already_started=`Már elindította az időzítőt a <a href="%s">hibajegyhez</a>!`
886885
issues.stop_tracking=Leállítás
887886
issues.stop_tracking_history=`abbahagyta a %s`
888887
issues.add_time=Idő kézi hozzáadása

options/locale/locale_id-ID.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,6 @@ issues.subscribe=Berlangganan
832832
issues.unsubscribe=Berhenti berlangganan
833833
issues.start_tracking_short=Mulai
834834
issues.start_tracking_history=`mulai bekerja %s`
835-
issues.tracking_already_started=`Anda telah memulai pelacakan waktu pada <a href="%s">masalah</a> ini!`
836835
issues.stop_tracking=Berhenti
837836
issues.stop_tracking_history=`berhenti bekerja %s`
838837
issues.add_time_cancel=Batalkan

options/locale/locale_it-IT.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1094,7 +1094,6 @@ issues.start_tracking_short=Inizio
10941094
issues.start_tracking=Avvia cronografo
10951095
issues.start_tracking_history='ha iniziato a lavorare %s`
10961096
issues.tracker_auto_close=Il timer verrà interrotto automaticamente una volta che il problema verrá chiuso
1097-
issues.tracking_already_started=`Hai già avviato il cronografo su questa <a href="%s">issue</a>!`
10981097
issues.stop_tracking=Interrompi
10991098
issues.stop_tracking_history=`ha smesso di funzionare %s`
11001099
issues.add_time=Aggiungi Tempo manualmente

options/locale/locale_ja-JP.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1130,7 +1130,6 @@ issues.start_tracking_short=開始
11301130
issues.start_tracking=タイムトラッキングを開始
11311131
issues.start_tracking_history=`が作業を開始 %s`
11321132
issues.tracker_auto_close=タイマーは、この課題がクローズされると自動的に終了します
1133-
issues.tracking_already_started=`この<a href="%s">課題</a>で既にタイムトラッキングを開始しています!`
11341133
issues.stop_tracking=停止
11351134
issues.stop_tracking_history=`が作業を終了 %s`
11361135
issues.add_time=手で時間を入力

options/locale/locale_ko-KR.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -801,7 +801,6 @@ issues.tracker=타임 트래커
801801
issues.start_tracking_short=시작
802802
issues.start_tracking=타임 트래킹 시작
803803
issues.start_tracking_history=`%s가 작업 시작`
804-
issues.tracking_already_started=`<a href="%s">이슈</a>에서 이미 타임 트래킹을 사용하고 있습니다!`
805804
issues.stop_tracking=중단
806805
issues.stop_tracking_history=`작업 중단 %s`
807806
issues.add_time=수동으로 시간 입력

options/locale/locale_lv-LV.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1107,7 +1107,6 @@ issues.start_tracking_short=Sākt
11071107
issues.start_tracking=Uzsākt laika uzskaiti
11081108
issues.start_tracking_history=` uzsāka darbu %s`
11091109
issues.tracker_auto_close=Taimeris tiks automātiski apturēts, kad šī problēma tiks aizvērta
1110-
issues.tracking_already_started=`Jums jau ir iesākta laika uzskaite pie citas <a href="%s">problēmas</a>!`
11111110
issues.stop_tracking=Beigt
11121111
issues.stop_tracking_history=` beidza strādāt %s`
11131112
issues.add_time=Manuāli pievienot laiku

options/locale/locale_nl-NL.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1110,7 +1110,6 @@ issues.start_tracking_short=Start
11101110
issues.start_tracking=Start tijdregistratie
11111111
issues.start_tracking_history=`%s is begonnen`
11121112
issues.tracker_auto_close=Timer wordt automatisch gestopt wanneer dit probleem wordt gesloten
1113-
issues.tracking_already_started=Je houd al tijd bij voor dit <a href="%s">issue</a>!`
11141113
issues.stop_tracking=Stop
11151114
issues.stop_tracking_history=`gestopt met werken aan %s`
11161115
issues.add_time=Tijd handmatig toevoegen

options/locale/locale_pl-PL.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1051,7 +1051,6 @@ issues.start_tracking_short=Rozpocznij
10511051
issues.start_tracking=Rozpocznij śledzenie czasu
10521052
issues.start_tracking_history=`rozpoczął(-ęła) pracę nad %s`
10531053
issues.tracker_auto_close=Licznik czasu zostanie automatycznie zatrzymany w momencie zamknięcia tego zgłoszenia
1054-
issues.tracking_already_started=`Już śledzisz czas pracy nad tym <a href="%s">zgłoszeniem</a>!`
10551054
issues.stop_tracking=Zatrzymaj
10561055
issues.stop_tracking_history=`zakończył(-a) pracę nad %s`
10571056
issues.add_time=Dodaj czas ręcznie

options/locale/locale_pt-BR.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,6 @@ issues.start_tracking_short=Iniciar
976976
issues.start_tracking=Iniciar contador de tempo
977977
issues.start_tracking_history=`começou a trabalhar %s`
978978
issues.tracker_auto_close=Contador de tempo será parado automaticamente quando esta issue for fechada
979-
issues.tracking_already_started='Você já iniciou o contador de tempo para esta <a href="%s"> issue</a>!'
980979
issues.stop_tracking=Parar
981980
issues.stop_tracking_history=`parou de trabalhar %s`
982981
issues.add_time=Adicionar tempo manualmente

0 commit comments

Comments
 (0)