Seems to be working now
This commit is contained in:
		@@ -392,98 +392,64 @@ class Migrator:
 | 
			
		||||
				f"Migrating: {source_repo.name} ==> {this_destination_repo_name}"
 | 
			
		||||
			)
 | 
			
		||||
			
 | 
			
		||||
			# source_repo_topics = api_source_repos.repo_list_topics(
 | 
			
		||||
			# 	owner=source_repo.owner.login, repo=source_repo.name
 | 
			
		||||
			# )
 | 
			
		||||
			# source_repo_topics = source_repo_topics.topics
 | 
			
		||||
			topics = source_repo.get_topics()
 | 
			
		||||
			
 | 
			
		||||
			# migrate_body = giteapy.MigrateRepoForm(
 | 
			
		||||
			# 	mirror=False,
 | 
			
		||||
			# 	clone_addr=source_repo.clone_url,
 | 
			
		||||
			# 	uid=destination_org.id,
 | 
			
		||||
			# 	private=source_repo.private,
 | 
			
		||||
			# 	repo_name=this_destination_repo_name,
 | 
			
		||||
			# 	description=source_repo.description,
 | 
			
		||||
			# 	labels=True, issues=True, pull_requests=True, releases=True, milestones=True, wiki=True
 | 
			
		||||
			# )
 | 
			
		||||
			# TODO: These three lines represent feature request to giteapy authors
 | 
			
		||||
			#migrate_body.auth_token = self.__source_token
 | 
			
		||||
			#migrate_body.swagger_types["auth_token"] = "str"
 | 
			
		||||
			#migrate_body.attribute_map["auth_token"] = "auth_token"
 | 
			
		||||
			
 | 
			
		||||
			destination_repo = gitea.Repository.migrate_repo(
 | 
			
		||||
				gitea=self.__destination_api,
 | 
			
		||||
				service: str,
 | 
			
		||||
				clone_addr: str,
 | 
			
		||||
				repo_name: str,
 | 
			
		||||
				description: str = "",
 | 
			
		||||
				private: bool = False,
 | 
			
		||||
				auth_token: str = None,
 | 
			
		||||
				auth_username: str = None,
 | 
			
		||||
				auth_password: str = None,
 | 
			
		||||
				mirror: bool = False,
 | 
			
		||||
				mirror_interval: str = None,
 | 
			
		||||
				lfs: bool = False,
 | 
			
		||||
				lfs_endpoint: str = "",
 | 
			
		||||
				wiki: bool = False,
 | 
			
		||||
				labels: bool = False,
 | 
			
		||||
				issues: bool = False,
 | 
			
		||||
				pull_requests: bool = False,
 | 
			
		||||
				releases: bool = False,
 | 
			
		||||
				milestones: bool = False,
 | 
			
		||||
				repo_owner: str = None,
 | 
			
		||||
			)
 | 
			
		||||
			
 | 
			
		||||
			self.__logger.debug("Migrate body:")
 | 
			
		||||
			self.__logger.debug(migrate_body)
 | 
			
		||||
			source_repo_topics = source_repo.get_topics()
 | 
			
		||||
			
 | 
			
		||||
			try:
 | 
			
		||||
				destination_api = self._get_repo_api(
 | 
			
		||||
					hostname=self.__destination_host,
 | 
			
		||||
					port=self.__destination_port,
 | 
			
		||||
					token=self.__destination_token,
 | 
			
		||||
				
 | 
			
		||||
				repo_new = gitea.Repository.migrate_repo(
 | 
			
		||||
					gitea=self.__destination_api,
 | 
			
		||||
					service="gitea",  # type of remote service
 | 
			
		||||
					clone_addr=source_repo.clone_url,
 | 
			
		||||
					repo_name=this_destination_repo_name,
 | 
			
		||||
					description=source_repo.description,
 | 
			
		||||
					private=source_repo.private,
 | 
			
		||||
					auth_token=self.__source_token,
 | 
			
		||||
					auth_username=None,
 | 
			
		||||
					auth_password=None,
 | 
			
		||||
					mirror=False,
 | 
			
		||||
					mirror_interval=None,
 | 
			
		||||
					# lfs=False,
 | 
			
		||||
					# lfs_endpoint="",
 | 
			
		||||
					wiki=True,
 | 
			
		||||
					labels=True,
 | 
			
		||||
					issues=True,
 | 
			
		||||
					pull_requests=True,
 | 
			
		||||
					releases=True,
 | 
			
		||||
					milestones=True,
 | 
			
		||||
					repo_owner=destination_org_name,
 | 
			
		||||
				)
 | 
			
		||||
			except giteapy.rest.ApiException as e:
 | 
			
		||||
				self.__logger.error(f"Failed to generate destination API: {e}")
 | 
			
		||||
				source_repos_failed.append(
 | 
			
		||||
					(source_repo, e)
 | 
			
		||||
				)
 | 
			
		||||
				continue
 | 
			
		||||
			
 | 
			
		||||
			try:
 | 
			
		||||
				repo_new = destination_api.repo_migrate(body=migrate_body)
 | 
			
		||||
			except giteapy.rest.ApiException as e:
 | 
			
		||||
				self.__logger.error(f"Failed to execute repo migration request via API: {e}")
 | 
			
		||||
			except Exception as e:
 | 
			
		||||
				self.__logger.error(
 | 
			
		||||
					f"Failed to execute repo migration request:"
 | 
			
		||||
					f"\n{e}"
 | 
			
		||||
				)
 | 
			
		||||
				source_repos_failed.append(
 | 
			
		||||
					(source_repo, e)
 | 
			
		||||
				)
 | 
			
		||||
				continue
 | 
			
		||||
			
 | 
			
		||||
			self.__logger.debug(f"Migration result: {repo_new}")
 | 
			
		||||
			repo_new: giteapy.Repository
 | 
			
		||||
			repo_new: gitea.Repository
 | 
			
		||||
			
 | 
			
		||||
			assert repo_new.name == this_destination_repo_name,\
 | 
			
		||||
			assert repo_new.name == this_destination_repo_name, \
 | 
			
		||||
				"New repository didn't end up with the correct name. Failure?"
 | 
			
		||||
			
 | 
			
		||||
			# Copy source topics?
 | 
			
		||||
			if do_destination_copy_topics:
 | 
			
		||||
				
 | 
			
		||||
				for topic in source_repo_topics:
 | 
			
		||||
					
 | 
			
		||||
					self.__logger.debug(f"Appending source topic to new repo: {topic}")
 | 
			
		||||
					destination_api.repo_add_topc(
 | 
			
		||||
						owner=destination_org.username,
 | 
			
		||||
						repo=repo_new.name,
 | 
			
		||||
						topic=topic,
 | 
			
		||||
					)
 | 
			
		||||
				
 | 
			
		||||
					repo_new.add_topic(topic=topic)
 | 
			
		||||
			
 | 
			
		||||
			# Add specified topics
 | 
			
		||||
			for topic in destination_topics:
 | 
			
		||||
				
 | 
			
		||||
				self.__logger.debug(f"Appending topic to new repo: {topic}")
 | 
			
		||||
				destination_api.repo_add_topc(
 | 
			
		||||
					owner=destination_org.username,
 | 
			
		||||
					repo=repo_new.name,
 | 
			
		||||
					topic=topic,
 | 
			
		||||
				)
 | 
			
		||||
				
 | 
			
		||||
				repo_new.add_topic(topic=topic)
 | 
			
		||||
			
 | 
			
		||||
			source_repos_successful.append(source_repo)
 | 
			
		||||
		
 | 
			
		||||
@@ -495,20 +461,19 @@ class Migrator:
 | 
			
		||||
			self.__logger.warning(f"Cannot delete any migrated repos because none were successful!")
 | 
			
		||||
			return
 | 
			
		||||
		
 | 
			
		||||
		repo_api = self._get_repo_api(
 | 
			
		||||
			hostname=self.__source_host,
 | 
			
		||||
			port=self.__source_port,
 | 
			
		||||
			token=self.__source_token
 | 
			
		||||
		)
 | 
			
		||||
		repo_api: giteapy.RepositoryApi
 | 
			
		||||
		
 | 
			
		||||
		self.__logger.info("")
 | 
			
		||||
		self.__logger.info(f"Can now delete {len(repos)} successfully migrated repos:")
 | 
			
		||||
		self.__logger.info(f"Can now delete repos from source org: {source_org_name}")
 | 
			
		||||
		self.__logger.info(f"Will delete {len(repos)} successfully migrated repos:")
 | 
			
		||||
		for r in repos:
 | 
			
		||||
			
 | 
			
		||||
			r: gitea.Repository
 | 
			
		||||
			
 | 
			
		||||
			self.__logger.info(f"> #{r.id} \"{r.full_name}\" ==> {r.clone_url}")
 | 
			
		||||
		
 | 
			
		||||
		response = input("Would you like to delete the successfully migrated repos? Type DELETE ==> ")
 | 
			
		||||
		
 | 
			
		||||
		# Ask the user to confirm deletion
 | 
			
		||||
		response = input(
 | 
			
		||||
			"Would you like to delete the successfully migrated repos? Type DELETE ==> "
 | 
			
		||||
		)
 | 
			
		||||
		if response != "DELETE":
 | 
			
		||||
			self.__logger.info("Okay, won't delete migrated repos.")
 | 
			
		||||
			return
 | 
			
		||||
@@ -517,7 +482,9 @@ class Migrator:
 | 
			
		||||
		do_delete_all = False
 | 
			
		||||
		for repo in repos:
 | 
			
		||||
			
 | 
			
		||||
			self.__logger.info(f"Next repo to delete: #{repo.id} \"{repo.full_name}\"")
 | 
			
		||||
			repo: gitea.Repository
 | 
			
		||||
			
 | 
			
		||||
			self.__logger.info(f"Next repo to delete: \"{repo.full_name}\"")
 | 
			
		||||
			do_delete = True if do_delete_all else False
 | 
			
		||||
			
 | 
			
		||||
			if do_delete is False:
 | 
			
		||||
@@ -551,7 +518,4 @@ class Migrator:
 | 
			
		||||
				
 | 
			
		||||
				self.__logger.info(f"Deleting repo: {repo.full_name}")
 | 
			
		||||
				
 | 
			
		||||
				repo_api.repo_delete(
 | 
			
		||||
					owner=source_org_name,
 | 
			
		||||
					repo=repo.name
 | 
			
		||||
				)
 | 
			
		||||
				repo.delete()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user