fix: sync remotes без чужих readme-шаблонов, check-github-clean
Каждое зеркало получает только свой README и шаблон; GitHub без internal URL в дереве.
This commit is contained in:
Executable
+52
@@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Перед push на github: нет internal URL и файлов других зеркал.
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
cd "$ROOT"
|
||||||
|
|
||||||
|
PATTERNS=(
|
||||||
|
'git\.kalinamall\.ru'
|
||||||
|
'git\.papatramp\.ru'
|
||||||
|
'papatramp\.lan'
|
||||||
|
'192\.168\.'
|
||||||
|
'kalinamall/main'
|
||||||
|
'push.*kalinamall'
|
||||||
|
)
|
||||||
|
|
||||||
|
scan_files() {
|
||||||
|
local hits=0
|
||||||
|
local files
|
||||||
|
files=$(git ls-files)
|
||||||
|
while read -r f; do
|
||||||
|
[[ -z $f ]] && continue
|
||||||
|
[[ -f $f ]] || continue
|
||||||
|
case $f in
|
||||||
|
scripts/check-github-clean.sh | scripts/push-remotes.sh) continue ;;
|
||||||
|
esac
|
||||||
|
for pat in "${PATTERNS[@]}"; do
|
||||||
|
if grep -qE "$pat" "$f" 2>/dev/null; then
|
||||||
|
echo " INTERNAL? $f (pattern: $pat)"
|
||||||
|
hits=$((hits + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done <<<"$files"
|
||||||
|
return $hits
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "[check-github-clean] сканирование tracked-файлов"
|
||||||
|
n=0
|
||||||
|
scan_files || n=$?
|
||||||
|
if [[ $n -gt 0 ]]; then
|
||||||
|
echo "[check-github-clean] найдено: $n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for f in scripts/readme/kalinamall.md scripts/readme/home.md; do
|
||||||
|
if [[ -f $f ]]; then
|
||||||
|
echo " FORBIDDEN FILE: $f"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "[check-github-clean] OK"
|
||||||
+47
-18
@@ -1,46 +1,75 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Push README.md с правильным содержимым на каждый remote (ветки README расходятся).
|
# Синхронизация main на kalinamall / home / github: свой README и только свои readme-шаблоны.
|
||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
|
|
||||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
cd "$ROOT"
|
cd "$ROOT"
|
||||||
|
|
||||||
CHECK_SECRETS="${CHECK_SECRETS:-$HOME/Documents/Cursor/Projects/Answer.and.other.shit/guides/init.new.comps/scripts/check-no-secrets.sh}"
|
CHECK_SECRETS="${CHECK_SECRETS:-$HOME/Documents/Cursor/Projects/Answer.and.other.shit/guides/init.new.comps/scripts/check-no-secrets.sh}"
|
||||||
|
CHECK_GITHUB="${CHECK_GITHUB:-$ROOT/scripts/check-github-clean.sh}"
|
||||||
|
|
||||||
push_readme() {
|
sync_remote() {
|
||||||
local remote=$1
|
local remote=$1
|
||||||
local template=$2
|
local readme_template=$2
|
||||||
local message=$3
|
local branch="sync-${remote}"
|
||||||
local branch="push-${remote}-readme"
|
shift 2
|
||||||
|
local -a remove=( "$@" )
|
||||||
|
|
||||||
git fetch "$remote"
|
git fetch "$remote"
|
||||||
git checkout -B "$branch" "${remote}/main"
|
git checkout -B "$branch" "${remote}/main"
|
||||||
cp "$template" README.md
|
git checkout main -- .
|
||||||
git add README.md
|
cp "$readme_template" README.md
|
||||||
|
|
||||||
|
for f in "${remove[@]}"; do
|
||||||
|
if [[ -e $f ]]; then
|
||||||
|
rm -rf "$f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
git add -A
|
||||||
if git diff --cached --quiet; then
|
if git diff --cached --quiet; then
|
||||||
echo "[push-readme] $remote: README без изменений"
|
echo "[push-remotes] $remote: без изменений"
|
||||||
else
|
else
|
||||||
git commit -m "$message"
|
git commit -m "chore: sync $remote (README и файлы зеркала)"
|
||||||
fi
|
fi
|
||||||
if [[ $remote == github ]] && [[ -f $CHECK_SECRETS ]]; then
|
|
||||||
bash "$CHECK_SECRETS" github
|
if [[ $remote == github ]]; then
|
||||||
|
if [[ -f $CHECK_GITHUB ]]; then
|
||||||
|
bash "$CHECK_GITHUB"
|
||||||
|
fi
|
||||||
|
if [[ -f $CHECK_SECRETS ]]; then
|
||||||
|
bash "$CHECK_SECRETS" github
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
git push "$remote" "${branch}:main"
|
git push "$remote" "${branch}:main"
|
||||||
git checkout main
|
git checkout main
|
||||||
git branch -D "$branch"
|
git branch -D "$branch"
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "[push-readme] kalinamall: push текущего main"
|
echo "[push-remotes] kalinamall"
|
||||||
git push kalinamall main
|
sync_remote kalinamall "$ROOT/scripts/readme/kalinamall.md" \
|
||||||
|
scripts/readme/github.md \
|
||||||
|
scripts/readme/home.md
|
||||||
|
|
||||||
push_readme home "$ROOT/scripts/readme/home.md" "docs: README для home (git.papatramp.ru)"
|
echo "[push-remotes] home"
|
||||||
push_readme github "$ROOT/scripts/readme/github.md" "docs: README для GitHub (без internal URL)"
|
sync_remote home "$ROOT/scripts/readme/home.md" \
|
||||||
|
scripts/readme/github.md \
|
||||||
|
scripts/readme/kalinamall.md \
|
||||||
|
scripts/push-remotes.sh \
|
||||||
|
scripts/check-github-clean.sh
|
||||||
|
|
||||||
|
echo "[push-remotes] github"
|
||||||
|
sync_remote github "$ROOT/scripts/readme/github.md" \
|
||||||
|
scripts/readme/kalinamall.md \
|
||||||
|
scripts/readme/home.md \
|
||||||
|
scripts/push-remotes.sh \
|
||||||
|
scripts/check-github-clean.sh
|
||||||
|
|
||||||
cp "$ROOT/scripts/readme/kalinamall.md" README.md
|
cp "$ROOT/scripts/readme/kalinamall.md" README.md
|
||||||
git add README.md
|
git add README.md
|
||||||
if ! git diff --cached --quiet; then
|
if ! git diff --cached --quiet; then
|
||||||
git commit -m "docs: README для kalinamall (рабочая копия)"
|
git commit -m "docs: README kalinamall (рабочая копия main)"
|
||||||
fi
|
fi
|
||||||
git push kalinamall main
|
|
||||||
|
|
||||||
echo "[push-readme] готово."
|
echo "[push-remotes] готово."
|
||||||
|
|||||||
Reference in New Issue
Block a user