Skip to content

Commit 784e8a0

Browse files
Merge branch 'main' into refactor-webhook
2 parents d4bdaa7 + 837e8b3 commit 784e8a0

32 files changed

+531
-42
lines changed

integrations/api_pull_review_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
"code.gitea.io/gitea/models"
1313
api "code.gitea.io/gitea/modules/structs"
14+
jsoniter "github.com/json-iterator/go"
1415
"github.com/stretchr/testify/assert"
1516
)
1617

@@ -139,6 +140,59 @@ func TestAPIPullReview(t *testing.T) {
139140
req = NewRequestf(t, http.MethodDelete, "/api/v1/repos/%s/%s/pulls/%d/reviews/%d?token=%s", repo.OwnerName, repo.Name, pullIssue.Index, review.ID, token)
140141
resp = session.MakeRequest(t, req, http.StatusNoContent)
141142

143+
// test CreatePullReview Comment without body but with comments
144+
req = NewRequestWithJSON(t, http.MethodPost, fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d/reviews?token=%s", repo.OwnerName, repo.Name, pullIssue.Index, token), &api.CreatePullReviewOptions{
145+
// Body: "",
146+
Event: "COMMENT",
147+
Comments: []api.CreatePullReviewComment{{
148+
Path: "README.md",
149+
Body: "first new line",
150+
OldLineNum: 0,
151+
NewLineNum: 1,
152+
}, {
153+
Path: "README.md",
154+
Body: "first old line",
155+
OldLineNum: 1,
156+
NewLineNum: 0,
157+
},
158+
},
159+
})
160+
var commentReview api.PullReview
161+
162+
resp = session.MakeRequest(t, req, http.StatusOK)
163+
DecodeJSON(t, resp, &commentReview)
164+
assert.EqualValues(t, "COMMENT", commentReview.State)
165+
assert.EqualValues(t, 2, commentReview.CodeCommentsCount)
166+
assert.EqualValues(t, "", commentReview.Body)
167+
assert.EqualValues(t, false, commentReview.Dismissed)
168+
169+
// test CreatePullReview Comment with body but without comments
170+
commentBody := "This is a body of the comment."
171+
req = NewRequestWithJSON(t, http.MethodPost, fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d/reviews?token=%s", repo.OwnerName, repo.Name, pullIssue.Index, token), &api.CreatePullReviewOptions{
172+
Body: commentBody,
173+
Event: "COMMENT",
174+
Comments: []api.CreatePullReviewComment{},
175+
})
176+
177+
resp = session.MakeRequest(t, req, http.StatusOK)
178+
DecodeJSON(t, resp, &commentReview)
179+
assert.EqualValues(t, "COMMENT", commentReview.State)
180+
assert.EqualValues(t, 0, commentReview.CodeCommentsCount)
181+
assert.EqualValues(t, commentBody, commentReview.Body)
182+
assert.EqualValues(t, false, commentReview.Dismissed)
183+
184+
// test CreatePullReview Comment without body and no comments
185+
req = NewRequestWithJSON(t, http.MethodPost, fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d/reviews?token=%s", repo.OwnerName, repo.Name, pullIssue.Index, token), &api.CreatePullReviewOptions{
186+
Body: "",
187+
Event: "COMMENT",
188+
Comments: []api.CreatePullReviewComment{},
189+
})
190+
resp = session.MakeRequest(t, req, http.StatusUnprocessableEntity)
191+
errMap := make(map[string]interface{})
192+
json := jsoniter.ConfigCompatibleWithStandardLibrary
193+
json.Unmarshal(resp.Body.Bytes(), &errMap)
194+
assert.EqualValues(t, "review event COMMENT requires a body or a comment", errMap["message"].(string))
195+
142196
// test get review requests
143197
// to make it simple, use same api with get review
144198
pullIssue12 := models.AssertExistsAndLoadBean(t, &models.Issue{ID: 12}).(*models.Issue)

modules/git/blob.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,30 @@ func (b *Blob) GetBlobContent() (string, error) {
3434
return string(buf), nil
3535
}
3636

37-
// GetBlobLineCount gets line count of lob as raw text
37+
// GetBlobLineCount gets line count of the blob
3838
func (b *Blob) GetBlobLineCount() (int, error) {
3939
reader, err := b.DataAsync()
4040
if err != nil {
4141
return 0, err
4242
}
4343
defer reader.Close()
4444
buf := make([]byte, 32*1024)
45-
count := 0
45+
count := 1
4646
lineSep := []byte{'\n'}
47+
48+
c, err := reader.Read(buf)
49+
if c == 0 && err == io.EOF {
50+
return 0, nil
51+
}
4752
for {
48-
c, err := reader.Read(buf)
4953
count += bytes.Count(buf[:c], lineSep)
5054
switch {
5155
case err == io.EOF:
5256
return count, nil
5357
case err != nil:
5458
return count, err
5559
}
60+
c, err = reader.Read(buf)
5661
}
5762
}
5863

modules/highlight/highlight.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ var (
3333

3434
once sync.Once
3535

36-
cache *lru.ARCCache
36+
cache *lru.TwoQueueCache
3737
)
3838

3939
// NewContext loads custom highlight map from local config
@@ -45,7 +45,7 @@ func NewContext() {
4545
}
4646

4747
// The size 512 is simply a conservative rule of thumb
48-
c, err := lru.NewARC(512)
48+
c, err := lru.New2Q(512)
4949
if err != nil {
5050
panic(fmt.Sprintf("failed to initialize LRU cache for highlighter: %s", err))
5151
}

options/locale/locale_bg-BG.ini

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,11 +259,18 @@ authorization_failed=Оторизацията беше неуспешна
259259
sspi_auth_failed=SSPI удостоверяването беше неуспешно
260260

261261
[mail]
262+
262263
activate_account=Моля активирайте Вашия профил
264+
263265
activate_email=Провери адрес на ел. поща
266+
267+
register_notify=Добре дошли в Gitea
268+
264269
reset_password=Възстановете акаунта си
270+
265271
register_success=Успешна регистрация
266-
register_notify=Добре дошли в Gitea
272+
273+
267274

268275

269276

options/locale/locale_cs-CZ.ini

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,11 +314,18 @@ password_pwned=Heslo, které jste zvolili, je na <a target="_blank" rel="noopene
314314
password_pwned_err=Nelze dokončit požadavek na HaveIBeenPwned
315315

316316
[mail]
317+
317318
activate_account=Prosíme, aktivujte si váš účet
319+
318320
activate_email=Ověřte vaši e-mailovou adresu
321+
322+
register_notify=Vítejte v Gitea
323+
319324
reset_password=Obnovit váš účet
325+
320326
register_success=Registrace byla úspěšná
321-
register_notify=Vítejte v Gitea
327+
328+
322329

323330
release.new.subject=%s v %s vydáno
324331

options/locale/locale_de-DE.ini

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,19 +316,64 @@ password_pwned=Das von dir gewählte Passwort ist auf einer <a target="_blank" r
316316
password_pwned_err=Anfrage an HaveIBeenPwned konnte nicht abgeschlossen werden
317317

318318
[mail]
319+
view_it_on=Auf %s ansehen
320+
link_not_working_do_paste=Link funktioniert nicht? Versuche ihn zu kopieren und im Browser einzufügen.
321+
hi_user_x=Hallo <b>%s</b>,
322+
319323
activate_account=Bitte aktiviere dein Konto
324+
activate_account.title=%s, bitte aktiviere dein Konto
325+
activate_account.test_1=Hallo <b>%[1]s</b>, danke für deine Registrierung bei %[2]!
326+
activate_account.test_2=Bitte klicke innerhalb von <b>%s</b> auf folgenden Link, um dein Konto zu aktivieren:
327+
320328
activate_email=Bestätige deine E-Mail-Adresse
329+
activate_email.title=%s, bitte verifiziere deine E-Mail-Adresse
330+
activate_email.text=Bitte klicke innerhalb von <b>%s</b> auf folgenden Link, um dein Konto zu aktivieren:
331+
332+
register_notify=Willkommen bei Gitea
333+
register_notify.title=%[1]s, willkommen bei %[2]s
334+
register_notify.text_1=dies ist deine Bestätigungs-E-Mail für %s!
335+
register_notify.text_2=Du kannst dich jetzt mit dem Benutzernamen "%s" anmelden.
336+
register_notify.text_3=Wenn dieser Account von dir erstellt wurde, musst du zuerst <a href="%s">dein Passwort setzen</a>.
337+
321338
reset_password=Stelle dein Konto wieder her
339+
reset_password.title=%s, du hast um Wiederherstellung deines Kontos gebeten
340+
reset_password.text=Bitte klicke innerhalb von <b>%s</b> auf folgenden Link, um dein Konto wiederherzustellen:
341+
322342
register_success=Registrierung erfolgreich
323-
register_notify=Willkommen bei Gitea
343+
344+
issue_assigned.pull=@%[1]s hat dich im Repository %[3]s dem Pull Request %[2]s zugewiesen.
345+
issue_assigned.issue=@%[1]s hat dich im Repository %[3]s dem Issue %[2]s zugewiesen.
346+
347+
issue.x_mentioned_you=<b>@%s</b> hat dich erwähnt:
348+
issue.action.force_push=<b>%[1]s</b> hat %[3]s mit %[4]s auf <b>%[2]s</b> überschrieben.
349+
issue.action.push_1=<b>@%[1]s</b> hat einen Commit auf %[2]s gepusht
350+
issue.action.push_n=<b>@%[1]s</b> hat %[3]d Commits auf %[2]s gepusht
351+
issue.action.close=<b>@%[1]s</b> hat #%[2]d geschlossen.
352+
issue.action.reopen=<b>@%[1]s</b> hat #%[2]d wieder geöffnet.
353+
issue.action.merge=<b>@%[1]s</b> hat #%[2]d in %[3]s gemergt.
354+
issue.action.approve=<b>@%[1]s</b> hat diesen Pull-Request approved.
355+
issue.action.reject=<b>@%[1]s</b> hat Änderungen auf diesem Pull-Request angefordert.
356+
issue.action.review=<b>@%[1]s</b> hat diesen Pull-Request kommentiert.
357+
issue.action.review_dismissed=<b>@%[1]s</b> hat das letzte Review von %[2]s für diesen Pull Request verworfen.
358+
issue.action.ready_for_review=<b>@%[1]s</b> hat diesen Pull Request zum Review freigegeben.
359+
issue.action.new=<b>@%[1]s</b> hat #%[2]d geöffnet.
360+
issue.in_tree_path=In %s:
324361

325362
release.new.subject=Release %s in %s erschienen
363+
release.new.text=<b>@%[1]s</b> hat %[2]s in %[3]s released
364+
release.title=Titel: %s
365+
release.note=Anmerkung:
366+
release.downloads=Downloads:
367+
release.download.zip=Quellcode (ZIP Datei)
368+
release.download.targz=Quellcode (TAR.GZ Datei)
326369

327370
repo.transfer.subject_to=%s möchte "%s" an %s übertragen
328371
repo.transfer.subject_to_you=%s möchte dir "%s" übertragen
329372
repo.transfer.to_you=dir
373+
repo.transfer.body=Um es anzunehmen oder abzulehnen, öffne %s, oder ignoriere es einfach.
330374

331375
repo.collaborator.added.subject=%s hat dich zu %s hinzugefügt
376+
repo.collaborator.added.text=Du wurdest als Mitarbeiter für folgendes Repository hinzugefügt:
332377

333378
[modal]
334379
yes=Ja
@@ -830,6 +875,7 @@ migrate.gitlab.description=Migriere Daten von GitLab.com oder einem selbst gehos
830875
migrate.gitea.description=Migriere Daten von Gitea.com oder einem selbst gehostetem Gitea Server.
831876
migrate.gogs.description=Migriere Daten von notabug.org oder einem anderen, selbst gehosteten Gogs Server.
832877
migrate.migrating_git=Git Daten werden migriert
878+
migrate.migrating_topics=Themen werden migriert
833879
migrate.migrating_milestones=Meilensteine werden migriert
834880
migrate.migrating_labels=Labels werden migriert
835881
migrate.migrating_releases=Releases werden migriert
@@ -1557,6 +1603,8 @@ settings.hooks=Webhooks
15571603
settings.githooks=Git-Hooks
15581604
settings.basic_settings=Grundeinstellungen
15591605
settings.mirror_settings=Mirror-Einstellungen
1606+
settings.mirror_settings.docs=Richte dein Projekt so ein, dass Änderungen automatisch in ein anderes Repository gepusht, oder aus einem anderen Repository gepullt werden. Branches, tags und commits werden dann automatisch synchronisiert. <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/repo-mirror/">Wie kann ich ein Repository spiegeln? (Englisch)</a>
1607+
settings.mirror_settings.mirrored_repository=Gespiegeltes Repository
15601608
settings.mirror_settings.direction=Richtung
15611609
settings.mirror_settings.direction.pull=Pull
15621610
settings.mirror_settings.direction.push=Push

options/locale/locale_es-ES.ini

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,19 +316,64 @@ password_pwned=La contraseña que eligió está en una <a target="_blank" rel="n
316316
password_pwned_err=No se pudo completar la solicitud a HaveIBeenPwned
317317

318318
[mail]
319+
view_it_on=Ver en %s
320+
link_not_working_do_paste=¿No funciona? Intenta copiarlo y pegarlo en tu navegador.
321+
hi_user_x=Hola <b>%s</b>,
322+
319323
activate_account=Por favor, active su cuenta
324+
activate_account.title=%s, por favor activa tu cuenta
325+
activate_account.test_1=¡Hola <b>%[1]s</b>, gracias por registrarte en %[2]!
326+
activate_account.test_2=Haga clic en el siguiente enlace para activar su cuenta dentro de <b>%s</b>:
327+
320328
activate_email=Verifique su correo electrónico
329+
activate_email.title=%s, por favor verifica tu dirección de correo electrónico
330+
activate_email.text=Por favor, haga clic en el siguiente enlace para verificar su dirección de correo electrónico dentro de <b>%s</b>:
331+
332+
register_notify=¡Bienvenido a Gitea
333+
register_notify.title=%[1]s, bienvenido a %[2]s
334+
register_notify.text_1=este es tu correo de confirmación de registro para %s!
335+
register_notify.text_2=Ahora puede iniciar sesión vía nombre de usuario: %s.
336+
register_notify.text_3=Si esta cuenta ha sido creada para usted, por favor <a href="%s">establezca su contraseña</a> primero.
337+
321338
reset_password=Recupere su cuenta
339+
reset_password.title=%s, has solicitado recuperar tu cuenta
340+
reset_password.text=Haga clic en el siguiente enlace para recuperar su cuenta dentro de <b>%s</b>:
341+
322342
register_success=Registro completado
323-
register_notify=¡Bienvenido a Gitea
343+
344+
issue_assigned.pull=@%[1]s le asignó al pull request %[2]s en el repositorio %[3]s.
345+
issue_assigned.issue=@%[1]s le asignó a la incidencia %[2]s en el repositorio %[3]s.
346+
347+
issue.x_mentioned_you=<b>@%s</b> te mencionó:
348+
issue.action.force_push=<b>%[1]s</b> empujó a la fuerza el <b>%[2]s</b> de %[3]s a %[4]s.
349+
issue.action.push_1=<b>@%[1]s</b> hizo 1 commit al %[2]s
350+
issue.action.push_n=<b>@%[1]s</b> push %[3]d commits a %[2]s
351+
issue.action.close=<b>@%[1]s</b> cerró #%[2]d.
352+
issue.action.reopen=<b>@%[1]s</b> reabrió #%[2]d.
353+
issue.action.merge=<b>@%[1]s</b> fusionó #%[2]d en %[3]s.
354+
issue.action.approve=<b>@%[1]s</b> aprobó este pull request.
355+
issue.action.reject=<b>@%[1]s</b> solicitó cambios en este pull request.
356+
issue.action.review=<b>@%[1]s</b> comentó en este pull request.
357+
issue.action.review_dismissed=<b>@%[1]s</b> descartó la última revisión de %[2]s para este pull request.
358+
issue.action.ready_for_review=<b>@%[1]s</b> marcó este pull request listo para ser revisado.
359+
issue.action.new=<b>@%[1]s</b> creó #%[2]d.
360+
issue.in_tree_path=En %s:
324361

325362
release.new.subject=%s en %s publicado
363+
release.new.text=<b>@%[1]s</b> lanzó %[2]s en %[3]s
364+
release.title=Título: %s
365+
release.note=Nota:
366+
release.downloads=Descargas:
367+
release.download.zip=Código fuente (ZIP)
368+
release.download.targz=Código fuente (TAR.GZ)
326369

327370
repo.transfer.subject_to=%s desea transferir "%s" a %s
328371
repo.transfer.subject_to_you=%s desea transferir "%s" a usted
329372
repo.transfer.to_you=usted
373+
repo.transfer.body=Para aceptarlo o rechazarlo, visita %s o simplemente ignórelo.
330374

331375
repo.collaborator.added.subject=%s le añadió en %s
376+
repo.collaborator.added.text=Has sido añadido como colaborador del repositorio:
332377

333378
[modal]
334379
yes=Sí
@@ -726,6 +771,7 @@ mirror_prune_desc=Eliminar referencias de seguimiento de remotes obsoletas
726771
mirror_interval=Intervalo de réplica (Las unidades de tiempo válidas son 'h', 'm', 's'). Pone 0 para deshabilitar la sincronización automática.
727772
mirror_interval_invalid=El intervalo de réplica no es válido.
728773
mirror_address=Clonar desde URL
774+
mirror_address_desc=Ponga cualquier credencial requerida en la sección de Autorización.
729775
mirror_address_url_invalid=La url proporcionada no es válida. Debe escapar correctamente de todos los componentes de la url.
730776
mirror_address_protocol_invalid=La url proporcionada no es válida. Sólo las ubicaciones http(s):// o git:// pueden ser replicadas desde.
731777
mirror_lfs=Almacenamiento de archivos grande (LFS)
@@ -734,6 +780,8 @@ mirror_lfs_endpoint=Punto final de LFS
734780
mirror_lfs_endpoint_desc=Sync intentará usar la url del clon para <a target="_blank" rel="noopener noreferrer" href="%s">determinar el servidor LFS</a>. También puede especificar un punto final personalizado si los datos LFS del repositorio se almacenan en otro lugar.
735781
mirror_last_synced=Sincronizado por última vez
736782
mirror_password_placeholder=(Sin cambios)
783+
mirror_password_blank_placeholder=(Indefinido)
784+
mirror_password_help=Cambie el nombre de usario para eliminar una contraseña almacenada.
737785
watchers=Seguidores
738786
stargazers=Fans
739787
forks=Forks
@@ -820,11 +868,19 @@ migrated_from_fake=Migrado desde %[1]s
820868
migrate.migrate=Migrar desde %s
821869
migrate.migrating=Migrando desde <b>%s</b>...
822870
migrate.migrating_failed=La migración desde <b>%s</b> ha fallado.
871+
migrate.migrating_failed.error=Error: %s
823872
migrate.github.description=Migrar datos de Github.com o Github Enterprise.
824873
migrate.git.description=Migrar o replicar de datos de git desde los servicios de Git
825874
migrate.gitlab.description=Migrar datos de GitLab.com o servidor gitlab autoalojado.
826875
migrate.gitea.description=Migrando datos de Gitea.com o servidor Gitea autoalojado.
827876
migrate.gogs.description=Migrando datos de notabug.org u otro servidor de Gogs autoalojado.
877+
migrate.migrating_git=Migrando datos de Git
878+
migrate.migrating_topics=Migrando Temas
879+
migrate.migrating_milestones=Migrando Hitos
880+
migrate.migrating_labels=Migrando etiquetas
881+
migrate.migrating_releases=Migrando Lanzamientos
882+
migrate.migrating_issues=Migrando Incidencías
883+
migrate.migrating_pulls=Migrando Pull Requests
828884

829885
mirror_from=réplica de
830886
forked_from=forkeado de
@@ -1318,7 +1374,10 @@ pulls.manually_merged_as=El Pull Request se ha fusionado manualmente como <a rel
13181374
pulls.is_closed=El pull request ha sido cerrado.
13191375
pulls.has_merged=El pull request ha sido fusionado.
13201376
pulls.title_wip_desc=`<a href="#">Comience el título con <strong>%s</strong></a> para prevenir que el pull request se fusione accidentalmente.`
1377+
pulls.cannot_merge_work_in_progress=Este pull request está marcado como un trabajo en curso.
13211378
pulls.still_in_progress=¿Aún en curso?
1379+
pulls.add_prefix=Añadir prefijo <strong>%s</strong>
1380+
pulls.remove_prefix=Eliminar prefijo <strong>%s</strong>
13221381
pulls.data_broken=Este pull request está rota debido a que falta información del fork.
13231382
pulls.files_conflicted=Este pull request tiene cambios en conflicto con la rama de destino.
13241383
pulls.is_checking=La comprobación de conflicto de fusión está en progreso. Inténtalo de nuevo en unos momentos.
@@ -1545,10 +1604,14 @@ settings.githooks=Git Hooks
15451604
settings.basic_settings=Configuración Básica
15461605
settings.mirror_settings=Configuración de réplica
15471606
settings.mirror_settings.docs=Configure su proyecto para insertar y/o extraer automáticamente los cambios hacia/desde otro repositorio. Las ramas, etiquetas y commits se sincronizarán automáticamente. <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/repo-mirror/">¿Cómo replico los repositorios?</a>
1607+
settings.mirror_settings.mirrored_repository=Repositorio Replicado
15481608
settings.mirror_settings.direction=Dirección
15491609
settings.mirror_settings.direction.pull=Pull
1610+
settings.mirror_settings.direction.push=Push
15501611
settings.mirror_settings.last_update=Última actualización
1612+
settings.mirror_settings.push_mirror.none=No hay Réplicas de Push configurados
15511613
settings.mirror_settings.push_mirror.remote_url=URL del repositorio remoto de Git
1614+
settings.mirror_settings.push_mirror.add=Añadir Réplica de Push
15521615
settings.sync_mirror=Sincronizar ahora
15531616
settings.mirror_sync_in_progress=La sincronización del repositorio replicado está en curso. Vuelva a intentarlo más tarde.
15541617
settings.email_notifications.enable=Habilitar las notificaciones por correo electrónico

options/locale/locale_fa-IR.ini

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,11 +299,18 @@ authorization_failed_desc=تاییدیه ناموفق بود. لذا ما درخ
299299
sspi_auth_failed=SSPI عدم احراز هویت
300300

301301
[mail]
302+
302303
activate_account=لطفا حساب خود را فعال کنید
304+
303305
activate_email=نشانی ایمیل خود را تایید کنید
306+
307+
register_notify=به گیتی یا گیت‌گو خوش آمدید
308+
304309
reset_password=حساب خود را دوباره فعال کنید
310+
305311
register_success=ثبت‌نام با موفقیت انجام شد
306-
register_notify=به گیتی یا گیت‌گو خوش آمدید
312+
313+
307314

308315

309316

0 commit comments

Comments
 (0)