feat(deploy): non-invasive git config + opt-in init-copilot + portable detection
WP6: Globaler 'git init'-Override und init.templateDir werden nicht mehr gesetzt (griff auch bei git clone fremder Repos). Stattdessen Opt-in-Alias 'git init-copilot'. Frueher gesetzte invasive Werte werden gezielt entfernt (nur wenn sie auf unsere Templates/Bootstrap zeigen). WP7: post-merge Auto-Deploy im Setup-Repo nur noch mit --with-self-update-hook. WP4: detect_vscode_user_dir (Server/Insiders/VSCodium/Cursor/Flatpak/macOS/Windows-WSL), identisch in deploy + copilot-update; ${USER:-} gegen set -u abgesichert. Getestet isoliert: kein alias.init, init-copilot gesetzt, kein init.templateDir, Hook nur mit Flag, unbekanntes Arg -> exit 2.
This commit is contained in:
parent
5890bff4e0
commit
9e14a5fe90
3 changed files with 153 additions and 49 deletions
|
|
@ -72,8 +72,8 @@ detect_vscode_user_dir() {
|
||||||
"$HOME/.config/VSCodium/User" \
|
"$HOME/.config/VSCodium/User" \
|
||||||
"$HOME/.config/Cursor/User" \
|
"$HOME/.config/Cursor/User" \
|
||||||
"$HOME/.var/app/com.visualstudio.code/config/Code/User" \
|
"$HOME/.var/app/com.visualstudio.code/config/Code/User" \
|
||||||
"/mnt/c/Users/$USER/AppData/Roaming/Code/User" \
|
"/mnt/c/Users/${USER:-}/AppData/Roaming/Code/User" \
|
||||||
"/mnt/c/Users/$USER/AppData/Roaming/Code - Insiders/User"
|
"/mnt/c/Users/${USER:-}/AppData/Roaming/Code - Insiders/User"
|
||||||
do
|
do
|
||||||
if [ -d "$d" ]; then
|
if [ -d "$d" ]; then
|
||||||
printf '%s\n' "$d"
|
printf '%s\n' "$d"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,22 @@
|
||||||
#!/usr/bin/env fish
|
#!/usr/bin/env fish
|
||||||
# deploy.fish – Copilot-Setup auf Linux mit fish-Shell deployen
|
# deploy.fish – Copilot-Setup auf Linux mit fish-Shell deployen
|
||||||
# Usage: fish scripts/deploy.fish
|
# Usage:
|
||||||
|
# fish scripts/deploy.fish # Standard-Deploy (nicht-invasiv)
|
||||||
|
# fish scripts/deploy.fish --with-self-update-hook # + post-merge Auto-Deploy im Setup-Repo
|
||||||
|
#
|
||||||
|
# Hinweis: Setzt KEINEN globalen 'git init'-Alias und KEIN init.templateDir.
|
||||||
|
# Standard-'git init'/'git clone' bleiben unberuehrt. Opt-in: 'git init-copilot'.
|
||||||
|
|
||||||
|
set WITH_SELF_HOOK 0
|
||||||
|
for arg in $argv
|
||||||
|
switch $arg
|
||||||
|
case --with-self-update-hook
|
||||||
|
set WITH_SELF_HOOK 1
|
||||||
|
case '*'
|
||||||
|
echo "Unbekanntes Argument: $arg" >&2
|
||||||
|
exit 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
set REPO_DIR (dirname (status filename))/..
|
set REPO_DIR (dirname (status filename))/..
|
||||||
set REPO_DIR (realpath $REPO_DIR)
|
set REPO_DIR (realpath $REPO_DIR)
|
||||||
|
|
@ -8,18 +24,37 @@ set REPO_DIR (realpath $REPO_DIR)
|
||||||
echo "=== Copilot Setup Deploy (Linux/fish) ==="
|
echo "=== Copilot Setup Deploy (Linux/fish) ==="
|
||||||
echo "Source: $REPO_DIR"
|
echo "Source: $REPO_DIR"
|
||||||
|
|
||||||
# ── 1. VS Code User-Verzeichnis ermitteln ─────────────────────────────────────
|
# VS Code User-Verzeichnis portabel ueber Editionen/OS ermitteln (identisch zu copilot-update.fish)
|
||||||
# Remote (VS Code Server)
|
function detect_vscode_user_dir
|
||||||
if test -d /home/(whoami)/.vscode-server/data/User
|
for d in \
|
||||||
set VSCODE_USER /home/(whoami)/.vscode-server/data/User
|
"$HOME/.vscode-server/data/User" \
|
||||||
# Flatpak
|
"$HOME/.vscode-server-insiders/data/User" \
|
||||||
else if test -d $HOME/.var/app/com.visualstudio.code/config/Code/User
|
"$HOME/Library/Application Support/Code/User" \
|
||||||
set VSCODE_USER $HOME/.var/app/com.visualstudio.code/config/Code/User
|
"$HOME/Library/Application Support/Code - Insiders/User" \
|
||||||
# Standard Linux
|
"$HOME/Library/Application Support/VSCodium/User" \
|
||||||
else
|
"$HOME/Library/Application Support/Cursor/User" \
|
||||||
set VSCODE_USER $HOME/.config/Code/User
|
"$HOME/.config/Code/User" \
|
||||||
|
"$HOME/.config/Code - Insiders/User" \
|
||||||
|
"$HOME/.config/VSCodium/User" \
|
||||||
|
"$HOME/.config/Cursor/User" \
|
||||||
|
"$HOME/.var/app/com.visualstudio.code/config/Code/User" \
|
||||||
|
"/mnt/c/Users/$USER/AppData/Roaming/Code/User" \
|
||||||
|
"/mnt/c/Users/$USER/AppData/Roaming/Code - Insiders/User"
|
||||||
|
if test -d "$d"
|
||||||
|
echo $d
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
switch (uname -s)
|
||||||
|
case Darwin
|
||||||
|
echo "$HOME/Library/Application Support/Code/User"
|
||||||
|
case '*'
|
||||||
|
echo "$HOME/.config/Code/User"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# ── 1. VS Code User-Verzeichnis ermitteln ─────────────────────────────────────
|
||||||
|
set VSCODE_USER (detect_vscode_user_dir)
|
||||||
echo "VS Code User dir: $VSCODE_USER"
|
echo "VS Code User dir: $VSCODE_USER"
|
||||||
|
|
||||||
# ── 2. User settings.json mergen / anlegen ────────────────────────────────────
|
# ── 2. User settings.json mergen / anlegen ────────────────────────────────────
|
||||||
|
|
@ -58,9 +93,15 @@ cp $REPO_DIR/git-templates/docs/USER.md $GIT_TEMPLATE_DIR/docs/
|
||||||
cp $REPO_DIR/git-templates/docs/ADMIN.md $GIT_TEMPLATE_DIR/docs/
|
cp $REPO_DIR/git-templates/docs/ADMIN.md $GIT_TEMPLATE_DIR/docs/
|
||||||
cp $REPO_DIR/git-templates/docs/MAINTAINER.md $GIT_TEMPLATE_DIR/docs/
|
cp $REPO_DIR/git-templates/docs/MAINTAINER.md $GIT_TEMPLATE_DIR/docs/
|
||||||
cp $REPO_DIR/git-templates/history/summary/PROJECT_CONTEXT.md $GIT_TEMPLATE_DIR/history/summary/
|
cp $REPO_DIR/git-templates/history/summary/PROJECT_CONTEXT.md $GIT_TEMPLATE_DIR/history/summary/
|
||||||
git config --global init.templateDir $GIT_TEMPLATE_DIR
|
|
||||||
echo " ✓ git-templates deployed → $GIT_TEMPLATE_DIR"
|
echo " ✓ git-templates deployed → $GIT_TEMPLATE_DIR"
|
||||||
echo " ✓ git config init.templateDir set"
|
# init.templateDir bewusst NICHT global setzen (sonst erbt jeder git init/clone den Gate).
|
||||||
|
set CURRENT_TPL (git config --global --get init.templateDir 2>/dev/null)
|
||||||
|
if test "$CURRENT_TPL" = "$GIT_TEMPLATE_DIR"
|
||||||
|
git config --global --unset init.templateDir
|
||||||
|
echo " ✓ altes globales init.templateDir entfernt (nicht mehr invasiv)"
|
||||||
|
else
|
||||||
|
echo " ─ init.templateDir nicht global gesetzt (gewollt)"
|
||||||
|
end
|
||||||
|
|
||||||
# ── 5. Bootstrap- & Update-Skripte ───────────────────────────────────────────
|
# ── 5. Bootstrap- & Update-Skripte ───────────────────────────────────────────
|
||||||
mkdir -p $HOME/.local/bin
|
mkdir -p $HOME/.local/bin
|
||||||
|
|
@ -81,29 +122,38 @@ end
|
||||||
|
|
||||||
# ── 6. Git-Aliase: init → auto-bootstrap | copilot-update → updater ──────────
|
# ── 6. Git-Aliase: init → auto-bootstrap | copilot-update → updater ──────────
|
||||||
# Verwendet git --exec-path um Rekursion zu vermeiden (kein Alias-Loop).
|
# Verwendet git --exec-path um Rekursion zu vermeiden (kein Alias-Loop).
|
||||||
git config --global alias.init '!f() { dir=.; for a in "$@"; do case "$a" in -*) ;; *) dir="$a" ;; esac; done; "$(git --exec-path)/git-init" "$@" && "$HOME/.local/bin/copilot-bootstrap.sh" "$dir"; }; f'
|
# Kein Override des Standard-'git init' mehr. Frueheren invasiven Alias entfernen.
|
||||||
echo " ✓ git alias 'init' gesetzt (führt copilot-bootstrap.sh automatisch aus)"
|
set CURRENT_INIT_ALIAS (git config --global --get alias.init 2>/dev/null)
|
||||||
|
if string match -q '*copilot-bootstrap*' -- "$CURRENT_INIT_ALIAS"
|
||||||
|
git config --global --unset alias.init
|
||||||
|
echo " ✓ alter invasiver 'git init'-Alias entfernt"
|
||||||
|
end
|
||||||
|
# Opt-in: explizites 'git init-copilot' macht git init + bootstrap.
|
||||||
|
git config --global alias.init-copilot '!f() { dir=.; for a in "$@"; do case "$a" in -*) ;; *) dir="$a" ;; esac; done; "$(git --exec-path)/git-init" "$@" && "$HOME/.local/bin/copilot-bootstrap.sh" "$dir"; }; f'
|
||||||
|
echo " ✓ git alias 'init-copilot' gesetzt (opt-in: git init + copilot-bootstrap)"
|
||||||
git config --global alias.copilot-update '!~/.local/bin/copilot-update.sh'
|
git config --global alias.copilot-update '!~/.local/bin/copilot-update.sh'
|
||||||
echo " ✓ git alias 'copilot-update' gesetzt (aktualisiert Templates & Prompts)"
|
echo " ✓ git alias 'copilot-update' gesetzt (aktualisiert Templates & Prompts)"
|
||||||
|
|
||||||
# ── 7. post-merge + post-commit Hook für dieses Setup-Repo ───────────────────
|
# ── 7. post-merge + post-commit Hook für dieses Setup-Repo ───────────────────
|
||||||
set SELF_HOOKS_DIR $REPO_DIR/.git/hooks
|
set SELF_HOOKS_DIR $REPO_DIR/.git/hooks
|
||||||
if test -d $SELF_HOOKS_DIR
|
if test $WITH_SELF_HOOK -eq 1
|
||||||
echo '#!/usr/bin/env sh
|
if test -d $SELF_HOOKS_DIR
|
||||||
|
echo '#!/usr/bin/env sh
|
||||||
# post-merge – Auto-Deploy nach git pull auf dem Setup-Repo
|
# post-merge – Auto-Deploy nach git pull auf dem Setup-Repo
|
||||||
echo ""
|
echo ""
|
||||||
echo " [post-merge] Setup-Repo aktualisiert – deploye Templates neu..."
|
echo " [post-merge] Setup-Repo aktualisiert – deploye Templates neu..."
|
||||||
SCRIPT_DIR="$(cd "$(dirname "$0")/../../scripts" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$0")/../../scripts" && pwd)"
|
||||||
bash "$SCRIPT_DIR/deploy.sh"' > $SELF_HOOKS_DIR/post-merge
|
bash "$SCRIPT_DIR/deploy.sh"' > $SELF_HOOKS_DIR/post-merge
|
||||||
chmod +x $SELF_HOOKS_DIR/post-merge
|
chmod +x $SELF_HOOKS_DIR/post-merge
|
||||||
echo " ✓ post-merge Hook im Setup-Repo installiert (auto-deploy nach git pull)"
|
echo " ✓ post-merge Hook im Setup-Repo installiert (auto-deploy nach git pull)"
|
||||||
# post-commit aus git-templates kopieren (History-Logs)
|
end
|
||||||
cp $REPO_DIR/git-templates/hooks/post-commit $SELF_HOOKS_DIR/post-commit
|
else
|
||||||
chmod +x $SELF_HOOKS_DIR/post-commit
|
echo " ─ post-merge Auto-Deploy nicht installiert (opt-in: --with-self-update-hook)"
|
||||||
echo " ✓ post-commit Hook im Setup-Repo installiert (History-Logs)"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== Done ==="
|
echo "=== Done ==="
|
||||||
echo "Next: Activate Settings Sync in VS Code (Ctrl+Shift+P → 'Settings Sync: Turn On')"
|
echo "Next: Activate Settings Sync in VS Code (Ctrl+Shift+P → 'Settings Sync: Turn On')"
|
||||||
echo " Templates aktuell halten: git copilot-update (in jedem Repo)"
|
echo " Neues Repo mit Copilot-Setup: git init-copilot [pfad]"
|
||||||
|
echo " Bestehendes Repo ausstatten: copilot-bootstrap.sh [pfad]"
|
||||||
|
echo " Templates aktuell halten: git copilot-update (in jedem Repo)"
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,58 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# deploy.sh – Copilot-Setup auf macOS oder Linux mit bash deployen
|
# deploy.sh – Copilot-Setup auf macOS oder Linux mit bash deployen
|
||||||
# Usage: bash scripts/deploy.sh
|
# Usage:
|
||||||
|
# bash scripts/deploy.sh # Standard-Deploy (nicht-invasiv)
|
||||||
|
# bash scripts/deploy.sh --with-self-update-hook # + post-merge Auto-Deploy im Setup-Repo
|
||||||
|
#
|
||||||
|
# Hinweis: Setzt KEINEN globalen 'git init'-Alias und KEIN init.templateDir.
|
||||||
|
# Standard-'git init'/'git clone' bleiben unberuehrt. Opt-in pro Repo:
|
||||||
|
# git init-copilot [pfad] (Alias wird hier angelegt)
|
||||||
|
# copilot-bootstrap.sh [pfad] (bestehende Repos ausstatten)
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
WITH_SELF_HOOK=0
|
||||||
|
for arg in "$@"; do
|
||||||
|
case "$arg" in
|
||||||
|
--with-self-update-hook) WITH_SELF_HOOK=1 ;;
|
||||||
|
*) echo "Unbekanntes Argument: $arg" >&2; exit 2 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
echo "=== Copilot Setup Deploy (bash) ==="
|
echo "=== Copilot Setup Deploy (bash) ==="
|
||||||
echo "Source: $REPO_DIR"
|
echo "Source: $REPO_DIR"
|
||||||
|
|
||||||
# ── 1. VS Code User-Verzeichnis ermitteln ─────────────────────────────────────
|
# VS Code User-Verzeichnis portabel ermitteln (identisch zu copilot-update.sh)
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
detect_vscode_user_dir() {
|
||||||
VSCODE_USER="$HOME/Library/Application Support/Code/User"
|
for d in \
|
||||||
# VS Code Server (Cursor, Codium, etc.)
|
"$HOME/.vscode-server/data/User" \
|
||||||
VSCODE_USER_ALT="$HOME/Library/Application Support/Cursor/User"
|
"$HOME/.vscode-server-insiders/data/User" \
|
||||||
elif [[ -d "$HOME/.vscode-server/data/User" ]]; then
|
"$HOME/Library/Application Support/Code/User" \
|
||||||
# Remote / VS Code Server
|
"$HOME/Library/Application Support/Code - Insiders/User" \
|
||||||
VSCODE_USER="$HOME/.vscode-server/data/User"
|
"$HOME/Library/Application Support/VSCodium/User" \
|
||||||
else
|
"$HOME/Library/Application Support/Cursor/User" \
|
||||||
VSCODE_USER="$HOME/.config/Code/User"
|
"$HOME/.config/Code/User" \
|
||||||
fi
|
"$HOME/.config/Code - Insiders/User" \
|
||||||
|
"$HOME/.config/VSCodium/User" \
|
||||||
|
"$HOME/.config/Cursor/User" \
|
||||||
|
"$HOME/.var/app/com.visualstudio.code/config/Code/User" \
|
||||||
|
"/mnt/c/Users/${USER:-}/AppData/Roaming/Code/User" \
|
||||||
|
"/mnt/c/Users/${USER:-}/AppData/Roaming/Code - Insiders/User"
|
||||||
|
do
|
||||||
|
if [ -d "$d" ]; then
|
||||||
|
printf '%s\n' "$d"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
case "$(uname -s)" in
|
||||||
|
Darwin) printf '%s\n' "$HOME/Library/Application Support/Code/User" ;;
|
||||||
|
*) printf '%s\n' "$HOME/.config/Code/User" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# ── 1. VS Code User-Verzeichnis ermitteln ─────────────────────────────────────
|
||||||
|
VSCODE_USER="$(detect_vscode_user_dir)"
|
||||||
echo "VS Code User dir: $VSCODE_USER"
|
echo "VS Code User dir: $VSCODE_USER"
|
||||||
mkdir -p "$VSCODE_USER"
|
mkdir -p "$VSCODE_USER"
|
||||||
|
|
||||||
|
|
@ -58,9 +91,17 @@ cp "$REPO_DIR/git-templates/docs/USER.md" "$GIT_TEMPLATE_DIR/docs/"
|
||||||
cp "$REPO_DIR/git-templates/docs/ADMIN.md" "$GIT_TEMPLATE_DIR/docs/"
|
cp "$REPO_DIR/git-templates/docs/ADMIN.md" "$GIT_TEMPLATE_DIR/docs/"
|
||||||
cp "$REPO_DIR/git-templates/docs/MAINTAINER.md" "$GIT_TEMPLATE_DIR/docs/"
|
cp "$REPO_DIR/git-templates/docs/MAINTAINER.md" "$GIT_TEMPLATE_DIR/docs/"
|
||||||
cp "$REPO_DIR/git-templates/history/summary/PROJECT_CONTEXT.md" "$GIT_TEMPLATE_DIR/history/summary/"
|
cp "$REPO_DIR/git-templates/history/summary/PROJECT_CONTEXT.md" "$GIT_TEMPLATE_DIR/history/summary/"
|
||||||
git config --global init.templateDir "$GIT_TEMPLATE_DIR"
|
|
||||||
echo " ✓ git-templates deployed → $GIT_TEMPLATE_DIR"
|
echo " ✓ git-templates deployed → $GIT_TEMPLATE_DIR"
|
||||||
echo " ✓ git config init.templateDir set"
|
# init.templateDir wird bewusst NICHT global gesetzt – sonst wuerde jeder
|
||||||
|
# 'git init'/'git clone' (auch fremde Repos) automatisch den Quality Gate erben.
|
||||||
|
# Frueher gesetzten Wert entfernen, falls er auf unsere Templates zeigt.
|
||||||
|
CURRENT_TPL="$(git config --global --get init.templateDir || true)"
|
||||||
|
if [[ "$CURRENT_TPL" == "$GIT_TEMPLATE_DIR" ]]; then
|
||||||
|
git config --global --unset init.templateDir || true
|
||||||
|
echo " ✓ altes globales init.templateDir entfernt (nicht mehr invasiv)"
|
||||||
|
else
|
||||||
|
echo " ─ init.templateDir nicht global gesetzt (gewollt)"
|
||||||
|
fi
|
||||||
|
|
||||||
# ── 5. Bootstrap- & Update-Skripte ───────────────────────────────────────────
|
# ── 5. Bootstrap- & Update-Skripte ───────────────────────────────────────────
|
||||||
mkdir -p "$HOME/.local/bin"
|
mkdir -p "$HOME/.local/bin"
|
||||||
|
|
@ -83,17 +124,25 @@ fi
|
||||||
|
|
||||||
# ── 6. Git-Aliase: init → auto-bootstrap | copilot-update → updater ──────────
|
# ── 6. Git-Aliase: init → auto-bootstrap | copilot-update → updater ──────────
|
||||||
# Verwendet git --exec-path um Rekursion zu vermeiden (kein Alias-Loop).
|
# Verwendet git --exec-path um Rekursion zu vermeiden (kein Alias-Loop).
|
||||||
git config --global alias.init '!f() { dir=.; for a in "$@"; do case "$a" in -*) ;; *) dir="$a" ;; esac; done; "$(git --exec-path)/git-init" "$@" && "$HOME/.local/bin/copilot-bootstrap.sh" "$dir"; }; f'
|
# Kein Override des Standard-'git init' mehr. Frueheren invasiven Alias entfernen.
|
||||||
echo " ✓ git alias 'init' gesetzt (führt copilot-bootstrap.sh automatisch aus)"
|
CURRENT_INIT_ALIAS="$(git config --global --get alias.init || true)"
|
||||||
|
if [[ "$CURRENT_INIT_ALIAS" == *copilot-bootstrap* ]]; then
|
||||||
|
git config --global --unset alias.init || true
|
||||||
|
echo " ✓ alter invasiver 'git init'-Alias entfernt"
|
||||||
|
fi
|
||||||
|
# Opt-in: explizites 'git init-copilot' macht git init + bootstrap.
|
||||||
|
git config --global alias.init-copilot '!f() { dir=.; for a in "$@"; do case "$a" in -*) ;; *) dir="$a" ;; esac; done; "$(git --exec-path)/git-init" "$@" && "$HOME/.local/bin/copilot-bootstrap.sh" "$dir"; }; f'
|
||||||
|
echo " ✓ git alias 'init-copilot' gesetzt (opt-in: git init + copilot-bootstrap)"
|
||||||
git config --global alias.copilot-update '!~/.local/bin/copilot-update.sh'
|
git config --global alias.copilot-update '!~/.local/bin/copilot-update.sh'
|
||||||
echo " ✓ git alias 'copilot-update' gesetzt (aktualisiert Templates & Prompts)"
|
echo " ✓ git alias 'copilot-update' gesetzt (aktualisiert Templates & Prompts)"
|
||||||
|
|
||||||
# ── 7. post-merge Hook für dieses Setup-Repo ─────────────────────────────────
|
# ── 7. post-merge Hook für dieses Setup-Repo ─────────────────────────────────
|
||||||
# Nach jedem 'git pull' auf dem Setup-Repo selbst wird deploy.sh automatisch
|
# Nur mit --with-self-update-hook: nach jedem 'git pull' auf dem Setup-Repo
|
||||||
# ausgeführt, sodass Templates immer auf dem neuesten Stand sind.
|
# wird deploy.sh automatisch erneut ausgeführt.
|
||||||
SELF_HOOKS_DIR="$REPO_DIR/.git/hooks"
|
SELF_HOOKS_DIR="$REPO_DIR/.git/hooks"
|
||||||
if [[ -d "$SELF_HOOKS_DIR" ]]; then
|
if [[ "$WITH_SELF_HOOK" -eq 1 ]]; then
|
||||||
cat > "$SELF_HOOKS_DIR/post-merge" << 'HOOK'
|
if [[ -d "$SELF_HOOKS_DIR" ]]; then
|
||||||
|
cat > "$SELF_HOOKS_DIR/post-merge" << 'HOOK'
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
# post-merge – Auto-Deploy nach git pull auf dem Setup-Repo
|
# post-merge – Auto-Deploy nach git pull auf dem Setup-Repo
|
||||||
echo ""
|
echo ""
|
||||||
|
|
@ -101,11 +150,16 @@ echo " [post-merge] Setup-Repo aktualisiert – deploye Templates neu..."
|
||||||
SCRIPT_DIR="$(cd "$(dirname "$0")/../../scripts" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$0")/../../scripts" && pwd)"
|
||||||
bash "$SCRIPT_DIR/deploy.sh"
|
bash "$SCRIPT_DIR/deploy.sh"
|
||||||
HOOK
|
HOOK
|
||||||
chmod +x "$SELF_HOOKS_DIR/post-merge"
|
chmod +x "$SELF_HOOKS_DIR/post-merge"
|
||||||
echo " ✓ post-merge Hook im Setup-Repo installiert (auto-deploy nach git pull)"
|
echo " ✓ post-merge Hook im Setup-Repo installiert (auto-deploy nach git pull)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " ─ post-merge Auto-Deploy nicht installiert (opt-in: --with-self-update-hook)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== Done ==="
|
echo "=== Done ==="
|
||||||
echo "Next: Activate Settings Sync in VS Code (Cmd+Shift+P → 'Settings Sync: Turn On')"
|
echo "Next: Activate Settings Sync in VS Code (Cmd+Shift+P → 'Settings Sync: Turn On')"
|
||||||
echo " Templates aktuell halten: git copilot-update (in jedem Repo)"
|
echo " Neues Repo mit Copilot-Setup: git init-copilot [pfad]"
|
||||||
|
echo " Bestehendes Repo ausstatten: copilot-bootstrap.sh [pfad]"
|
||||||
|
echo " Templates aktuell halten: git copilot-update (in jedem Repo)"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue