bigpowers 2.76.1 → 2.76.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.pi/package.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [2.76.2](https://github.com/danielvm-git/bigpowers/compare/v2.76.1...v2.76.2) (2026-07-09)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **ci:** add orphan gitlink guard to prevent checkout failures ([#70](https://github.com/danielvm-git/bigpowers/issues/70)) ([4325ae9](https://github.com/danielvm-git/bigpowers/commit/4325ae9fd853defbb37d63c41317278b8882a6be))
|
|
7
|
+
|
|
1
8
|
## [2.76.1](https://github.com/danielvm-git/bigpowers/compare/v2.76.0...v2.76.1) (2026-07-09)
|
|
2
9
|
|
|
3
10
|
|
package/package.json
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# check-orphan-gitlinks.sh — fail if git index has gitlinks without .gitmodules URLs
|
|
3
|
+
# story: BUG-2026-07-09T033939-golden-g01-submodule-checkout
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
check_orphan_gitlinks() {
|
|
7
|
+
local repo_root="${1:-.}"
|
|
8
|
+
local gitlinks orphans=0
|
|
9
|
+
|
|
10
|
+
cd "$repo_root"
|
|
11
|
+
|
|
12
|
+
while IFS= read -r path; do
|
|
13
|
+
[[ -z "$path" ]] && continue
|
|
14
|
+
if [[ ! -f .gitmodules ]] || ! git config -f .gitmodules --get "submodule.${path}.url" >/dev/null 2>&1; then
|
|
15
|
+
gitlinks+=("$path")
|
|
16
|
+
orphans=$((orphans + 1))
|
|
17
|
+
fi
|
|
18
|
+
done < <(git ls-files -s | awk '$1 == "160000" { $1=$2=$3=""; sub(/^ /, ""); print }')
|
|
19
|
+
|
|
20
|
+
if [[ "$orphans" -eq 0 ]]; then
|
|
21
|
+
echo "no orphan gitlinks"
|
|
22
|
+
return 0
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
echo "orphan gitlink(s) without .gitmodules URL:" >&2
|
|
26
|
+
printf ' %s\n' "${gitlinks[@]}" >&2
|
|
27
|
+
return 1
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
31
|
+
check_orphan_gitlinks "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
32
|
+
fi
|
|
@@ -137,6 +137,17 @@ else
|
|
|
137
137
|
done
|
|
138
138
|
fi
|
|
139
139
|
|
|
140
|
+
# ── CI: orphan gitlinks break actions/checkout submodule cleanup ───────────────
|
|
141
|
+
echo "--- [CI] orphan gitlinks ---"
|
|
142
|
+
# shellcheck source=lib/check-orphan-gitlinks.sh
|
|
143
|
+
source "$REPO_ROOT/scripts/lib/check-orphan-gitlinks.sh"
|
|
144
|
+
if check_orphan_gitlinks "$REPO_ROOT" >/dev/null; then
|
|
145
|
+
doctrine_pass "no orphan gitlinks"
|
|
146
|
+
else
|
|
147
|
+
doctrine_fail "git index contains gitlink(s) without .gitmodules URL — breaks actions/checkout"
|
|
148
|
+
check_orphan_gitlinks "$REPO_ROOT" >&2 || true
|
|
149
|
+
fi
|
|
150
|
+
|
|
140
151
|
# ── CI: trace-stories wrapper smoke (REPO_ROOT must be set under set -u) ───────
|
|
141
152
|
echo "--- [CI] trace-stories wrapper smoke ---"
|
|
142
153
|
if bash "$REPO_ROOT/scripts/trace-stories.sh" --help >/dev/null 2>&1; then
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: BUG-2026-07-09T033939-golden-g01-submodule-checkout
|
|
3
|
+
# Regression: orphan gitlinks (160000) without .gitmodules URLs break actions/checkout.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
8
|
+
# shellcheck source=../scripts/lib/check-orphan-gitlinks.sh
|
|
9
|
+
source "$REPO_ROOT/scripts/lib/check-orphan-gitlinks.sh"
|
|
10
|
+
|
|
11
|
+
# Clean tree must pass.
|
|
12
|
+
if ! output="$(check_orphan_gitlinks "$REPO_ROOT")"; then
|
|
13
|
+
echo "FAIL: check_orphan_gitlinks failed on clean tree"
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
if [[ "$output" != "no orphan gitlinks" ]]; then
|
|
17
|
+
echo "FAIL: unexpected output: $output"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
# Synthetic orphan: gitlink path with no .gitmodules entry must fail.
|
|
22
|
+
tmpdir="$(mktemp -d)"
|
|
23
|
+
trap 'rm -rf "$tmpdir"' EXIT
|
|
24
|
+
git -C "$tmpdir" init -q
|
|
25
|
+
git -C "$tmpdir" config user.email "test@example.com"
|
|
26
|
+
git -C "$tmpdir" config user.name "test"
|
|
27
|
+
mkdir -p "$tmpdir/sub"
|
|
28
|
+
echo "nested" >"$tmpdir/sub/file.txt"
|
|
29
|
+
git -C "$tmpdir/sub" init -q
|
|
30
|
+
git -C "$tmpdir/sub" add file.txt
|
|
31
|
+
git -C "$tmpdir/sub" commit -qm "nested"
|
|
32
|
+
git -C "$tmpdir" add sub
|
|
33
|
+
if ! check_orphan_gitlinks "$tmpdir" >/dev/null 2>&1; then
|
|
34
|
+
echo "PASS: synthetic orphan gitlink correctly rejected"
|
|
35
|
+
exit 0
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
echo "FAIL: check_orphan_gitlinks should reject orphan gitlink in synthetic repo"
|
|
39
|
+
exit 1
|