Feature/private repos and bugfix (#1)
* use regex replace for invalid chars, import private correctly, reduce logging information. Import as import, not migration * remove comment * fix: regex for replacing project name at correct position * print finished state Co-authored-by: Gianni <g.montalto@sprinteins.com>
This commit is contained in:
parent
d3a20d630a
commit
23d59cb987
1 changed files with 30 additions and 13 deletions
43
main.py
43
main.py
|
|
@ -3,6 +3,7 @@ import requests
|
||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
|
import re
|
||||||
|
|
||||||
#test commit
|
#test commit
|
||||||
|
|
||||||
|
|
@ -33,7 +34,10 @@ def getGiteaOrganizationID(orgName):
|
||||||
def startRepoMigration(cloneUrl, repoName, projectName):
|
def startRepoMigration(cloneUrl, repoName, projectName):
|
||||||
""" we're now have all, that we need, let's start migration """
|
""" we're now have all, that we need, let's start migration """
|
||||||
print("\nstarting migration of %s......\n" % (repoName))
|
print("\nstarting migration of %s......\n" % (repoName))
|
||||||
|
print("\nstarting migration at %s......\n" % (cloneUrl))
|
||||||
logging.info("starting migration of %s......" % (repoName))
|
logging.info("starting migration of %s......" % (repoName))
|
||||||
|
logging.info("starting migration at %s......" % (cloneUrl))
|
||||||
|
|
||||||
|
|
||||||
GiteaRepoAPIurl = props.GiteaURL + '/api/v1/repos/migrate'
|
GiteaRepoAPIurl = props.GiteaURL + '/api/v1/repos/migrate'
|
||||||
uid = getGiteaOrganizationID(projectName)
|
uid = getGiteaOrganizationID(projectName)
|
||||||
|
|
@ -42,16 +46,16 @@ def startRepoMigration(cloneUrl, repoName, projectName):
|
||||||
"auth_username": props.migrationUsername,
|
"auth_username": props.migrationUsername,
|
||||||
"clone_addr": cloneUrl,
|
"clone_addr": cloneUrl,
|
||||||
# "description": "string",
|
# "description": "string",
|
||||||
"issues": True,
|
"issues": False,
|
||||||
"labels": True,
|
"labels": False,
|
||||||
"milestones": True,
|
"milestones": False,
|
||||||
"mirror": True,
|
"mirror": False,
|
||||||
"private": True,
|
"private": True,
|
||||||
"pull_requests": True,
|
"pull_requests": False,
|
||||||
"releases": True,
|
"releases": False,
|
||||||
"repo_name": repoName,
|
"repo_name": repoName,
|
||||||
"uid": uid,
|
"uid": uid,
|
||||||
"wiki": True
|
"wiki": False
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
startRepoMigrationresponse = requests.post(GiteaRepoAPIurl, json = repoPostData, headers = headersGitea)
|
startRepoMigrationresponse = requests.post(GiteaRepoAPIurl, json = repoPostData, headers = headersGitea)
|
||||||
|
|
@ -79,8 +83,12 @@ def createGiteaOrganization(projectName, fullName, description):
|
||||||
createGiteaOrganizationresponse = requests.post(GiteaOrgsAPIurl, json = orgPostData, headers = headersGitea)
|
createGiteaOrganizationresponse = requests.post(GiteaOrgsAPIurl, json = orgPostData, headers = headersGitea)
|
||||||
createGiteaOrganizationresponse.raise_for_status()
|
createGiteaOrganizationresponse.raise_for_status()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Exception: %s \n Response: %s" % (e, createGiteaOrganizationresponse.text))
|
if "user already exists" not in createGiteaOrganizationresponse.text:
|
||||||
logging.error("Exception: %s \n Response: %s" % (e, createGiteaOrganizationresponse.text))
|
print("Exception: %s \n Response: %s" % (e, createGiteaOrganizationresponse.text))
|
||||||
|
logging.error("Exception: %s \n Response: %s" % (e, createGiteaOrganizationresponse.text))
|
||||||
|
else:
|
||||||
|
print("Skipping %s \n " % (projectName))
|
||||||
|
logging.info("Skipping %s \n " % (projectName))
|
||||||
else:
|
else:
|
||||||
print("Response: %s" % (createGiteaOrganizationresponse.text))
|
print("Response: %s" % (createGiteaOrganizationresponse.text))
|
||||||
logging.info("Response: %s" % (createGiteaOrganizationresponse.text))
|
logging.info("Response: %s" % (createGiteaOrganizationresponse.text))
|
||||||
|
|
@ -97,13 +105,21 @@ def getReposBB():
|
||||||
else:
|
else:
|
||||||
reposJson = json.loads(response.text)['values']
|
reposJson = json.loads(response.text)['values']
|
||||||
for repo in reposJson:
|
for repo in reposJson:
|
||||||
repoName = repo['name']
|
repoName = re.sub('[^A-Za-z0-9\-\.]+', '', repo['name']).lower()
|
||||||
projectName = repo['project']['name']
|
if repo['project']['type'] == 'PERSONAL':
|
||||||
|
projectName = repo['project']['key']
|
||||||
|
print("Personal project: " + projectName)
|
||||||
|
logging.info("Personal project: " + projectName)
|
||||||
|
else:
|
||||||
|
projectName = repo['project']['name']
|
||||||
try:
|
try:
|
||||||
description = repo['project']['description']
|
description = repo['project']['description']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
description = 'None'
|
description = 'None'
|
||||||
cloneLink = props.BitBucketURL + "/scm/" + projectName + "/" + repoName + ".git"
|
for cloneLinks in repo['links']['clone']:
|
||||||
|
if cloneLinks['name'] == "http":
|
||||||
|
cloneLink = cloneLinks['href']
|
||||||
|
projectName = re.sub('[^A-Za-z0-9]+', '', projectName)
|
||||||
print("Migrating: repo: %s with description: %s from project: %s via clonelink: %s" % (repoName, description, projectName, cloneLink))
|
print("Migrating: repo: %s with description: %s from project: %s via clonelink: %s" % (repoName, description, projectName, cloneLink))
|
||||||
logging.info("Migrating: repo: %s with description: %s from project: %s via clonelink: %s" % (repoName, description, projectName, cloneLink))
|
logging.info("Migrating: repo: %s with description: %s from project: %s via clonelink: %s" % (repoName, description, projectName, cloneLink))
|
||||||
|
|
||||||
|
|
@ -115,5 +131,6 @@ def getReposBB():
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
getReposBB()
|
getReposBB()
|
||||||
|
logging.info("Migration finished")
|
||||||
|
print("Migration finished")
|
||||||
main()
|
main()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue