How to identify a deleted branch

お困りですか?

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

コミュニティに質問

プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

目的

Identify accidentally deleted branches.

ソリューション

SQL クエリ

Deleted branches can be detected by running the following query in Bitbucket Server:

  • Replace <project_key> and <repository_slug> with the appropriate values:

    select p.project_key, r.slug, pr.ref_id, pr.change_type, pr.from_hash, pr.to_hash, nu.name, a.created_timestamp 
    from sta_repo_push_ref pr 
    	join sta_repo_activity ra on ra.activity_id = pr.activity_id 
    	join repository r on r.id = ra.repository_id 
    	join project p on p.id = r.project_id 
    	join sta_activity a on a.id = pr.activity_id 
    	join sta_normal_user nu on nu.user_id = a.user_id 
    where p.project_key = '<project_key>' 
    	and r.slug = '<repository_slug>' 
    	and to_hash like '0000000%' 
    order by a.created_timestamp desc;
  • The query checks for branches where the tip of the branch is 0000000000000000000000000000000000000000. This identifies a deleted branch.

The <project_key> is the key defined for the project in the project table, and the <repository_slug> is the repo slug defined in the repository table.

REST API

From Bitbucket 7.1.0 onwards, the GET /rest/api/latest/projects/{projectKey}/repos/{repositorySlug}/ref-change-activities endpoint can be used to retrieve changes to repo refs, which include branch deletions.

Sample API output for a deleted branch:

ここをクリックして展開...
...
        {
            "id": 6477,
            "createdDate": 1680049511420,
            "user": {
                "name": "user1",
                "emailAddress": "user1@atlassian.com",
                "id": 2,
                "displayName": "user1",
                "active": true,
                "slug": "user1",
                "type": "NORMAL",
                "links": {
                    "self": [
                        {
                            "href": "http://bitbucket.test.com/users/user1"
                        }
                    ]
                }
            },
            "repository": {
                "slug": "repo1",
                "id": 1,
                "name": "repo1",
                "hierarchyId": "374f1d313b9ccec62c49",
                "scmId": "git",
                "state": "AVAILABLE",
                "statusMessage": "Available",
                "forkable": true,
                "project": {
                    "key": "PROJ1",
                    "id": 1,
                    "name": "Project 1",
                    "public": false,
                    "type": "NORMAL",
                    "links": {
                        "self": [
                            {
                                "href": "http://bitbucket.test.com/projects/PROJ1"
                            }
                        ]
                    }
                },
                "public": true,
                "links": {
                    "clone": [
                        {
                            "href": "ssh://git@bitbucket.test.com/proj1/repo1.git",
                            "name": "ssh"
                        },
                        {
                            "href": "http://bitbucket.test.com/scm/proj1/repo1.git",
                            "name": "http"
                        }
                    ],
                    "self": [
                        {
                            "href": "http://bitbucket.test.com/projects/PROJ1/repos/repo1/browse"
                        }
                    ]
                }
            },
            "trigger": "branch-delete",
            "refChange": {
                "ref": {
                    "id": "refs/heads/cd",
                    "displayId": "cd",
                    "type": "BRANCH"
                },
                "refId": "refs/heads/cd",
                "fromHash": "de4f52fa7859d53c70733fc748df29689f713dc9",
                "toHash": "0000000000000000000000000000000000000000",
                "type": "DELETE",
                "updateType": "NOT_FORCED"
            }
        }
...
  • the refChange.type  value is "DELETE "
  • the refChange.toHash value shows "0000000000000000000000000000000000000000"


Restore a deleted branch

Once the deleted branches have been identified, if the branch has to be restored, follow the instructions on the How to restore a deleted branch page.


Bitbucket versions earlier than 7.20 do not log branch create and delete events performed through the UI in the audit logs.
This has been addressed from version 7.20 onwards, as part of the feature request,  BSERV-7046 - Getting issue details... STATUS

Last modified on Mar 29, 2023

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

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