forked from importers/git-importer
Adding a gitea remote when creating the git repo
This commit is contained in:
parent
5e495dbd95
commit
9e895e34b6
28
lib/git.py
28
lib/git.py
@ -1,9 +1,11 @@
|
|||||||
import fnmatch
|
import fnmatch
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import pathlib
|
import pathlib
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
import pygit2
|
import pygit2
|
||||||
|
import requests
|
||||||
|
|
||||||
from lib.binary import BINARY
|
from lib.binary import BINARY
|
||||||
|
|
||||||
@ -30,10 +32,12 @@ class Git:
|
|||||||
def create(self):
|
def create(self):
|
||||||
"""Create a local git repository"""
|
"""Create a local git repository"""
|
||||||
self.path.mkdir(parents=True, exist_ok=True)
|
self.path.mkdir(parents=True, exist_ok=True)
|
||||||
|
self.open()
|
||||||
|
|
||||||
|
def open(self):
|
||||||
# Convert the path to string, to avoid some limitations in
|
# Convert the path to string, to avoid some limitations in
|
||||||
# older pygit2
|
# older pygit2
|
||||||
self.repo = pygit2.init_repository(str(self.path))
|
self.repo = pygit2.init_repository(str(self.path))
|
||||||
return self
|
|
||||||
|
|
||||||
def is_dirty(self):
|
def is_dirty(self):
|
||||||
"""Check if there is something to commit"""
|
"""Check if there is something to commit"""
|
||||||
@ -188,3 +192,25 @@ class Git:
|
|||||||
if file.name in patterns:
|
if file.name in patterns:
|
||||||
patterns.remove(file.name)
|
patterns.remove(file.name)
|
||||||
self.add_specific_lfs_gitattributes(patterns)
|
self.add_specific_lfs_gitattributes(patterns)
|
||||||
|
|
||||||
|
def add_gitea_remote(self, package):
|
||||||
|
repo_name = package.replace("+", "_")
|
||||||
|
org_name = "rpm"
|
||||||
|
|
||||||
|
if not os.getenv("GITEA_TOKEN"):
|
||||||
|
logging.warning("Not adding a remote due to missing $GITEA_TOKEN")
|
||||||
|
return
|
||||||
|
|
||||||
|
url = f"https://gitea.opensuse.org/api/v1/org/{org_name}/repos"
|
||||||
|
response = requests.post(
|
||||||
|
url,
|
||||||
|
data={"name": repo_name},
|
||||||
|
headers={"Authorization": f"token {os.getenv('GITEA_TOKEN')}"},
|
||||||
|
timeout=10,
|
||||||
|
)
|
||||||
|
# 409 Conflict (Already existing)
|
||||||
|
# 201 Created
|
||||||
|
if response.status_code not in (201, 409):
|
||||||
|
print(response.data)
|
||||||
|
url = f"gitea@gitea.opensuse.org:{org_name}/{repo_name}.git"
|
||||||
|
self.repo.remotes.create("origin", url)
|
||||||
|
@ -22,7 +22,12 @@ class GitExporter:
|
|||||||
repodir / package,
|
repodir / package,
|
||||||
committer="Git OBS Bridge",
|
committer="Git OBS Bridge",
|
||||||
committer_email="obsbridge@suse.de",
|
committer_email="obsbridge@suse.de",
|
||||||
).create()
|
)
|
||||||
|
if self.git.exists():
|
||||||
|
self.git.open()
|
||||||
|
else:
|
||||||
|
self.git.create()
|
||||||
|
self.git.add_gitea_remote(package)
|
||||||
self.state_file = os.path.join(self.git.path, ".git", "_flat_state.yaml")
|
self.state_file = os.path.join(self.git.path, ".git", "_flat_state.yaml")
|
||||||
self.gc_interval = 200
|
self.gc_interval = 200
|
||||||
self.cachedir = cachedir
|
self.cachedir = cachedir
|
||||||
|
Loading…
Reference in New Issue
Block a user