[Bug][linker] LinkPrToIssue never matches lowercase issue keys (e.g. in branch names)
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Empieza por backend/plugins/linker/tasks/link_pr_and_issue.go y sigue cómo LinkPrToIssue extrae y compara claves de los campos de pull request con issues.issue_key. Revisa las pruebas existentes para esta tarea y añade un caso en el que una clave de rama en minúsculas se vincule con una clave almacenada en mayúsculas. El objetivo se cumple cuando la pipeline crea la fila esperada en pull_request_issues para ese caso.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Search before asking
- I had searched in the issues and found no similar issues.
What happened
The linker plugin's LinkPrToIssue subtask compares the keys extracted from a PR (title, description or head ref) against issues.issue_key with an exact, case-sensitive match. normalizeIssueKey only strips # and whitespace.
Some issue trackers generate lowercase branch names from the issue key, e.g. user/proj-123-short-title for issue PROJ-123. Since #8777, head refs are searched, but even with a case-insensitive prToIssueRegexp such as (?i)\b(PROJ)-\d+\b, the extracted key is proj-123. It never equals the stored key PROJ-123, so the PR is silently left unlinked.
In my instance, about 5% of PRs that contain a key are affected, namely those where the key appears only in the branch name.
What do you expect to happen
Matching should be case-insensitive, or the extracted key should be normalized to match the stored issue_key, so that proj-123 links to PROJ-123.
How to reproduce
- Sync an issue tracker with an issue keyed
PROJ-123and a GitHub repo into one project. - Open a PR whose head ref is
user/proj-123-short-title, with no key in the title or description. - Enable the
linkerplugin withprToIssueRegexp=(?i)\b(PROJ)-\d+\b. - Run the project pipeline.
pull_request_issueshas no row for this PR.
Anything else
Suggested fix in backend/plugins/linker/tasks/link_pr_and_issue.go: compare case-insensitively, e.g. uppercase the extracted keys and match with UPPER(issues.issue_key) IN ?. Uppercasing in normalizeIssueKey alone would only work for trackers with uppercase keys.
A related limitation is that the enricher stops at the first field (title, then description, then head ref) with any regex match. A PR with an unrelated match in the title, such as CVE-2024-0000, never has its description or branch checked, so a real key there is ignored. I can open that as a separate issue if preferred.
Version
v1.0.3-beta18
Are you willing to submit PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct
- Lenguaje dominante
- Go
- Estrellas
- 3.2k
- Forks
- 830
- Merge medio
- 2 d 12 h
- PR fusionados (30 d)
- 61
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/devlake
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 60/100
Los mantenedores suelen responder en 2 días
-
type/bug
Dificultad 3/5 Medio día Aptitud para principiantes 73/100
Los mantenedores suelen responder en 2 días
-
[Bug][dora] calculateChangeLeadTime loads the whole commits_diffs deployment join into memoryPosiblemente ocupada @mdelacruz-avantio la tomó hace 1 día. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
Los mantenedores suelen responder en 2 días
-
[Refactor][Build] Build the core and all plugins into a single binary by defaultPosiblemente ocupada @klesh la tomó hace 1 día. Abiertocomponent/plugins type/refactor
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Los mantenedores suelen responder en 2 días
-
[Feature][Plugin] Add a GLPI data source pluginPosiblemente ocupada @rabelenda la tomó hace 2 días. Abiertotype/feature-request
Dificultad 5/5 Más de una semana Aptitud para principiantes 38/100
Los mantenedores suelen responder en 2 días
Todos los issues de apache/devlake
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
schema-drift
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
stefanhoth/paperless-ngx-cli#61 ·
Los mantenedores suelen responder en 1 día
-
Project submission: CodeAFAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
slavakurilyak/awesome-ai-agents#888 ·
Los mantenedores suelen responder en 1 día
-
enhancement nav-pilot
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
kind/enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
Los mantenedores suelen responder en 1 día