Skip to content

Instantly share code, notes, and snippets.

@voodoodror
Last active November 12, 2018 15:12
Show Gist options
  • Save voodoodror/6d0fb70dc22dde9a53852e0b42f477da to your computer and use it in GitHub Desktop.
Save voodoodror/6d0fb70dc22dde9a53852e0b42f477da to your computer and use it in GitHub Desktop.
Bitbucket to GitHub Repository Migration Script
import json
import requests
import os
import argparse
bb_username = 'MY_USERNAME'
bb_password = 'BITBUCKET_PASSWORD'
gh_token = 'GH_TOKEN'
project_name = 'PROJECT_NAME'
def parse_input_args():
# get json path from command line
parser = argparse.ArgumentParser()
# Logging Parameters
parser.add_argument("-repository", "--repository", dest="repository", help="Repository Name", required=True)
args = parser.parse_args()
return args
input_args = parse_input_args() # get json data
repo_name = input_args.repository
print 'Changing branch permissions for developers to READ on {}'.format(repo_name)
br_url = 'https://api.bitbucket.org/1.0/group-privileges/{}/{}/{}/developers'.format(project_name,
repo_name,
project_name)
print br_url
response = requests.put(br_url, auth=(bb_username, bb_password), data='read')
print str(response.status_code) + response.text
repo_creation_json = {
"name": repo_name,
"auto_init": False,
"private": True
}
print "Creating {} GitHub Repository".format(repo_name)
response = requests.post('https://api.github.com/orgs/<ORG_NAME>/repos',
headers={'Authorization': 'token {}'.format(gh_token)},
data=json.dumps(repo_creation_json))
print str(response.status_code) + response.text
print "Granting dev group WRITE access to {}".format(repo_name)
response = requests.put('https://api.github.com/teams/<ORG_NAME>/repos/<ORG_NAME>/{}'.format(repo_name),
headers={'Authorization': 'token {}'.format(gh_token)},
data='{"permission": "push"}')
print str(response.status_code) + response.text
os.system('git clone git@bitbucket.org:{}/{}.git'.format(project_name,
repo_name))
os.chdir(os.getcwd() + '/{}'.format(repo_name))
os.system('git remote rename origin bitbucket')
os.system('git remote add origin https://github.com/<ORG_NAME>/{}.git'.format(repo_name))
os.system('git push origin master')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment