se agrego cifrado de credenciales con openssl
This commit is contained in:
76
README.md
76
README.md
@ -1,77 +1,55 @@
|
||||
# 🛠️ Git Subir – Automatización de Push con Gitea
|
||||
# 🛠️ git subir
|
||||
|
||||
Este paquete te permite ejecutar `git subir` como un comando personalizado que:
|
||||
|
||||
- Detecta cambios sin commitear
|
||||
- Realiza commit automático si lo deseás
|
||||
- Maneja push con credenciales de Gitea
|
||||
- Resuelve conflictos de merge automáticamente
|
||||
- Valida credenciales antes de instalarse
|
||||
Comando personalizado para subir cambios a un repositorio Gitea con autenticación automática, manejo de conflictos y commits interactivos.
|
||||
|
||||
---
|
||||
|
||||
## 📦 Instalación
|
||||
## 🚀 Instalación
|
||||
|
||||
```bash
|
||||
chmod +x instalar-subir.sh
|
||||
./instalar-subir.sh
|
||||
Durante la instalación se te pedirá:
|
||||
|
||||
Usuario de Gitea
|
||||
Verifica e instala openssl si falta.
|
||||
|
||||
Contraseña o token
|
||||
Solicita usuario y token de Gitea.
|
||||
|
||||
Validación automática contra el servidor
|
||||
Verifica credenciales contra la API.
|
||||
|
||||
🚀 Uso
|
||||
Desde cualquier repositorio Git:
|
||||
Permite guardar credenciales cifradas o en texto plano.
|
||||
|
||||
bash
|
||||
git subir
|
||||
El script:
|
||||
Crea el comando global git subir.
|
||||
|
||||
Detecta cambios sin commitear
|
||||
Seguridad
|
||||
Las credenciales pueden guardarse cifradas con openssl.
|
||||
|
||||
Te pregunta si querés hacer commit automático
|
||||
|
||||
Intenta hacer git push con tus credenciales
|
||||
|
||||
Si falla, hace git pull --allow-unrelated-histories
|
||||
|
||||
Detecta conflictos y te pregunta si querés hacer merge automático
|
||||
Se descifran al ejecutar git subir mediante contraseña.
|
||||
|
||||
🧹 Desinstalación
|
||||
bash
|
||||
chmod +x desinstalar-subir.sh
|
||||
./desinstalar-subir.sh
|
||||
Esto elimina:
|
||||
Elimina el comando, el script y las credenciales.
|
||||
|
||||
El alias git subir
|
||||
✨ Funcionalidades de git subir
|
||||
Detecta cambios sin commitear y ofrece hacer commit automático.
|
||||
|
||||
El script principal
|
||||
Realiza git push con autenticación embebida.
|
||||
|
||||
Las credenciales guardadas
|
||||
Si el push falla, intenta git pull --allow-unrelated-histories.
|
||||
|
||||
📁 Archivos creados
|
||||
~/.scripts/git-subir.sh: script principal
|
||||
Detecta conflictos y ofrece merge automático.
|
||||
|
||||
~/.scripts/.env: credenciales (modo seguro)
|
||||
Muestra mensajes claros y estructurados.
|
||||
|
||||
/usr/local/bin/git-subir: alias ejecutable
|
||||
📦 Requisitos
|
||||
openssl
|
||||
|
||||
🔐 Seguridad
|
||||
Las credenciales se guardan en modo 600 (solo lectura para el usuario).
|
||||
|
||||
No se comparten ni se suben a ningún repositorio.
|
||||
|
||||
Podés borrarlas en cualquier momento con el desinstalador.
|
||||
|
||||
🧩 Requisitos
|
||||
Git instalado
|
||||
|
||||
Acceso a Gitea con token o contraseña
|
||||
|
||||
Permisos para escribir en /usr/local/bin
|
||||
|
||||
🧠 Autor
|
||||
Este sistema fue diseñado para automatizar flujos Git en entornos con Gitea, optimizando la experiencia de push y manejo de conflictos.
|
||||
Nahuel Baglietto — Scripts diseñados para mejorar la experiencia de trabajo con Git y Gitea.
|
||||
|
||||
Código
|
||||
|
||||
---
|
||||
|
||||
¿Querés que también agregue una opción en el instalador para instalar el comando solo
|
||||
|
8
desinstalar-subir.sh
Normal file → Executable file
8
desinstalar-subir.sh
Normal file → Executable file
@ -1,13 +1,11 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "🧹 Eliminando alias git-subir..."
|
||||
echo "🧹 Desinstalando git subir..."
|
||||
|
||||
sudo rm -f /usr/local/bin/git-subir
|
||||
|
||||
echo "🧹 Eliminando script principal..."
|
||||
rm -f "$HOME/.scripts/git-subir.sh"
|
||||
|
||||
echo "🧹 Eliminando credenciales..."
|
||||
rm -f "$HOME/.scripts/.env"
|
||||
rm -f "$HOME/.scripts/.env.enc"
|
||||
|
||||
echo "✅ Desinstalación completa."
|
||||
|
@ -1,15 +1,77 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# 📁 Crear directorio de scripts
|
||||
echo "🔧 Instalación del comando git subir"
|
||||
|
||||
# 📦 Verificar openssl
|
||||
if ! command -v openssl &> /dev/null; then
|
||||
echo "⚠️ openssl no está instalado. Instalando..."
|
||||
if command -v apt &> /dev/null; then
|
||||
sudo apt update && sudo apt install -y openssl
|
||||
elif command -v pacman &> /dev/null; then
|
||||
sudo pacman -Sy --noconfirm openssl
|
||||
else
|
||||
echo "❌ No se pudo instalar openssl automáticamente. Instalalo manualmente."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 📁 Crear carpeta
|
||||
mkdir -p "$HOME/.scripts"
|
||||
|
||||
# 📜 Copiar script principal
|
||||
# 🔄 Reconfigurar si existen credenciales
|
||||
if [[ -f "$HOME/.scripts/.env" || -f "$HOME/.scripts/.env.enc" ]]; then
|
||||
read -p "⚠️ Ya existen credenciales. ¿Querés reconfigurarlas? (s/n): " reconfig
|
||||
[[ "$reconfig" != "s" ]] && echo "🚫 Instalación cancelada." && exit 0
|
||||
fi
|
||||
|
||||
# 🔐 Solicitar credenciales
|
||||
read -p "👤 Usuario de Gitea: " GITEA_USER
|
||||
read -s -p "🔑 Token o contraseña: " GITEA_TOKEN
|
||||
echo ""
|
||||
read -p "🌐 URL base de la API de Gitea (ej: https://gitea.midominio.org): " GITEA_API_URL
|
||||
|
||||
# 🔎 Verificar credenciales
|
||||
response=$(curl -s -u "$GITEA_USER:$GITEA_TOKEN" "$GITEA_API_URL/api/v1/user")
|
||||
if ! echo "$response" | grep -q '"login":"'"$GITEA_USER"'"'; then
|
||||
echo "❌ Credenciales inválidas. Abortando instalación."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 🔐 Cifrar si desea
|
||||
read -p "¿Querés guardar las credenciales cifradas con openssl? (s/n): " cifrar
|
||||
if [[ "$cifrar" == "s" ]]; then
|
||||
echo "🔐 Ingresá una contraseña para cifrar:"
|
||||
read -s passphrase
|
||||
echo -e "GITEA_USER=$GITEA_USER\nGITEA_TOKEN=$GITEA_TOKEN\nGITEA_API_URL=$GITEA_API_URL" | \
|
||||
openssl enc -aes-256-cbc -salt -out "$HOME/.scripts/.env.enc" -pass pass:"$passphrase"
|
||||
rm -f "$HOME/.scripts/.env"
|
||||
echo "✅ Credenciales cifradas guardadas."
|
||||
else
|
||||
echo -e "GITEA_USER=$GITEA_USER\nGITEA_TOKEN=$GITEA_TOKEN\nGITEA_API_URL=$GITEA_API_URL" > "$HOME/.scripts/.env"
|
||||
chmod 600 "$HOME/.scripts/.env"
|
||||
rm -f "$HOME/.scripts/.env.enc"
|
||||
echo "⚠️ Credenciales guardadas sin cifrar."
|
||||
fi
|
||||
|
||||
# 📜 Script principal
|
||||
cat <<'EOF' > "$HOME/.scripts/git-subir.sh"
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# 🔐 Cargar credenciales
|
||||
if [[ -f "$HOME/.scripts/.env.enc" ]]; then
|
||||
echo "🔐 Ingresá la contraseña para descifrar tus credenciales:"
|
||||
read -s passphrase
|
||||
openssl enc -aes-256-cbc -d -in "$HOME/.scripts/.env.enc" -pass pass:"$passphrase" > /tmp/.env.dec
|
||||
source /tmp/.env.dec
|
||||
rm /tmp/.env.dec
|
||||
elif [[ -f "$HOME/.scripts/.env" ]]; then
|
||||
source "$HOME/.scripts/.env"
|
||||
else
|
||||
echo "❌ No se encontraron credenciales. Ejecutá instalar-subir.sh primero."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
remote_url=$(git remote get-url origin | sed 's|https://||')
|
||||
auth_url="https://$GITEA_USER:$GITEA_TOKEN@$remote_url"
|
||||
@ -24,7 +86,6 @@ function marco() {
|
||||
if ! git diff-index --quiet HEAD; then
|
||||
echo "📦 Se detectaron cambios sin commitear:"
|
||||
git status -s
|
||||
|
||||
read -p "¿Querés hacer commit automático de estos cambios? (s/n): " auto_commit
|
||||
if [[ "$auto_commit" == "s" ]]; then
|
||||
read -p "📝 Ingresá el mensaje de commit: " mensaje
|
||||
@ -62,34 +123,9 @@ EOF
|
||||
|
||||
chmod +x "$HOME/.scripts/git-subir.sh"
|
||||
|
||||
# 🔗 Crear alias ejecutable
|
||||
# 🔗 Alias global
|
||||
echo "Creando alias git-subir..."
|
||||
cat <<EOF | sudo tee /usr/local/bin/git-subir > /dev/null
|
||||
#!/bin/bash
|
||||
exec "$HOME/.scripts/git-subir.sh" "\$@"
|
||||
EOF
|
||||
|
||||
echo -e "#!/bin/bash\nexec \"$HOME/.scripts/git-subir.sh\" \"\$@\"" | sudo tee /usr/local/bin/git-subir > /dev/null
|
||||
sudo chmod +x /usr/local/bin/git-subir
|
||||
|
||||
# 🔐 Credenciales
|
||||
echo "🔐 Configurando credenciales de Gitea..."
|
||||
read -p "Usuario de Gitea: " GITEA_USER
|
||||
read -s -p "Contraseña o Token: " GITEA_TOKEN
|
||||
echo ""
|
||||
|
||||
echo "🔎 Verificando credenciales..."
|
||||
response=$(curl -s -u "$GITEA_USER:$GITEA_TOKEN" https://gitea.espaciomemoria.ar/api/v1/user)
|
||||
|
||||
if echo "$response" | grep -q '"login":"'"$GITEA_USER"'"'; then
|
||||
echo "✅ Credenciales válidas."
|
||||
echo "GITEA_USER=$GITEA_USER" > "$HOME/.scripts/.env"
|
||||
echo "GITEA_TOKEN=$GITEA_TOKEN" >> "$HOME/.scripts/.env"
|
||||
chmod 600 "$HOME/.scripts/.env"
|
||||
else
|
||||
echo "❌ Credenciales inválidas. Abortando instalación."
|
||||
sudo rm -f /usr/local/bin/git-subir
|
||||
rm -rf "$HOME/.scripts/git-subir.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Instalación completa. Usá el comando: git subir"
|
||||
|
Reference in New Issue
Block a user