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:
Gianni 2022-03-16 14:17:19 +01:00 committed by GitHub
parent d3a20d630a
commit 23d59cb987
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

43
main.py
View file

@ -3,6 +3,7 @@ import requests
import json
import sys
import logging
import re
#test commit
@ -33,7 +34,10 @@ def getGiteaOrganizationID(orgName):
def startRepoMigration(cloneUrl, repoName, projectName):
""" we're now have all, that we need, let's start migration """
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 at %s......" % (cloneUrl))
GiteaRepoAPIurl = props.GiteaURL + '/api/v1/repos/migrate'
uid = getGiteaOrganizationID(projectName)
@ -42,16 +46,16 @@ def startRepoMigration(cloneUrl, repoName, projectName):
"auth_username": props.migrationUsername,
"clone_addr": cloneUrl,
# "description": "string",
"issues": True,
"labels": True,
"milestones": True,
"mirror": True,
"issues": False,
"labels": False,
"milestones": False,
"mirror": False,
"private": True,
"pull_requests": True,
"releases": True,
"pull_requests": False,
"releases": False,
"repo_name": repoName,
"uid": uid,
"wiki": True
"wiki": False
}
try:
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.raise_for_status()
except Exception as e:
print("Exception: %s \n Response: %s" % (e, createGiteaOrganizationresponse.text))
logging.error("Exception: %s \n Response: %s" % (e, createGiteaOrganizationresponse.text))
if "user already exists" not in 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:
print("Response: %s" % (createGiteaOrganizationresponse.text))
logging.info("Response: %s" % (createGiteaOrganizationresponse.text))
@ -97,13 +105,21 @@ def getReposBB():
else:
reposJson = json.loads(response.text)['values']
for repo in reposJson:
repoName = repo['name']
projectName = repo['project']['name']
repoName = re.sub('[^A-Za-z0-9\-\.]+', '', repo['name']).lower()
if repo['project']['type'] == 'PERSONAL':
projectName = repo['project']['key']
print("Personal project: " + projectName)
logging.info("Personal project: " + projectName)
else:
projectName = repo['project']['name']
try:
description = repo['project']['description']
except KeyError:
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))
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():
getReposBB()
logging.info("Migration finished")
print("Migration finished")
main()