トラブルシューティング ガイド
最適な移行計画でもサポートが必要です。 このユニットでは、大規模なファイル エラーやマネキンの属性から壊れた作業項目のリンクや統合エラーまで、移行後の一般的な問題をトラブルシューティングするための構造化されたガイドを提供します。 必要に応じ、高速復旧のための CLI コマンド、スクリプト、ロールバック ガイダンスを取得します。
このユニットでは、次の内容について説明します。
- 大きなファイル サイズ、LFS、リポジトリの肥大化に関する問題を診断して修正する方法
- マネキン属性の問題をすばやく解決する方法
- Azure Boards と Azure Pipelines の接続をトラブルシューティングする方法
- 緊急時に移行されたリポジトリを安全にロールバックするタイミングと方法
リポジトリのサイズと大きなファイルの問題
Symptoms
- 移行のタイムアウト
- ファイル>100MBのプッシュがブロックされました。
- 低速クローン
診断する
# Overall size and hotspots
git-sizer --verbose
# Find blobs >50MB in history
git rev-list --objects --all | \
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \
awk '/^blob/ {if ($3 > 52428800) print $3/1024/1024 " MB " $4}' | sort -rn | head
Git LFS を使用した修復
git lfs install
git lfs track "*.{zip,jar,exe,msi,dll,mp4,pdf}"
git add .gitattributes && git commit -m "Configure Git LFS"
git lfs migrate import --above=50MB --everything
git lfs ls-files
認証とアクセス許可の失敗
Symptoms
- アクセスが拒否されました。403 秒、統合に失敗しました
チェック
# GitHub token
gh auth status
# Azure DevOps token
curl -u :$ADO_PAT "https://dev.azure.com/$ADO_ORG/_apis/projects?api-version=6.0"
解決策
- GitHub PAT: repo, admin:repo_hook, read:org (必要に応じて admin:org), workflow
- ADO PAT: ビルド (読み取り)、コード (読み取り)、プロジェクト & チーム (読み取り)、サービス接続 (管理)、作業項目 (読み取り/書き込み)、"すべての組織"
マネキンの解像度
Symptoms
- "Mannequin" に関連する PR/コミット
解決策
cat > user-mapping.csv << EOF
mannequin-login,target-user
john-mannequin,john.doe
EOF
gh ado2gh reclaim-mannequin \
--github-org "$GITHUB_ORG" \
--csv-file user-mapping.csv
Azure Boards のリンクと接続
Symptoms
- AB# 参照がリンクされていません。ADO 更新プログラムなし
診断と修正
# Check autolinks
gh api "/repos/$GITHUB_ORG/$REPO/autolinks" | jq -r '.[] | "\(.key_prefix) -> \(.url_template)"'
# Configure autolink (fallback)
gh api -X POST "/repos/$GITHUB_ORG/$REPO/autolinks" \
-f key_prefix="AB#" \
-f url_template="https://dev.azure.com/$ADO_ORG/$ADO_TEAM_PROJECT/_workitems/edit/<num>" \
-f is_alphanumeric=false
# For full integration, ensure webhook exists
gh api "/repos/$GITHUB_ORG/$REPO/hooks" | jq -r '.[] | select(.config.url|contains("dev.azure.com"))'
gh api -X POST "/repos/$GITHUB_ORG/$REPO/hooks/$HOOK_ID/tests"
見つからない場合は、次のコマンドを実行します。
gh ado2gh integrate-boards \
--ado-org "$ADO_ORG" \
--ado-team-project "$ADO_TEAM_PROJECT" \
--github-org "$GITHUB_ORG" \
--github-repo "$REPO" \
--verbose
Azure Pipelines のハイブリッド統合
Symptoms
- パイプラインはトリガーされません。GitHub リポジトリに接続できない
チェック
# List GitHub-type service connections in ADO
curl -s -u :$ADO_PAT \
"https://dev.azure.com/$ADO_ORG/$ADO_TEAM_PROJECT/_apis/serviceendpoint/endpoints?api-version=6.0-preview.4" | \
jq -r '.value[] | select(.type=="github") | {id,name}'
修正
# Share service connection across projects
gh ado2gh share-service-connection \
--ado-org "$ADO_ORG" \
--ado-team-project "$TARGET_TEAM_PROJECT" \
--service-connection-id "$SERVICE_CONNECTION_ID" \
--verbose
# Rewire pipeline to GitHub repo
gh ado2gh rewire-pipeline \
--ado-org "$ADO_ORG" \
--ado-team-project "$ADO_TEAM_PROJECT" \
--ado-pipeline "$PIPELINE_NAME_OR_PATH" \
--github-org "$GITHUB_ORG" \
--github-repo "$GITHUB_REPO" \
--service-connection-id "$SERVICE_CONNECTION_ID" \
--verbose
緊急ロールバック
使用するタイミング:
- 移行されたリポジトリの重大な欠陥
- 大規模なアクセスまたはコンプライアンスエラー
Steps:
- 移行を一時停止する。関係者に通知する
- ターゲットリポジトリをロールバックします(必要に応じて、承認がある場合)。
gh repo delete "$GITHUB_ORG/$REPO" --confirm - ADO の解除; アクセスを復元する
- 根本原因を把握する。計画を調整する。移行のスケジュールを変更する