mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-13 05:23:51 -06:00
fix: fetch the project main an upstream lacks
A remote named upstream added as CONTRIBUTING said and never fetched made validate_pr --changed compare with the fork's main and exit 0 on nothing. It now fetches the project's main when the remote does not hold it. profile_sync names the fetch when --base is absent, and CONTRIBUTING adds git fetch upstream.
This commit is contained in:
1 parent
9e04bf887d
commit
a06f5ad2ba
6 files changed
+71
-12
No files matched your search
@@ -986,8 +986,9 @@ vermin --no-tips -t=3.8- --violations install.py # install.py stays on P
|
||||
```
|
||||
|
||||
`upstream` is this repository as a remote of your fork
|
||||
(`git remote add upstream https://github.com/Abdess/retrobios`). A profile you
|
||||
only edit is not held to `--strict`: its older refs are reviewed by hand.
|
||||
(`git remote add upstream https://github.com/Abdess/retrobios`, then
|
||||
`git fetch upstream`). A profile you only edit is not held to `--strict`: its
|
||||
older refs are reviewed by hand.
|
||||
|
||||
The full pipeline is not needed for a contribution: it rebuilds every pack
|
||||
in `dist/`, which is why maintainers run it before a release.
|
||||
|
||||
@@ -4355,6 +4355,10 @@ def branch_profiles(emulators_dir: str, base: str, added_only: bool) -> list[str
|
||||
branch point are not counted, and ends at the working tree, so a
|
||||
profile not yet committed is checked too. A rename reads as an addition.
|
||||
"""
|
||||
if subprocess.run(["git", "rev-parse", "--verify", "--quiet", base],
|
||||
capture_output=True, check=False).returncode:
|
||||
remote = base.split("/", 1)[0] if "/" in base else "upstream"
|
||||
raise SystemExit(f"ERROR: {base} is not in this clone: run git fetch {remote} first")
|
||||
merge_base = _git_lines(["merge-base", base, "HEAD"])[0]
|
||||
paths = _git_lines([
|
||||
"diff", "--name-only", "--no-renames",
|
||||
|
||||
+13
-8
@@ -558,30 +558,35 @@ def _repo_key(url: str) -> str:
|
||||
|
||||
|
||||
def _project_main_line() -> str | None:
|
||||
"""The project's main line, fetched when no remote of this clone names it.
|
||||
"""The project's main line, fetched when this clone does not hold it.
|
||||
|
||||
A fork's clone has origin alone. Once the commit is pushed to the fork's
|
||||
main, origin/main is HEAD and the diff against it was empty, so --changed
|
||||
found nothing and exited 0. None leaves the upstream/ and origin/ lines
|
||||
in charge: a remote of that name names the project, or the clone has no
|
||||
remote at all and only its uncommitted files can be read.
|
||||
found nothing and exited 0. A remote added as CONTRIBUTING says and never
|
||||
fetched did the same: upstream/main did not exist and origin/main won.
|
||||
None leaves the upstream/ and origin/ lines in charge when the clone has
|
||||
no remote at all and only its uncommitted files can be read.
|
||||
"""
|
||||
remotes = _git_lines("remote") or []
|
||||
if not remotes:
|
||||
return None
|
||||
project = {_repo_key(url) for url in PROJECT_URLS}
|
||||
source = PROJECT_URLS[0]
|
||||
for remote in remotes:
|
||||
urls = _git_lines("remote", "get-url", "--all", remote) or []
|
||||
if any(_repo_key(url) in project for url in urls):
|
||||
return None if remote in ("upstream", "origin") else f"{remote}/main"
|
||||
if _git_lines("rev-parse", "--verify", "--quiet", f"{remote}/main"):
|
||||
return f"{remote}/main"
|
||||
source = remote
|
||||
break
|
||||
fetched = subprocess.run(
|
||||
["git", "fetch", "--quiet", "--no-tags", PROJECT_URLS[0], "main"],
|
||||
["git", "fetch", "--quiet", "--no-tags", source, "main"],
|
||||
capture_output=True, text=True, check=False,
|
||||
)
|
||||
if fetched.returncode != 0:
|
||||
raise RuntimeError(
|
||||
f"no remote of this clone is {PROJECT_URLS[0]}, and fetching its "
|
||||
f"main failed: {fetched.stderr.strip()}"
|
||||
f"this clone does not hold the main of {PROJECT_URLS[0]}, and "
|
||||
f"fetching it from {source} failed: {fetched.stderr.strip()}"
|
||||
)
|
||||
return "FETCH_HEAD"
|
||||
|
||||
|
||||
Reference in new issue
Block a user