File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed
Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change 1+ name : mergebase
2+
3+ on :
4+ push :
5+
6+ jobs :
7+ get_merge_base :
8+ runs-on : ubuntu-latest
9+ env :
10+ UPSTREAM_REMOTE : torvalds
11+ UPSTREAM_URL : https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
12+ UPSTREAM_BRANCH : master
13+ FETCH_STEP : 100
14+ FETCH_MAX : 2000
15+
16+ steps :
17+ - name : Add upstream remote (torvalds)
18+ run : |
19+ git remote add $UPSTREAM_REMOTE $UPSTREAM_URL 2>/dev/null || true
20+
21+ - name : Find upstream merge-base (torvalds/master)
22+ run : |
23+ set -e
24+
25+ DEPTH=$FETCH_STEP
26+
27+ # get Upstream initial flat
28+ git fetch $UPSTREAM_REMOTE $UPSTREAM_BRANCH --depth=$DEPTH
29+
30+ while true; do
31+ BASE=$(git merge-base HEAD FETCH_HEAD || true)
32+
33+ if [ -n "$BASE" ]; then
34+ echo "Found merge-base: $BASE"
35+ echo "BASE=$BASE" >> $GITHUB_ENV
36+ break
37+ fi
38+
39+ if [ $DEPTH -ge $FETCH_MAX ]; then
40+ echo "Fallback to full fetch..."
41+ git fetch $UPSTREAM_REMOTE $UPSTREAM_BRANCH --unshallow
42+ BASE=$(git merge-base HEAD FETCH_HEAD)
43+ echo "BASE=$BASE" >> $GITHUB_ENV
44+ break
45+ fi
46+
47+ echo "No base yet, deepening by $FETCH_STEP..."
48+ git fetch $UPSTREAM_REMOTE $UPSTREAM_BRANCH --deepen=$FETCH_STEP
49+ DEPTH=$((DEPTH + FETCH_STEP))
50+ done
You can’t perform that action at this time.
0 commit comments