File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed
Expand file tree Collapse file tree 1 file changed +53
-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 : Checkout
18+ uses : actions/checkout@v4
19+
20+ - name : Add upstream remote (torvalds)
21+ run : |
22+ git remote add $UPSTREAM_REMOTE $UPSTREAM_URL 2>/dev/null || true
23+
24+ - name : Find upstream merge-base (torvalds/master)
25+ run : |
26+ set -e
27+
28+ DEPTH=$FETCH_STEP
29+
30+ # get Upstream initial flat
31+ git fetch $UPSTREAM_REMOTE $UPSTREAM_BRANCH --depth=$DEPTH
32+
33+ while true; do
34+ BASE=$(git merge-base HEAD FETCH_HEAD || true)
35+
36+ if [ -n "$BASE" ]; then
37+ echo "Found merge-base: $BASE"
38+ echo "BASE=$BASE" >> $GITHUB_ENV
39+ break
40+ fi
41+
42+ if [ $DEPTH -ge $FETCH_MAX ]; then
43+ echo "Fallback to full fetch..."
44+ git fetch $UPSTREAM_REMOTE $UPSTREAM_BRANCH --unshallow
45+ BASE=$(git merge-base HEAD FETCH_HEAD)
46+ echo "BASE=$BASE" >> $GITHUB_ENV
47+ break
48+ fi
49+
50+ echo "No base yet, deepening by $FETCH_STEP..."
51+ git fetch $UPSTREAM_REMOTE $UPSTREAM_BRANCH --deepen=$FETCH_STEP
52+ DEPTH=$((DEPTH + FETCH_STEP))
53+ done
You can’t perform that action at this time.
0 commit comments