2026/05
깃 저장소를 codeberg로 옮겼다.
깃허브, 깃랩에 있는 것을 선별해서 옮겨보니 실질적으로 약 240여개의 레포지토리에서 옮길만한 것은 12개 남짓이었다.
반성하게된다.
- 나는 개발을 열심히 하고 있다.
- 회사에서 성과를 내고 있다.
이런 생각이 있었는데 불필요한 것들을 걷어내고 보니 부족함이 많아 변화방법을 고심중이다.
레포지토리 전체를 옮기려고 파워쉘 스크립트를 실행해 옮겼다.
# --- 설정 부분 ---
$githubToken = "여기에_GITHUB_토큰_입력"
$codebergToken = "여기에_CODEBERG_토큰_입력"
$githubUser = "본인의_GITHUB_ID"
# ----------------
$headers_gh = @{ "Authorization" = "token $githubToken" }
$headers_cb = @{
"Authorization" = "token $codebergToken"
"Content-Type" = "application/json"
}
# 1. GitHub에서 모든 저장소 정보 가져오기
echo "GitHub에서 저장소 목록을 불러오는 중..."
$url_gh = "https://api.github.com/user/repos?per_page=1000&type=owner"
$repos = Invoke-RestMethod -Uri $url_gh -Headers $headers_gh
echo "총 $($repos.Count)개의 저장소를 발견했습니다."
# 2. 반복문 돌며 Codeberg로 이행 명령 전송
foreach ($repo in $repos) {
$name = $repo.name
$isPrivate = $repo.private # GitHub의 공개/비공개 여부 그대로 가져옴
echo "------------------------------------------------"
echo "이행 시작: $name (Private: $isPrivate)"
$body = @{
"clone_addr" = $repo.clone_url
"mirror" = $false # 지속적 동기화를 원하면 $true로 변경
"repo_name" = $name
"private" = $isPrivate
"auth_token" = $githubToken
} | ConvertTo-Json
try {
$response = Invoke-RestMethod -Method Post -Uri "https://codeberg.org/api/v1/repos/migrate" -Headers $headers_cb -Body $body
echo "성공: $name 이행 요청 완료"
} catch {
echo "오류 발생 ($name): $_"
}
# 3. 과부하 방지를 위해 2초간 대기 (sleep)
echo "안전을 위해 2초간 대기합니다..."
Start-Sleep -Seconds 2
}
echo "------------------------------------------------"
echo "모든 작업이 완료되었습니다!"
다 옮겨지지 않아 내용을 보니 codeberg는 레포지토리 생성이 100개까지만 가능하기 때문에 그런 것이었다.