Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
8c7cd78
Add Bitbucket Server to GitHub Enterprise migration tool
claude Mar 24, 2026
180c0b3
Add .gitignore and remove cached Python bytecode files
claude Mar 24, 2026
a4ca909
Add flexible Bitbucket-to-GitHub project/repo mapping
claude Mar 28, 2026
be5d7e4
Rewrite README with step-by-step getting started guide
claude Mar 28, 2026
1d5ae0c
Add include_repos and exclude_repos per-project filters
claude Apr 17, 2026
e98266c
Add verify_ssl option for Bitbucket with self-signed certificates
claude Apr 17, 2026
8fa3873
Embed token in GitHub push URL and suppress SSL warnings
claude Apr 17, 2026
b4408d2
Auto-remap submodule URLs from Bitbucket to GitHub during migrate and…
claude Apr 17, 2026
85df821
Set default branch on GitHub to match Bitbucket's HEAD after push
claude Apr 17, 2026
655cb46
Preserve SSH protocol when remapping submodule URLs
claude Apr 17, 2026
26b05ea
Auto-convert large files to Git LFS before pushing to GitHub
claude Apr 17, 2026
b1a721a
Fix LFS migration by using a temp working copy instead of bare repo
claude Apr 17, 2026
f4015ea
Sanitize repo descriptions to strip control characters
claude Apr 17, 2026
445c0b4
Fix LFS migration for all branches and redact tokens from error logs
claude Apr 17, 2026
9a55bb3
Suppress expected git errors from cluttering logs
claude Apr 17, 2026
3520bac
Rewrite submodule remapping to handle hostname variants and skip on f…
claude Apr 17, 2026
392108b
Add reset-submodules command to re-migrate repos with .gitmodules
claude Apr 17, 2026
02cce76
Skip git lfs push when no files were converted to LFS
claude Apr 17, 2026
f02940a
Add reset-lfs command to re-migrate repos with large files
claude Apr 17, 2026
e23583a
Fix reset-lfs to detect LFS by indicators instead of blob sizes
claude Apr 17, 2026
fc76175
Skip LFS smudge during temp clone for LFS migration
claude Apr 17, 2026
e737e86
Add general reset command with project/repo/all targeting
claude Apr 17, 2026
32bd09b
Fix fetch on bare clones by specifying explicit refspecs
claude Apr 17, 2026
af69fb2
Handle LFS migrate checkout failure on repos with unborn branches
claude Apr 17, 2026
4070f27
Fix false positive LFS detection by checking for actual object files
claude Apr 18, 2026
ed7421b
Use SSH for GitHub push remote when ssh_host is configured
claude Apr 18, 2026
9a57624
Use ssh:// URL format for GitHub SSH push and submodule remapping
claude Apr 18, 2026
25566d7
Add github.ssh_url config for custom SSH user in push and submodule URLs
claude Apr 18, 2026
7667c26
Pre-check for large blobs before running expensive LFS migration
claude Apr 19, 2026
a9d42d9
Add migration report command with failure tracking
claude Apr 19, 2026
7771c74
Fix large blob detection by streaming rev-list to cat-file via pipe
claude Apr 19, 2026
2b28e8b
Use git verify-pack for large blob detection instead of rev-list pipe
claude Apr 19, 2026
86afaf4
Fix reset --all not clearing failed repos, and failed repos blocking …
claude Apr 19, 2026
d0709e6
Add configurable delay between repo migrations to avoid rate limits
claude Apr 19, 2026
0fbab50
Fix LFS pre-check to only scan reachable blobs, not orphaned pack obj…
claude Apr 19, 2026
5c04c62
Skip push in syncer when no changes detected, add throttle delay
claude Apr 19, 2026
0dedef3
Add quiet parameter to syncer's _run_git
claude Apr 19, 2026
f49b625
Fix false change detection in syncer by storing BB refs snapshot
claude Apr 19, 2026
948b61a
Add sync.exclude_projects to skip projects from continuous sync
claude Apr 19, 2026
b61c8e0
Remove LFS from sync cycle
claude Apr 20, 2026
acdf619
Add --repo flag to migrate command for targeting specific repos
claude Apr 20, 2026
e6dbdad
Fix missing projects_set variable in reset command
claude Apr 20, 2026
4661a23
Re-add LFS to sync with fast pre-check guard
claude Apr 20, 2026
d55852e
Add 60s timeout for LFS migration during sync
claude Apr 20, 2026
3a5052f
Make sync LFS timeout configurable via sync.sync_lfs_timeout_seconds
claude Apr 20, 2026
0b1fa75
Add per-repo history trimming via shallow clones
claude Apr 21, 2026
9dbd23f
Use --all --force instead of --mirror for trimmed shallow repos
claude Apr 21, 2026
ef36388
Push trimmed repos branch-by-branch to avoid 2GB pack limit
claude Apr 21, 2026
7c9f7ab
Replace shallow clone approach with git replace --graft for history t…
claude Apr 21, 2026
93f961a
Add clarifying comment about trim_history changing commit hashes
claude Apr 21, 2026
a7db377
Auto-fallback to branch-by-branch push when pack exceeds 2GB
claude Apr 22, 2026
b315ccf
Add push_by_branch config to skip --mirror attempt for large repos
claude Apr 22, 2026
e02b9a9
Add delay between branch pushes in branch-by-branch mode
claude Apr 22, 2026
17105a8
Add push_by_branch support to syncer
claude Apr 22, 2026
b483b25
Push all tags in one batch instead of individually with delays
claude Apr 22, 2026
2ae835d
Support per-repo github_org override in repo_mapping
claude Apr 23, 2026
c48e941
Add prepare-jenkins and jenkins-manifest commands for CI conversion
claude Apr 24, 2026
2df3289
Skip empty repos gracefully in prepare-jenkins
claude Apr 24, 2026
1667d0d
Add project aliases for old URLs and protected branches for sync
claude May 13, 2026
a78241c
Auto-resolve old Bitbucket project keys and add sync protected branches
claude May 13, 2026
fa6064d
Support glob patterns in sync.protected_branches
claude May 13, 2026
ed8efc7
Fix alias resolver to handle repos moved between projects
claude May 13, 2026
280ba1f
Resolve repo location via API BEFORE config lookup
claude May 13, 2026
b0542b4
Share API alias cache across all branches in a repo
claude May 13, 2026
3cecdb4
Use current date for submodule remap commits instead of year 2000
claude May 13, 2026
ec5fdd0
Fix false change detection by cleaning hidden refs before snapshot
claude May 14, 2026
57d2dc1
Suppress show-ref error log in _clean_hidden_refs for empty repos
claude May 14, 2026
d606c49
Fix false change detection by comparing only heads+tags, not remotes
claude May 14, 2026
6c3ccbb
Add timeout to git lfs push --all in syncer
claude May 14, 2026
4e6540c
Replace git lfs push --all with direct object-id pushes
claude May 14, 2026
98956dc
Add closed PR migration with branch recreation from commit SHAs
claude Jun 21, 2026
4cc35dc
Add merge/squash commit SHA fallback for closed PR migration
claude Jun 21, 2026
01f5820
Add --closed-only flag and API rate-limit throttling for PR migration
claude Jul 2, 2026
b3d5c2e
Migrate all closed PRs as closed GitHub Issues
claude Jul 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
__pycache__/
*.pyc
*.egg-info/
dist/
build/
.pytest_cache/
config.yaml
state.json
*.egg
21 changes: 21 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM python:3.12-slim

RUN apt-get update && apt-get install -y --no-install-recommends \
git \
openssh-client \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .
RUN pip install --no-cache-dir -e .

# SSH config for non-interactive git clone
RUN mkdir -p /root/.ssh && \
echo "StrictHostKeyChecking no" >> /root/.ssh/config

ENTRYPOINT ["bb2gh"]
CMD ["--help"]
Loading