plugins/git-master/skills/git-2-49-features/SKILL.md
Git 2.49 specific features and performance improvements. PROACTIVELY activate for: (1) git-backfill command (new in 2.49) for partial clones, (2) path-walk API improvements, (3) zlib-ng integration for faster compression, (4) reftables backend stabilization, (5) revision-walk performance, (6) bundle URI improvements, (7) sparse-checkout enhancements in 2.49, (8) git maintenance defaults in 2.49, (9) credential helper updates. Provides: 2.49 changelog summary, git-backfill recipes, performance comparison vs 2.48, and migration notes for users upgrading from 2.40+.
npx skillsauth add JosiahSiegel/claude-plugin-marketplace git-2-49-featuresInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
What: Efficiently download missing objects in partial clones using the path-walk API.
Why: Dramatically improves delta compression when fetching objects from partial clones, resulting in smaller downloads and better performance.
# Check if you have a partial clone
git config extensions.partialClone
# Download missing objects in background
git backfill
# Download with custom batch size
git backfill --batch-size=1000
# Respect sparse-checkout patterns (only fetch needed files)
git backfill --sparse
# Check progress
git backfill --verbose
Scenario 1: After cloning with --filter=blob:none
# Clone without blobs
git clone --filter=blob:none https://github.com/large/repo.git
cd repo
# Later, prefetch all missing objects efficiently
git backfill
Scenario 2: Sparse-checkout + Partial clone
# Clone with both optimizations
git clone --filter=blob:none --sparse https://github.com/monorepo.git
cd monorepo
git sparse-checkout set src/api
# Fetch only needed objects
git backfill --sparse
Scenario 3: CI/CD Optimization
# In CI pipeline - fetch only what's needed
git clone --filter=blob:none --depth=1 repo
git backfill --sparse
# Much faster than full clone
Traditional partial clone fetch:
git fetch --unshallow
# Downloads 500MB in random order
# Poor delta compression
With git-backfill:
git backfill
# Downloads 150MB with optimized delta compression (70% reduction)
# Groups objects by path for better compression
What: Internal API that groups together objects appearing at the same path, enabling much better delta compression.
How it works: Instead of processing objects in commit order, path-walk processes them by filesystem path, allowing Git to find better delta bases.
Benefits:
You benefit automatically when using:
git backfillgit repack (improved in 2.49)# For repack operations
git config pack.useBitmaps true
git config pack.writeBitmaps true
# Repack with path-walk optimizations
git repack -a -d -f
# Check improvement
git count-objects -v
What: Git 2.49 includes improved performance through zlib-ng integration for compression/decompression.
Benefits:
Automatically improves:
git clonegit fetchgit pushgit gcgit repackWhat: Improved algorithm for selecting object pairs during delta compression.
Results:
Automatic - no action needed.
What: Git 2.49 added Rust bindings (libgit-sys and libgit-rs) for Git's internal libraries.
Relevance: Future Git tooling and performance improvements will leverage Rust for memory safety and performance.
For developers: You can now build Git tools in Rust using official bindings.
What: Servers can now advertise promisor remote information to clients.
Benefits:
Configuration:
# View promisor remote info
git config remote.origin.promisor
git config extensions.partialClone
# Verify promisor packfiles
ls -lah .git/objects/pack/*.promisor
# Clone large monorepo with maximum efficiency
git clone --filter=blob:none --sparse https://github.com/company/monorepo.git
cd monorepo
# Only checkout your team's service
git sparse-checkout set --cone services/api
# Fetch needed objects with path-walk optimization
git backfill --sparse
# Result: 95% smaller than full clone, 70% faster download
# .github/workflows/ci.yml
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout with optimizations
run: |
git clone --filter=blob:none --depth=1 --sparse ${{ github.repositoryUrl }}
cd repo
git sparse-checkout set src tests
git backfill --sparse
- name: Run tests
run: npm test
# 80% faster than full clone in CI
# Clone repository with massive history
git clone --filter=blob:none https://github.com/project/with-long-history.git
cd with-long-history
# Work on recent code only (objects fetched on demand)
git checkout -b feature/new-feature
# When you need full history
git backfill
# Repack for optimal storage
git repack -a -d -f # Uses path-walk API
⚠️ Now Officially Deprecated:
.git/branches/ directory (use remotes instead).git/remotes/ directory (use git remote commands)Migration:
# If you have old-style remotes, convert them
# Check for deprecated directories
ls -la .git/branches .git/remotes 2>/dev/null
# Use modern remote configuration
git remote add origin https://github.com/user/repo.git
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
What: Continued development on Meson as alternative build system for Git.
Why: Faster builds, better cross-platform support.
Status: Experimental - use make for production.
What: HTTP transport now supports .netrc for authentication.
Usage:
# ~/.netrc
machine github.com
login your-username
password your-token
# Git will now use these credentials automatically
git clone https://github.com/private/repo.git
Use git-backfill for partial clones:
git backfill --sparse # Better than git fetch --unshallow
Combine optimizations:
git clone --filter=blob:none --sparse <url>
git sparse-checkout set --cone <paths>
git backfill --sparse
Regular maintenance:
git backfill # Fill in missing objects
git repack -a -d -f # Optimize with path-walk
git prune # Clean up
Monitor partial clone status:
# Check promisor remotes
git config extensions.partialClone
# List missing objects
git rev-list --objects --all --missing=print | grep "^?"
Migrate deprecated features:
# Move away from .git/branches and .git/remotes
# Use git remote commands instead
git-backfill not found:
# Verify Git version
git --version # Must be 2.49+
# Update Git
brew upgrade git # macOS
apt update && apt install git # Ubuntu
Promisor remote issues:
# Reset promisor configuration
git config --unset extensions.partialClone
git config --unset remote.origin.promisor
# Re-enable
git config extensions.partialClone origin
git config remote.origin.promisor true
Poor delta compression:
# Force repack with path-walk optimization
git repack -a -d -f --depth=250 --window=250
development
Use for Clerk sessions, tokens, webhooks, orgs, and security. PROACTIVELY activate for session tokens, JWT templates, getToken(), custom claims, pending sessions, multi-session UX, organizations, roles, permissions, system vs custom permissions, features/plans, MFA/passkeys/password policy/bot protection, Clerk webhooks, Svix signatures, verifyWebhook(), user/org sync, retries/replays, environment variables, custom domains, secret rotation, logs, and auth security reviews. Provides token semantics, webhook idempotency, authorization defaults, and hardening checklist.
tools
Use for Clerk in Next.js. PROACTIVELY activate for @clerk/nextjs setup, App Router auth()/currentUser(), clerkMiddleware(), proxy.ts/middleware.ts, createRouteMatcher(), protected pages/layouts/Route Handlers/Server Actions/API routes/tRPC, auth.protect() role/permission/token checks, ClerkProvider placement, server-only clerkClient, Link prefetch, redirects, 401/404 auth failures, custom domains, __clerk proxy paths, and deployment gotchas. Provides file patterns, server/client boundary rules, matcher templates, and production checks.
development
Use for Clerk frontend auth flows. PROACTIVELY activate for React, JavaScript, Vue, Nuxt, Astro, Expo, React Router, TanStack React Start, or SPA setup; ClerkProvider and publishable-key wiring; SignIn/SignUp/UserButton/UserProfile/OrganizationSwitcher; custom useUser/useAuth/useClerk/useSignIn/useSignUp/useSession/useOrganization flows; multi-session UX; cross-origin getToken() fetches; loading states, redirects, routing, CORS/cookies, or hydration bugs. Provides SDK selection, UI patterns, token-fetch templates, and frontend gotchas.
development
Use for Clerk dev/prod readiness, deployment, and multi-language implementation planning. PROACTIVELY activate for environment variables, pk_test/sk_test vs pk_live/sk_live, local dev, preview/staging/prod instances, domains/DNS, redirects, OAuth credentials, custom domains/proxy, authorizedParties, CSP, CORS/cookies, webhooks/tunnels, Vercel/Netlify/Cloudflare/API gateways, monitoring/troubleshooting, and backends in Node/Express/Fastify, Python/FastAPI/Django/Flask, Go, Ruby/Rails, Java/Spring, .NET, PHP/Laravel. Provides checklists, rollout plans, and language-portable patterns.