Commit automático por git subir

This commit is contained in:
2025-08-16 22:16:10 -03:00
parent 68ea6dc88f
commit f05e3d20c5
4 changed files with 184 additions and 207 deletions

150
README.md
View File

@ -1,119 +1,99 @@
# 🚀 git subir
# 🚀 git-subir
Comando personalizado para automatizar el push de cambios a un repositorio Gitea. Incluye autenticación segura, commits interactivos, resolución de conflictos y configuración automatizada.
Script CLI para automatizar el push de cambios a repositorios Gitea con autenticación segura, configuración automática de remotos, commits interactivos, recuperación ante errores y cifrado opcional de credenciales.
---
## 📂 Archivos incluidos
## 📦 Archivos incluidos
### `instalar-subir.sh`
Script de instalación que:
- Verifica si `openssl` está instalado (y lo instala si falta).
- Solicita credenciales de Gitea: usuario, token/contraseña y URL base de la API.
- Verifica las credenciales contra la API de Gitea.
- Permite guardar las credenciales cifradas con `openssl` o en texto plano.
- Crea el script principal `git-subir.sh` en `~/.scripts/`.
- Genera un alias global `git subir` disponible en todo el sistema.
### `git-subir.sh`
Script principal que:
- Carga las credenciales (descifrándolas si están cifradas).
- Detecta cambios sin commitear y ofrece hacer commit automático.
- Realiza `git push` con autenticación embebida.
- Si el push falla, intenta `git pull --allow-unrelated-histories`.
- Detecta conflictos y ofrece hacer merge automático.
- Muestra mensajes claros y estructurados para guiar al usuario.
### `desinstalar-subir.sh`
Script de desinstalación que:
- Elimina el alias global `git subir`.
- Borra el script `git-subir.sh`.
- Elimina las credenciales guardadas (cifradas o no).
| Archivo | Descripción |
|------------------------|-----------------------------------------------------------------------------|
| `instalar-subir.sh` | Instalador interactivo que configura credenciales, instala el comando global `git-subir` y valida entorno. |
| `git-subir` | Script principal que automatiza el flujo de push, commits, configuración de remotos y recuperación ante errores. |
| `desinstalar-subir.sh` | Elimina el binario instalado y la configuración/credenciales guardadas. |
---
## 🔐 Seguridad
## 🔧 Requisitos
- Las credenciales pueden guardarse cifradas con `openssl` usando una contraseña definida por el usuario.
- El script `git-subir.sh` descifra las credenciales en tiempo de ejecución y las borra inmediatamente después de usarlas.
- Si se elige guardar sin cifrar, se almacenan en `~/.scripts/.env` con permisos restringidos (`chmod 600`).
---
## 📦 Requisitos
- `openssl` (se instala automáticamente si falta)
- Acceso a una instancia de Gitea con API habilitada
- Permisos de escritura en `/usr/local/bin` para crear el alias global
- Bash 4+
- Git instalado y configurado
- `curl`, `jq`, `openssl` disponibles en el sistema
- Acceso a un servidor Gitea con token o usuario/contraseña válidos
- Carpeta `~/.local/bin` incluida en el `$PATH`
---
## 🧪 Instalación
```bash
chmod +x desinstalar-subir.sh
chmod +x instalar-subir.sh
./instalar-subir.sh
Durante la instalación se te pedirá:
Usuario de Gitea
URL base del servidor Gitea (ej: https://gitea.midominio.com)
Token o contraseña
Usuario y contraseña o token
URL base de la API (ej: https://gitea.midominio.org)
Si querés cifrar las credenciales (usando AES-256-CBC con PBKDF2)
Si querés guardar las credenciales cifradas
Confirmación para instalar git-subir como comando global
Al finalizar, podrás usar el comando:
El script valida las credenciales contra la API de Gitea antes de continuar.
🚀 Uso
Una vez instalado, podés usar git-subir desde cualquier repositorio git:
bash
git subir
git-subir
El script realiza:
Carga y descifrado de credenciales (si están cifradas)
Verificación de cambios sin commitear
Commit automático si lo autorizás
Verificación de configuración del remote origin
Push al repositorio remoto
Si el push falla, intenta git pull --rebase y reintenta
🔁 Reconfigurar credenciales
Podés ejecutar:
bash
git-subir --reconfigurar
Esto permite:
Cambiar usuario/contraseña o token
Elegir si querés cifrar o guardar en texto plano
Validar nuevamente contra la API
Reescribir la configuración en ~/.config/git-subir/
🔐 Seguridad
Cifrado con openssl usando AES-256-CBC y derivación PBKDF2
La contraseña de cifrado nunca se guarda
Los archivos se almacenan en ~/.config/git-subir/ para mantener orden
El binario se instala en ~/.local/bin/git-subir para uso global
🧹 Desinstalación
bash
chmod +x ./desinstalar-subir.sh
chmod +x desinstalar-subir.sh
./desinstalar-subir.sh
Esto elimina:
El alias git subir
El binario git-subir de ~/.local/bin
El script git-subir.sh
Las credenciales guardadas
🔄 Flujo de uso
Ejecutás git subir.
El script carga las credenciales (descifradas si están cifradas).
Detecta si hay cambios sin commitear:
Si hay, ofrece hacer commit automático.
Intenta hacer git push al repositorio remoto con autenticación embebida.
Si el push falla:
Intenta git pull --allow-unrelated-histories.
Si hay conflictos, los muestra y ofrece hacer merge automático.
Si todo sale bien, muestra 🎉 Push completado.
💡 Ejemplo de uso
bash
git subir
Si hay cambios sin commitear, te preguntará si querés hacer commit.
Si hay conflictos, te preguntará si querés hacer merge automático.
Si todo está limpio, sube los cambios directamente.
Las credenciales y configuración de ~/.config/git-subir
🧠 Autor
Nahuel Baglietto Scripts diseñados para mejorar la experiencia de trabajo con Git y Gitea, priorizando seguridad, automatización y facilidad de uso.
🛡️ Licencia
Este proyecto puede ser usado, modificado y distribuido libremente bajo los términos que defina su autor.
Nahuel Baglietto