Gitea issue #5917 rozoberá, ako prinútiť viacerých používateľov prestať sledovať repozitár. Inšpiroval ma k tomu, aby som si kroky zapísal, keďže mi neboli hneď zrejmé.

Cez PR #5852 bola pridaná možnosť AUTO_WATCH_NEW_REPOS do konfiguračného súboru Gitea, avšak jej predvolená hodnota je true.

Dôsledok tohto správania je, že ak nepoužívate Gitea aspoň vo verzii 1.8.0, kde bola táto konfigurácia zavedená, a následne ste nenastavili AUTO_WATCH_NEW_REPOS na false vopred, vytvorenie repozitára (najmä v Organizácii) a priradenie tímu k nemu spôsobí, že všetci používatelia v tom tíme začnú repozitár sledovať, čo generuje veľa šumu.

Tento návod ukazuje, ako tento šum znížiť. Dá sa prispôsobiť aj pre iné účely, ktoré vyžadujú spustenie raw SQL príkazov na PostgreSQL vo vnútri Dockeru.

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.13.3
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
+     - DB_TYPE=postgres
+     - DB_HOST=db:5432
+     - DB_NAME=gitea
+     - DB_USER=gitea
+     - DB_PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
+    depends_on:
+      - db
+
+  db:
+    image: postgres:9.6
+    restart: always
+    environment:
+      - POSTGRES_USER=gitea
+      - POSTGRES_PASSWORD=gitea
+      - POSTGRES_DB=gitea
+    networks:
+      - gitea
+    volumes:
+      - ./postgres:/var/lib/postgresql/data

Nasledujúce kroky je potrebné upraviť, ak boli zmenené riadky zvýraznené farbou, konkrétne host, user, password a DB.

  • Ak inštancia ešte nebeží, spustite ju (za predpokladu, že ostatná konfigurácia je hotová podľa dokumentácie)
docker-compose up -d
  • Pripojte sa k psql vo vnútri kontajnera a zadajte postgres heslo z vyššie uvedeného
docker-compose run --rm db psql -h db -U gitea gitea

Príkaz môže byť trochu mätúci, tu sú zástupné symboly

docker-compose run --rm SERVICE psql -h HOST -U USER DB
  • Teraz môžete používať štandardné psql príkazy, použite databázu gitea
\c gitea

Potom napríklad zobrazte všetky tabuľky

\dt
  • Vyhľadajte ID repozitára
SELECT id,name FROM repository ORDER BY name;

Upozornenie: nasledujúce príkazy môžu viesť k STRATE DÁT! Pred ďalším postupom si prosím vytvorte správne zálohy.

  • Odstráňte všetkých sledovateľov daného repozitára, dosaďte správne ID
DELETE FROM watch WHERE repo_id=ID;

Hotovo!

Toto je 14. príspevok z #100daystooffload.