mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-03 07:18:03 +01:00
fix: Step 11 review fixes (a fork branch, a colliding tag or another remote never replaces the base)
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
1 parent
87b7c922e0
commit
2a1f123d9e
4 files changed
+80
-20
No files matched your search
+14
-7
@@ -34,15 +34,22 @@ _default_base() {
|
||||
echo "main"
|
||||
}
|
||||
BASE="${1:-$(_default_base)}"
|
||||
# A bare branch name reads its remote-tracking twin when there is one: /ship
|
||||
# merges against origin/<base>, and a linked worktree or a Capy clone never
|
||||
# moves the local branch, so a stale one widens the scope (#3650).
|
||||
_NOT_BRANCH='^[0-9a-f]{7,64}$|[~^]|@\{|^[A-Z_]*HEAD$|^refs/'
|
||||
if [[ ! "$BASE" =~ $_NOT_BRANCH ]] && git rev-parse --verify -q "refs/remotes/origin/${BASE}^{commit}" >/dev/null 2>&1; then
|
||||
BASE="origin/${BASE}"
|
||||
fi
|
||||
HEAD_REF=""
|
||||
if [ "${2:-}" = "--head" ]; then HEAD_REF="${3:-}"; fi
|
||||
# A bare branch name reads origin's tracking branch, by its full ref, when that
|
||||
# shares history with HEAD: /ship merges against origin/<base>, and a linked
|
||||
# worktree or a Capy clone never moves the local branch, so a stale one widens
|
||||
# the scope (#3650). A remote-qualified name is taken as given.
|
||||
_NOT_BRANCH='^[0-9a-f]{7,64}$|[~^]|@\{|^[A-Z_]*HEAD$|^refs/'
|
||||
_QUALIFIED=false
|
||||
for _remote in $(git remote 2>/dev/null); do
|
||||
case "$BASE" in "$_remote"/*) _QUALIFIED=true ;; esac
|
||||
done
|
||||
if [[ ! "$BASE" =~ $_NOT_BRANCH ]] && [ "$_QUALIFIED" = false ] \
|
||||
&& git rev-parse --verify -q "refs/remotes/origin/${BASE}^{commit}" >/dev/null 2>&1 \
|
||||
&& git merge-base "refs/remotes/origin/${BASE}" "${HEAD_REF:-HEAD}" >/dev/null 2>&1; then
|
||||
BASE="refs/remotes/origin/${BASE}"
|
||||
fi
|
||||
|
||||
FRONTEND=false
|
||||
BACKEND=false
|
||||
|
||||
Reference in new issue
Block a user