(args, git_root)
| 299 | # --------------------------------------------------------------------------- |
| 300 | |
| 301 | def cmd_forward_port(args, git_root): |
| 302 | dry_run = args.dry_run |
| 303 | do_push = args.push |
| 304 | version = args.version |
| 305 | release_branch = args.release_branch |
| 306 | stable_branch = args.stable_branch |
| 307 | latest_lts_stable_branch = args.latest_lts_stable_branch |
| 308 | release_date_str = args.release_date or date.today().isoformat() |
| 309 | |
| 310 | version_dir = git_root / "changelog" / f"v{version}" |
| 311 | |
| 312 | print(f"\n=== Changelog forward-port for v{version} ===") |
| 313 | print(f" Release date : {release_date_str}") |
| 314 | print(f" release_branch : {release_branch}") |
| 315 | print(f" stable_branch : {stable_branch}") |
| 316 | print(f" also targets : main") |
| 317 | if latest_lts_stable_branch: |
| 318 | print(f" lts also targets: {latest_lts_stable_branch}") |
| 319 | if dry_run: |
| 320 | print(" (dry-run — no changes will be made)") |
| 321 | elif not do_push: |
| 322 | print(" (push disabled — run with --push when ready)") |
| 323 | print() |
| 324 | |
| 325 | # Step 1: checkout release branch and write release-date.txt |
| 326 | print(f"[1] Checking out {release_branch} and writing release-date.txt") |
| 327 | git(["checkout", release_branch], cwd=git_root, dry_run=dry_run) |
| 328 | |
| 329 | if not dry_run and not version_dir.exists(): |
| 330 | print(f"Error: version folder {version_dir} does not exist. " |
| 331 | f"Run 'prepare' first.", file=sys.stderr) |
| 332 | sys.exit(1) |
| 333 | |
| 334 | date_file = version_dir / "release-date.txt" |
| 335 | print(f" Writing {date_file.relative_to(git_root)}: {release_date_str}") |
| 336 | if not dry_run: |
| 337 | date_file.write_text(release_date_str + "\n", encoding="utf-8") |
| 338 | |
| 339 | version_summary = f"changelog/v{version}/version-summary.md" |
| 340 | |
| 341 | # Step 2: commit A — release-date.txt only (before generate) |
| 342 | print(f"\n[2] Committing release-date.txt to {release_branch} (commit A)") |
| 343 | git(["add", f"changelog/v{version}/release-date.txt"], cwd=git_root, dry_run=dry_run) |
| 344 | |
| 345 | if not dry_run and not has_staged_changes(git_root, [f"changelog/v{version}/release-date.txt"]): |
| 346 | print(" Nothing staged — release-date.txt was already up to date.") |
| 347 | else: |
| 348 | msg_a = f"Set release date {release_date_str} for v{version}" |
| 349 | print(f" Committing: {msg_a!r}") |
| 350 | git(["commit", "-m", msg_a], cwd=git_root, dry_run=dry_run) |
| 351 | |
| 352 | # Step 3: commit B — regenerate, then stage CHANGELOG.md + version-summary.md |
| 353 | print(f"\n[3] Running logchangeGenerate (with release date {release_date_str})") |
| 354 | run_logchange_generate(args.gradle_cmd, git_root, dry_run=dry_run) |
| 355 | |
| 356 | print(f"\n[3b] Staging CHANGELOG.md and version-summary.md to {release_branch} (commit B)") |
| 357 | git(["add", "CHANGELOG.md", version_summary], cwd=git_root, dry_run=dry_run) |
| 358 |
nothing calls this directly
no test coverage detected
searching dependent graphs…