Last active
November 12, 2018 15:12
-
-
Save voodoodror/6d0fb70dc22dde9a53852e0b42f477da to your computer and use it in GitHub Desktop.
Bitbucket to GitHub Repository Migration Script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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