--- name: gitea_push_directory kind: function lang: bash domain: infra version: "1.0.0" purity: impure signature: "gitea_push_directory(directory: string, owner: string, repo: string, branch: string) -> void" description: "Inicializa git en un directorio local y lo sube a un repositorio Gitea existente. Si el directorio ya tiene .git, actualiza el remote y pushea cambios pendientes. Protege registry.db añadiéndolo al .gitignore antes del commit." tags: [gitea, git, push, directory, sync, infra, repo] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] params: - name: directory desc: "ruta absoluta o relativa al directorio local a subir" - name: owner desc: "usuario u organización propietaria del repositorio Gitea destino" - name: repo desc: "nombre del repositorio Gitea destino (debe existir previamente)" - name: branch desc: "rama en la que hacer push (default: main)" output: "vacío — efectos observables en el repositorio Gitea destino" tested: false tests: [] test_file_path: "" file_path: "bash/functions/infra/gitea_push_directory.sh" --- ## Ejemplo ```bash source bash/functions/infra/gitea_push_directory.sh export GITEA_URL="https://git.example.com" export GITEA_TOKEN="$(pass agentes/dataforge-token)" # Subir directorio a repo existente gitea_push_directory "/home/lucas/myproject" "myorg" "my-app" # Subir a rama específica gitea_push_directory "/home/lucas/myproject" "myorg" "my-app" "develop" ``` ## Notas - Requiere `GITEA_URL` y `GITEA_TOKEN` seteadas. - El token se embebe en la URL del remote para autenticación (nunca se imprime a stdout/stderr, se enmascara con ***). - Si `registry.db` existe en el directorio, se añade automáticamente al `.gitignore` local. - Si el `.git` ya existe con un remote diferente, se redirige al repo indicado sin perder el historial local. - Usa `--force-with-lease` para el primer push y fallback a push normal (para repos vacíos recién creados). - El commit se firma con `agent@fn-registry` si no hay configuración git en el entorno.