Уроки 6-9: autolog, hyperparam sweep, grid search, serving + MLproject, walkthrough
This commit is contained in:
Executable
+148
@@ -0,0 +1,148 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# Глобальная настройка Git (HTTPS + токен, без SSH)
|
||||
# Запуск: bash scripts/setup_git.sh
|
||||
# ============================================================
|
||||
set -e
|
||||
|
||||
echo "🔧 Глобальная настройка Git"
|
||||
echo "============================"
|
||||
echo ""
|
||||
|
||||
if ! command -v git &> /dev/null; then
|
||||
echo "❌ Git не установлен!"
|
||||
echo " macOS: brew install git"
|
||||
echo " Ubuntu: sudo apt install git"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Git: $(git --version)"
|
||||
echo ""
|
||||
|
||||
# ─── 1. Имя и email ──────────────────────────────────────────
|
||||
DEFAULT_NAME="admin"
|
||||
DEFAULT_EMAIL="admin@e7.by"
|
||||
GIT_NAME="${GIT_NAME:-$DEFAULT_NAME}"
|
||||
GIT_EMAIL="${GIT_EMAIL:-$DEFAULT_EMAIL}"
|
||||
|
||||
read -p "Имя [$GIT_NAME]: " input_name
|
||||
read -p "Email [$GIT_EMAIL]: " input_email
|
||||
|
||||
git config --global user.name "${input_name:-$GIT_NAME}"
|
||||
git config --global user.email "${input_email:-$GIT_EMAIL}"
|
||||
echo "✅ user.name = $(git config --global user.name)"
|
||||
echo "✅ user.email = $(git config --global user.email)"
|
||||
echo ""
|
||||
|
||||
# ─── 2. Базовые настройки ────────────────────────────────────
|
||||
git config --global init.defaultBranch main
|
||||
git config --global core.autocrlf input
|
||||
git config --global core.safecrlf true
|
||||
git config --global core.longpaths true
|
||||
git config --global core.editor "vi"
|
||||
git config --global core.pager "less -FRX"
|
||||
git config --global color.ui auto
|
||||
git config --global pull.rebase true
|
||||
git config --global rebase.autoStash true
|
||||
git config --global push.default current
|
||||
echo "✅ Базовые настройки (main, rebase, colors, pager)"
|
||||
|
||||
# ─── 3. Алиасы ───────────────────────────────────────────────
|
||||
git config --global alias.st "status -sb"
|
||||
git config --global alias.co "checkout"
|
||||
git config --global alias.br "branch"
|
||||
git config --global alias.ci "commit"
|
||||
git config --global alias.cm "commit -m"
|
||||
git config --global alias.ca "commit --amend"
|
||||
git config --global alias.lg "log --oneline --graph --decorate --all"
|
||||
git config --global alias.last "log -1 HEAD --stat"
|
||||
git config --global alias.unstage "restore --staged"
|
||||
git config --global alias.discard "checkout --"
|
||||
git config --global alias.aliases "config --get-regexp ^alias\\."
|
||||
echo "✅ Алиасы: git st, git lg, git ci, git cm, git co, git br, git ca, git last"
|
||||
|
||||
# ─── 4. Credential helper (хранение токенов) ─────────────────
|
||||
# macOS: токен в Keychain (безопасно, шифруется)
|
||||
# Linux: токен в ~/.git-credentials (файл, без шифрования)
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
git config --global credential.helper osxkeychain
|
||||
echo "✅ credential.helper = osxkeychain (macOS Keychain)"
|
||||
else
|
||||
git config --global credential.helper store
|
||||
chmod 600 ~/.git-credentials 2>/dev/null || true
|
||||
echo "✅ credential.helper = store (~/.git-credentials, chmod 600)"
|
||||
fi
|
||||
|
||||
# ─── 5. Настройка токена для git.e7.by ────────────────────────
|
||||
echo ""
|
||||
echo "🔐 Настройка токена для git.e7.by"
|
||||
echo "--------------------------------------------"
|
||||
echo " git.e7.by работает только через HTTPS + токен."
|
||||
echo " Токен можно создать в: Profile → Settings → Access Tokens"
|
||||
echo ""
|
||||
|
||||
read -p "Введите токен (или Enter чтобы пропустить): " TOKEN
|
||||
|
||||
if [ -n "$TOKEN" ]; then
|
||||
# Сохраняем токен через credential helper
|
||||
# Формат: https://username:token@host
|
||||
echo "https://core:${TOKEN}@git.e7.by" | git credential-store store 2>/dev/null || \
|
||||
echo "https://core:${TOKEN}@git.e7.by" >> ~/.git-credentials 2>/dev/null || true
|
||||
|
||||
# Для macOS Keychain — через security
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
# Записываем в Keychain напрямую
|
||||
security add-internet-password -s git.e7.by -a core -w "$TOKEN" -r https 2>/dev/null || true
|
||||
echo "✅ Токен сохранён в macOS Keychain (git.e7.by / core)"
|
||||
else
|
||||
chmod 600 ~/.git-credentials 2>/dev/null || true
|
||||
echo "✅ Токен сохранён в ~/.git-credentials"
|
||||
fi
|
||||
|
||||
# ВАЖНО: remote URL должен быть БЕЗ токена!
|
||||
# Токен подхватится автоматически из credential helper
|
||||
echo ""
|
||||
echo "📌 Теперь добавляйте remote БЕЗ токена:"
|
||||
echo " git remote add origin https://git.e7.by/sandbox/repo.git"
|
||||
echo " git push -u origin main"
|
||||
echo " (токен подставится автоматически из credential helper)"
|
||||
else
|
||||
echo "⏭️ Токен не введён — пропускаю"
|
||||
echo " Добавьте позже:"
|
||||
echo " echo 'https://core:ТОКЕН@git.e7.by' >> ~/.git-credentials # Linux"
|
||||
echo " security add-internet-password -s git.e7.by -a core -w 'ТОКЕН' -r https # macOS"
|
||||
fi
|
||||
|
||||
# ─── 6. Если репо уже есть — чистим токен из remote URL ──────
|
||||
echo ""
|
||||
echo "🧹 Проверка текущих remote на наличие токена в URL..."
|
||||
CLEANED=0
|
||||
for repo_remote in $(git remote 2>/dev/null); do
|
||||
url=$(git remote get-url "$repo_remote" 2>/dev/null || true)
|
||||
if echo "$url" | grep -q "://.*:.*@"; then
|
||||
clean_url=$(echo "$url" | sed 's|://[^@]*@|://|')
|
||||
git remote set-url "$repo_remote" "$clean_url"
|
||||
echo " ✅ $repo_remote: токен удалён из URL"
|
||||
echo " было: $url"
|
||||
echo " стало: $clean_url"
|
||||
CLEANED=1
|
||||
fi
|
||||
done
|
||||
if [ "$CLEANED" -eq 0 ]; then
|
||||
echo " ✅ Токенов в remote URL не найдено"
|
||||
fi
|
||||
|
||||
# ─── 7. Финал ────────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "============================================"
|
||||
echo " ✅ Настройка завершена!"
|
||||
echo "============================================"
|
||||
echo ""
|
||||
echo "📋 Глобальные настройки:"
|
||||
echo "--------------------------------------------"
|
||||
git config --global --list
|
||||
echo "--------------------------------------------"
|
||||
echo ""
|
||||
echo "🧪 Проверка токена:"
|
||||
echo " git ls-remote https://git.e7.by/sandbox/mlflow-practice.git"
|
||||
echo " (если спросит пароль — токен не подхватился)"
|
||||
Reference in New Issue
Block a user