push_forgejo_issues.py cria duplicatas (sem dedupe) #28

Open
opened 2026-05-14 02:15:05 -03:00 by navigator · 0 comments
Owner

TL;DR

scripts/push_forgejo_issues.py lê todo docs/issues/*.md e cria 1 issue por draft via API Forgejo, sem checar se já existe issue com o mesmo título. Quando o script roda numa segunda vez (ou após adicionar drafts novos), ele cria duplicatas de TODAS as issues anteriores. Aconteceu em 2026-05-14: drafts #1-#11 viraram issues duplicadas #12-#22 e os 5 novos drafts #12-#16 viraram #23-#27.

O problema concreto

Sequência de eventos:

  1. Run inicial (algumas semanas atrás): 11 drafts (01-*.md a 11-*.md) → issues #1-#11 no Forgejo.
  2. Adicionados 5 drafts novos (12-*.md a 16-*.md).
  3. Run de 2026-05-14: script cria 16 issues novas (#12-#27), das quais #12-#22 são duplicatas exatas de #1-#11.

Onde mexer

Em scripts/push_forgejo_issues.py:

  1. Antes do POST: GET /repos/pop/MASHA/issues?state=all&page=N em loop até esgotar.
  2. Construir set de títulos já presentes.
  3. Adicionar flag --skip-existing (default True) que pula drafts cujo título já está no set.
  4. Adicionar flag --force que mantém o comportamento atual (criar mesmo se duplicado).
  5. Log de pulos: [skip] '<title>' already exists as #<n>.

Sugestão alternativa

Maintain mapping em docs/issues/.posted.json (gitignored) que registra {filename: issue_number} após cada post bem-sucedido. Drafts já mapeados são pulados. Mais rápido (sem GET pagination) e robusto a renomeações.

Limpeza necessária agora

Issues #12-#22 são duplicatas exatas de #1-#11 no Forgejo. Fechar manualmente OU adicionar script close_duplicate_issues.py que detecta e fecha pelo título matching.

Critério de aceite

  • Re-run de push_forgejo_issues.py sem args cria 0 issues novas (todos os 16 já existem).
  • Adicionar um draft novo docs/issues/17-*.md cria EXATAMENTE 1 issue.
  • Logs claros: [skip] ... already exists as #N / [post] ... → https://....

Referências

  • scripts/push_forgejo_issues.py linha ~80 — call _post_json direto, sem GET prévio
  • https://git.pop.coop/pop/MASHA/issues/12 a /22 — as 11 duplicatas
## TL;DR `scripts/push_forgejo_issues.py` lê todo `docs/issues/*.md` e cria 1 issue por draft via API Forgejo, sem checar se já existe issue com o mesmo título. Quando o script roda numa segunda vez (ou após adicionar drafts novos), ele cria duplicatas de TODAS as issues anteriores. Aconteceu em 2026-05-14: drafts #1-#11 viraram issues duplicadas #12-#22 e os 5 novos drafts #12-#16 viraram #23-#27. ## O problema concreto Sequência de eventos: 1. Run inicial (algumas semanas atrás): 11 drafts (`01-*.md` a `11-*.md`) → issues #1-#11 no Forgejo. 2. Adicionados 5 drafts novos (`12-*.md` a `16-*.md`). 3. Run de 2026-05-14: script cria **16 issues novas** (#12-#27), das quais #12-#22 são duplicatas exatas de #1-#11. ## Onde mexer Em `scripts/push_forgejo_issues.py`: 1. Antes do POST: GET `/repos/pop/MASHA/issues?state=all&page=N` em loop até esgotar. 2. Construir set de títulos já presentes. 3. Adicionar flag `--skip-existing` (default True) que pula drafts cujo título já está no set. 4. Adicionar flag `--force` que mantém o comportamento atual (criar mesmo se duplicado). 5. Log de pulos: `[skip] '<title>' already exists as #<n>`. ## Sugestão alternativa Maintain mapping em `docs/issues/.posted.json` (gitignored) que registra `{filename: issue_number}` após cada post bem-sucedido. Drafts já mapeados são pulados. Mais rápido (sem GET pagination) e robusto a renomeações. ## Limpeza necessária agora Issues #12-#22 são duplicatas exatas de #1-#11 no Forgejo. Fechar manualmente OU adicionar script `close_duplicate_issues.py` que detecta e fecha pelo título matching. ## Critério de aceite - Re-run de `push_forgejo_issues.py` sem args cria 0 issues novas (todos os 16 já existem). - Adicionar um draft novo `docs/issues/17-*.md` cria EXATAMENTE 1 issue. - Logs claros: `[skip] ... already exists as #N` / `[post] ... → https://...`. ## Referências - `scripts/push_forgejo_issues.py` linha ~80 — call `_post_json` direto, sem GET prévio - `https://git.pop.coop/pop/MASHA/issues/12` a `/22` — as 11 duplicatas
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pop/MASHA#28
No description provided.