Compare commits

...

13 Commits

Author SHA1 Message Date
427cc4c3f1 Merge remote-tracking branch 'origin/auto-sync/mono-main-20260602-120147'
# Conflicts:
#	CHANGELOG.md
2026-06-02 16:28:21 +01:00
c7871397d3 fix(import): include tracked ignored files 2026-06-02 15:02:19 +01:00
8776ccf2d2 test: remove bidirectional sync smoke-test markers
Drops the test markers added during the 2026-05-28 onboarding-verification
round-trip (forward + reverse leg). The adopt strategy is live and the
CHANGELOG is back to its 2.2.0-release state.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 05:30:33 +01:00
b82311829c Merge pull request '[Subrepo Sync] main → main' (#5) from auto-sync/subrepo-main-20260528-042619 into main
Reviewed-on: sdlc/sdlc#5
2026-05-28 04:28:06 +00:00
e8d4ae392e Update CHANGELOG.md 2026-05-28 05:25:22 +01:00
9071e17d31 Update CHANGELOG.md 2026-05-28 05:25:22 +01:00
sync-bot
4187798fd7 Sync from monorepo 2026-05-28T04:24:11Z
Sync-Origin: forward/main/2026-05-28T04:24:11Z
2026-05-28 04:24:11 +00:00
sync-bot
5f942bced4 Sync from monorepo 2026-05-28T04:24:11Z
Sync-Origin: forward/main/2026-05-28T04:24:11Z
2026-05-28 04:24:11 +00:00
5d8af5f76a Merge pull request 'test: bidirectional sync smoke-test marker (forward leg)' (#4) from test-bidirectional-sync into main
Reviewed-on: sdlc/sdlc#4
2026-05-28 04:17:59 +00:00
2fce9b19af test: bidirectional sync smoke-test marker (forward leg)
Trivial CHANGELOG marker to verify tools/josh-sync/** propagates to
pe/josh-sync@main via the forward workflow after the 2026-05-28 adoption.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 05:17:07 +01:00
sync-bot
fac1127539 Adopt josh-sync for josh-sync
Sync-Origin: adopt/main/2026-05-28T03:19:12Z
2026-05-28 04:19:12 +01:00
sync-bot
4df4044f20 Adopt josh-sync for josh-sync
Sync-Origin: adopt/main/2026-05-28T03:19:12Z
2026-05-28 04:19:12 +01:00
sync-bot
b35703d271 Import josh-sync from subrepo/main
Sync-Origin: import/josh-sync/20260528-041502
2026-05-28 04:15:02 +01:00
4 changed files with 98 additions and 2 deletions

View File

@@ -1,5 +1,11 @@
# Changelog # Changelog
## 2.2.1
### Fixes
- Initial import now force-adds copied subrepo files so tracked files that match the copied `.gitignore` are included in the import PR.
## 2.2.0 ## 2.2.0
### Changes ### Changes

View File

@@ -1 +1 @@
2.2.0 2.2.1

View File

@@ -500,7 +500,7 @@ initial_import() {
mkdir -p "$subfolder" mkdir -p "$subfolder"
rsync -a --exclude='.git' "${work_dir}/subrepo/" "${subfolder}/" rsync -a --exclude='.git' "${work_dir}/subrepo/" "${subfolder}/"
git add "$subfolder" git add -f -- "$subfolder"
if git diff --cached --quiet; then if git diff --cached --quiet; then
log "INFO" "No changes — subfolder already matches subrepo" log "INFO" "No changes — subfolder already matches subrepo"

90
tests/unit/sync.bats Normal file
View File

@@ -0,0 +1,90 @@
#!/usr/bin/env bats
# tests/unit/sync.bats — Sync/import algorithm tests
setup() {
export JOSH_SYNC_ROOT="$(cd "$BATS_TEST_DIRNAME/../.." && pwd)"
source "$JOSH_SYNC_ROOT/lib/core.sh"
source "$JOSH_SYNC_ROOT/lib/sync.sh"
TEST_ROOT="$(mktemp -d)"
export BOT_NAME="test-bot"
export BOT_EMAIL="test-bot@test.local"
export BOT_TRAILER="Josh-Sync-Origin"
export GITEA_TOKEN="test-token"
export MONOREPO_API="https://gitea.test.local/api/v1/repos/org/mono"
export JOSH_SYNC_TARGET_NAME="crm"
export JOSH_SYNC_TARGETS='[{"name":"crm","subfolder":"apps/crm"}]'
export SYNC_BRANCH_MONO="main"
export SYNC_BRANCH_SUBREPO="main"
}
teardown() {
rm -rf "$TEST_ROOT"
}
make_mono_repo() {
local work="${TEST_ROOT}/mono-work"
local bare="${TEST_ROOT}/mono.git"
git init "$work" >/dev/null
git -C "$work" checkout -b main >/dev/null
git -C "$work" config user.name "Test User"
git -C "$work" config user.email "test@test.local"
printf 'mono\n' > "${work}/README.md"
git -C "$work" add README.md
git -C "$work" commit -m "mono base" >/dev/null
git init --bare "$bare" >/dev/null
git -C "$work" remote add origin "$bare"
git -C "$work" push origin main >/dev/null
printf '%s\n' "$bare"
}
make_subrepo_with_tracked_ignored_file() {
local work="${TEST_ROOT}/subrepo-work"
local bare="${TEST_ROOT}/subrepo.git"
git init "$work" >/dev/null
git -C "$work" checkout -b main >/dev/null
git -C "$work" config user.name "Test User"
git -C "$work" config user.email "test@test.local"
mkdir -p "${work}/.dependencies"
printf '.dependencies/\n' > "${work}/.gitignore"
printf 'visible\n' > "${work}/visible.txt"
printf 'tracked even though ignored\n' > "${work}/.dependencies/tracked.txt"
git -C "$work" add .gitignore visible.txt
git -C "$work" add -f .dependencies/tracked.txt
git -C "$work" commit -m "subrepo with tracked ignored file" >/dev/null
git init --bare "$bare" >/dev/null
git -C "$work" remote add origin "$bare"
git -C "$work" push origin main >/dev/null
printf '%s\n' "$bare"
}
mono_auth_url() {
printf '%s\n' "$MONO_BARE"
}
subrepo_auth_url() {
printf '%s\n' "$SUBREPO_BARE"
}
create_pr() {
printf '%s\n' "$4" > "${TEST_ROOT}/created-pr-head"
}
@test "initial_import stages files tracked in subrepo even when ignored by copied .gitignore" {
MONO_BARE="$(make_mono_repo)"
SUBREPO_BARE="$(make_subrepo_with_tracked_ignored_file)"
local result import_branch
result="$(initial_import)"
import_branch="$(cat "${TEST_ROOT}/created-pr-head")"
[ "$result" = "pr-created" ]
git --git-dir="$MONO_BARE" ls-tree -r --name-only "$import_branch" \
| grep -q '^apps/crm/.dependencies/tracked.txt$'
}