Bitbucket Data Center インスタンスをクリーンアップする

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

このガイドの目的は、Bitbucket インスタンス整理する方法を説明することです。 

すべての状況に対応できる万能のアプローチはありません。そのため、このページでは、インスタンスのクリーンアップに使用できるさまざまなテクニックを紹介します。これはチームワークであることは間違いなく、組織内の人の助けを得る必要があります。ビジネス ルールの決定と適切な担当者の関与の詳細については、「クリーンアップを準備する」を参照してください。  

始める前にデータをバックアップすることをお勧めします。バックアップの作成方法を参照してください。また、本番環境に適用する前に、まずテスト環境で変更を実行することをお勧めします。

非アクティブなユーザーを削除する

誰かが組織を離れた場合は、ユーザー アカウントを削除することをお勧めします。これによって、インスタンスのセキュリティを維持し、プル リクエストを誤って非アクティブ ユーザーに割り当てるのを防ぎ、当然のことながらライセンス キャパシティも確保できます。

非アクティブなユーザーを検索および削除するには、次の 3 つの方法があります。

ユーザーの削除を自動化するにはどうすればよいですか?

REST API を使用してユーザーを削除できます。以下に例を示します。

curl -u USERNAME:PASSWORD -v -X DELETE 'http://localhost:7990/bitbucket/rest/api/latest/admin/users?name={USER_SLUG}'

Marketplace アプリ

マージされたブランチを削除する

時間が経つにつれ、インスタンスがマージされたブランチで煩雑になり、それは安全に削除できます。

Bitbucket の [ブランチ] ページでは、ブランチをフィルタリングし、そのステータスを確認して、一度に 1 つずつブランチを削除することができます。詳細については、「Bitbucket Server でブランチを使用する」を参照してください。

ブランチの削除を自動化するにはどうすればよいですか?

Git コマンド ラインを使用してマージされたすべてのブランチを削除できます。たとえば、すでにメイン ブランチにマージされたすべてのブランチを削除するには、次の手順を実行します。

#Ensure that refs are up to date, and that stale local refs are pruned.
git fetch -p

#Dry run to list branches which will be deleted on the remote.
#This assumes that the remote is named 'origin'.
#Note that branches can be excluded from deletion by adding them after
#the 'main' branch exclusion, e.g. "grep -v 'main' | grep -v 'branch-to-keep'"
git branch --remote --merged origin/main | grep -v 'main' | sed 's/origin\///'

#Delete the branches on the origin. This process can take a long time to run
#and will use up SCM resources on Bitbucket. It's recommended to run it during
#downtime, and possibly in batches.
git branch --remote --merged origin/master | grep -v 'main' | sed 's/origin\///' | xargs git push --delete origin


Marketplace アプリ

  • My Branches for Bitbucket によって、あなたのブランチの寄与水準を判定し、それらをリスト化し、古いブランチを簡単に削除できます。

  • Mass Delete branches from Bitbucket は、一括削除オプションをブランチ ページに追加するため、複数のブランチを選択し、すべて同時に削除できます。

非アクティブなリポジトリを削除する

Bitbucket 7.13 以前の回避策

Bitbucket インスタンスが作成から数年経つと、削除されたユーザーのパーソナル リポジトリ、または数か月間アクセスされていないリポジトリがある可能性が高くなります

削除されたユーザーのパーソナル リポジトリを見つける方法に関するこの回避策は、リポジトリの発見に有用であり、それによってそのようなリポジトリを移動すべきか、削除すべきかを判断できます。

リポジトリの削除を自動化するにはどうすればよいですか?

リポジトリの削除は、REST API を使用して自動化できます。以下に例を示します。

curl -u USERNAME:PASSWORD -v -X DELETE http://localhost:7990/bitbucket/rest/api/latest/projects/{PROJECT_KEY}/repos/{REPO_SLUG}

Marketplace アプリ

ScriptRunner を使用して、特定のプロジェクトのすべてのリポジトリを削除できます。プロジェクト内のすべてのリポジトリの削除については、この例をご確認ください。これは、[管理者] > [ScriptRunner] > [Script Console (スクリプト コンソール)] から実行できます。ScriptRunner の詳細

この機能は、Bitbucket Data Center ライセンスを持っている場合にのみ利用できます。

Bitbucket Data Center インスタンスでは、定期的なリポジトリのクリーンアップが必要になる可能性が高くなります。リポジトリ ページでは、混乱の原因となっている非アクティブなリポジトリを簡単に見つけてクリーンアップできます。

リポジトリを一度に 1 つずつ確認して削除するという繰り返しのタスクを避けるために、高度なリポジトリ管理ドキュメントをご参照ください

古い Git タグを削除する

リポジトリ内に多数のタグがあると、そのサイズが大きくなり、クローン操作やフェッチ操作の実行時間が長くなる可能性があります。

特定のコミットに関連付けられているすべてのタグを表示するには[コミット] ページでそのコミットに移動します。リポジトリへの書き込みアクセス権がある場合は、タグを削除できます。

タグの削除を自動化するにはどうすればよいですか?

パターンを含むタグを除く、リモート上のすべてのタグを削除できます。次に例を示します。

#Dry run to list tags which will be deleted on the remote.
#Note that tags can be excluded from deletion by adding them after as
#inverted grep matches, e.g. "grep -v 'release' | grep -v 'tag-to-keep'".
git ls-remote --tags | grep -v '\^{}$' | grep -v 'release' | cut -f2 -d$'\t' | xargs -n 1

#Delete the tags on the origin. This process can take a long time to run
#and will use up SCM resources on Bitbucket. It's recommended to run it during
#downtime, and possibly in batches.
git ls-remote --tags | grep -v '\^{}$' | grep -v 'release' | cut -f2 -d$'\t' | xargs -I % git push origin :%

非アクティブなプル リクエストを自動的に却下

この機能は、Bitbucket Data Center ライセンスを持っている場合にのみ利用できます。

リスト内のオープンなプル リクエストの数が増えると、不要な混乱が生じます。プル リクエストの自動却下オプションを使うと、非アクティブなプル リクエストを自動で却下することで、生産性を向上させて Bitbucket Data Center インスタンスのパフォーマンスを最適化できます。このオプションはデフォルトで有効化されていて、個々のリポジトリまたはプロジェクト内にあるすべてに対して設定されます。

この機能の使用方法の詳細については「プル リクエストの自動却下」をご確認ください。

最終更新日: 2023 年 12 月 5 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.