Skip to content

Commit 44af44e

Browse files
committed
Fix 'git-obs staging' commands to be case insensitive as Gitea
1 parent 7ae7731 commit 44af44e

File tree

3 files changed

+22
-22
lines changed

3 files changed

+22
-22
lines changed

osc/commands_git/staging_group.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,14 @@ def run(self, args):
9696
pr_map = {}
9797
for owner, repo, number in args.pr_list:
9898
pr = gitea_api.StagingPullRequestWrapper(self.gitea_conn, owner, repo, number, topdir=temp_dir, cache_directory=cache_dir)
99-
pr_map[(owner, repo, number)] = pr
99+
pr_map[(owner.lower(), repo.lower(), number)] = pr
100100

101101
# run checks
102102
target_owner = None
103103
target_repo = None
104104
target_branch = None
105105
for owner, repo, number in args.pr_list:
106-
pr = pr_map[(owner, repo, number)]
106+
pr = pr_map[(owner.lower(), repo.lower(), number)]
107107

108108
if pr.pr_obj.state != "open":
109109
# we don't care about the state of the package pull requests - they can be merged already
@@ -133,12 +133,12 @@ def run(self, args):
133133

134134
# clone the git repos, cache submodule data
135135
for owner, repo, number in args.pr_list:
136-
pr = pr_map[(owner, repo, number)]
136+
pr = pr_map[(owner.lower(), repo.lower(), number)]
137137
pr.clone()
138138

139139
# run checks #2
140140
for owner, repo, number in args.pr_list:
141-
pr = pr_map[(owner, repo, number)]
141+
pr = pr_map[(owner.lower(), repo.lower(), number)]
142142
if not pr.package_pr_map:
143143
# TODO: we don't know if the submodules are packages or not, we should cross-reference those with _manifest
144144
raise gitea_api.GitObsRuntimeError(f"Pull request {owner}/{repo}#{number} doesn't have any submodules changed.")
@@ -175,10 +175,10 @@ def run(self, args):
175175
desc = ""
176176
updated_packages = []
177177
for owner, repo, number in args.pr_list:
178-
pr = pr_map[(owner, repo, number)]
178+
pr = pr_map[(owner.lower(), repo.lower(), number)]
179179
for (pkg_owner, pkg_repo, pkg_number), pr_obj in pr.package_pr_map.items():
180180
desc += f"PR: {pkg_owner}/{pkg_repo}!{pkg_number}\n"
181-
updated_packages.append(os.path.basename(pr.submodules_by_owner_repo[pkg_owner, pkg_repo]["path"]))
181+
updated_packages.append(os.path.basename(pr.submodules_by_owner_repo[pkg_owner.lower(), pkg_repo.lower()]["path"]))
182182

183183
# TODO: it would be nice to mention the target OBS project
184184
# we keep only the first ``max_packages``, because the title might get too long quite easily
@@ -206,12 +206,12 @@ def run(self, args):
206206
target = gitea_api.StagingPullRequestWrapper(self.gitea_conn, target_owner, target_repo, target_number, topdir=temp_dir, cache_directory=cache_dir)
207207
target.clone()
208208
for owner, repo, number in args.pr_list:
209-
pr = pr_map[(owner, repo, number)]
209+
pr = pr_map[(owner.lower(), repo.lower(), number)]
210210
pr.clone()
211211

212212
# locally merge package pull requests to the target project pull request (don't change anything on server yet)
213213
for owner, repo, number in args.pr_list:
214-
pr = pr_map[(owner, repo, number)]
214+
pr = pr_map[(owner.lower(), repo.lower(), number)]
215215
target.merge(pr)
216216

217217
# push to git repo associated with the target pull request
@@ -223,7 +223,7 @@ def run(self, args):
223223
target.pr_obj.set(self.gitea_conn, target_owner, target_repo, target_number, description=target.pr_obj.body)
224224

225225
for owner, repo, number in args.pr_list:
226-
pr = pr_map[(owner, repo, number)]
226+
pr = pr_map[(owner.lower(), repo.lower(), number)]
227227
if args.remove_pr_references:
228228
try:
229229
# apply the removed 'PR:' reference to the package pull request

osc/commands_git/staging_remove.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ def run(self, args):
4343
pr_map = {} # {(owner, repo, number):.
4444
for owner, repo, number in args.pr_list:
4545
pr = gitea_api.StagingPullRequestWrapper(self.gitea_conn, owner, repo, number, topdir=temp_dir)
46-
pr_map[(owner, repo, number)] = pr
46+
pr_map[(owner.lower(), repo.lower(), number)] = pr
4747

4848
# clone the git repos, cache submodule data
4949
target.clone()
5050
target.clone_base()
5151

5252
# locally remove package pull requests from the target project pull request (don't change anything on server yet)
5353
for owner, repo, number in args.pr_list:
54-
pr = pr_map[(owner, repo, number)]
54+
pr = pr_map[(owner.lower(), repo.lower(), number)]
5555
target.remove(pr)
5656

5757
# push to git repo associated with the target pull request
@@ -60,7 +60,7 @@ def run(self, args):
6060
target.pr_obj.set(self.gitea_conn, target_owner, target_repo, target_number, description=target.pr_obj.body)
6161

6262
for owner, repo, number in args.pr_list:
63-
pr = pr_map[(owner, repo, number)]
63+
pr = pr_map[(owner.lower(), repo.lower(), number)]
6464
# close the removed package pull request
6565
try:
6666
gitea_api.PullRequest.close(self.gitea_conn, owner, repo, number)

osc/gitea_api/staging.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ def __init__(self, conn, owner: str, repo: str, number: int, *, topdir: str, cac
1818

1919
self.pr_obj = PullRequest.get(conn, owner, repo, number)
2020
self.git = None
21-
self.submodules_by_owner_repo = {}
22-
self.package_pr_map = {}
21+
self.submodules_by_owner_repo = {} # (owner, repo) -> submodule metadata; owner, repo must be lower case (Gitea is case insensitive)
22+
self.package_pr_map = {} # (owner, repo, number) -> StagingPullRequestWrapper; owner, repo must be lower case (Gitea is case insensitive)
2323

2424
self.base_git = None
2525
self.base_submodules_by_owner_repo = {}
@@ -44,13 +44,13 @@ def clone(self):
4444
self.git.fetch()
4545

4646
submodules = self.git.get_submodules()
47-
self.submodules_by_owner_repo = dict([((i["owner"], i["repo"]), i) for i in submodules.values()])
47+
self.submodules_by_owner_repo = dict([((i["owner"].lower(), i["repo"].lower()), i) for i in submodules.values()])
4848

4949
for pkg_owner, pkg_repo, pkg_number in self.pr_obj.parse_pr_references():
5050
pkg_pr_obj = self.__class__(self.conn, pkg_owner, pkg_repo, pkg_number, topdir=self._topdir)
51-
self.package_pr_map[(pkg_owner, pkg_repo, pkg_number)] = pkg_pr_obj
51+
self.package_pr_map[(pkg_owner.lower(), pkg_repo.lower(), pkg_number)] = pkg_pr_obj
5252
# FIXME: doesn't work when the commits are padded with zeros
53-
# assert self.submodules_by_owner_repo[(pkg_owner, pkg_repo)]["commit"] == pkg_pr_obj.pr_obj.head_commit
53+
# assert self.submodules_by_owner_repo[(pkg_owner.lower(), pkg_repo.lower())]["commit"] == pkg_pr_obj.pr_obj.head_commit
5454

5555
def clone_base(self):
5656
from . import Git
@@ -72,7 +72,7 @@ def clone_base(self):
7272
self.base_git.fetch()
7373

7474
submodules = self.base_git.get_submodules()
75-
self.base_submodules_by_owner_repo = dict([((i["owner"], i["repo"]), i) for i in submodules.values()])
75+
self.base_submodules_by_owner_repo = dict([((i["owner"].lower(), i["repo"].lower()), i) for i in submodules.values()])
7676

7777
def merge(self, other):
7878
"""
@@ -88,8 +88,8 @@ def merge(self, other):
8888
submodule_paths = []
8989

9090
for pkg_owner, pkg_repo, pkg_number in other.package_pr_map:
91-
other_submodule = other.submodules_by_owner_repo[(pkg_owner, pkg_repo)]
92-
self_submodule = self.submodules_by_owner_repo.get((pkg_owner, pkg_repo), None)
91+
other_submodule = other.submodules_by_owner_repo[(pkg_owner.lower(), pkg_repo.lower())]
92+
self_submodule = self.submodules_by_owner_repo.get((pkg_owner.lower(), pkg_repo.lower()), None)
9393

9494
if self_submodule:
9595
# use an existing path if the submodule already exists
@@ -127,8 +127,8 @@ def remove(self, package_pr):
127127

128128
self.pr_obj._data["body"] = PullRequest.remove_pr_references(self.pr_obj.body, [(package_pr.owner, package_pr.repo, package_pr.number)])
129129

130-
submodule = self.submodules_by_owner_repo.get((package_pr.owner, package_pr.repo), None)
131-
base_submodule = self.base_submodules_by_owner_repo.get((package_pr.owner, package_pr.repo), None)
130+
submodule = self.submodules_by_owner_repo.get((package_pr.owner.lower(), package_pr.repo.lower()), None)
131+
base_submodule = self.base_submodules_by_owner_repo.get((package_pr.owner.lower(), package_pr.repo.lower()), None)
132132

133133
if not submodule:
134134
raise GitObsRuntimeError(f"Unable to find a submodule for pull request {package_pr.owner}/{package_pr.repo}!{package_pr.number}")

0 commit comments

Comments
 (0)