@@ -17,91 +17,85 @@ jobs:
1717 with :
1818 fetch-depth : 0 # Get full history for commit count
1919 token : ${{ secrets.PAT_SERVICE_ACCOUNT }}
20+ ref : master
2021
2122 - name : Configure Git
2223 run : |
2324 git config --global user.name 'github-actions[bot]'
2425 git config --global user.email 'github-actions[bot]@users.noreply.github.com'
25-
26- - name : Add upstream remote
26+
27+ - name : Add upstream remote and fetch master
2728 env :
2829 GITHUB_TOKEN : ${{ secrets.PAT_SERVICE_ACCOUNT }}
2930 run : |
3031 git remote add upstream https://github.com/ggml-org/llama.cpp.git
31- git fetch upstream master
32- echo "Upstream fetch completed successfully"
32+ git fetch upstream master:refs/remotes/upstream/master --no-tags
3333
34- - name : Fetch tags
34+ - name : Determine target commit
35+ id : target
3536 run : |
36- git fetch upstream --tags
37- echo "Tags fetch completed successfully"
37+ RELEASE_INFO=$(curl -s https://api.github.com/repos/ggml-org/llama.cpp/releases/latest)
38+ LATEST_TAG=$(echo "$RELEASE_INFO" | jq -r '.tag_name')
39+ LATEST_COMMIT=$(echo "$RELEASE_INFO" | jq -r '.target_commitish')
3840
39- - name : Debug branch info
40- run : |
41- echo "Local branches:"
42- git branch -a
43- echo "Remote branches:"
44- git ls-remote --heads origin
41+ if [ -n "$LATEST_TAG" ] && [ "$LATEST_TAG" != "null" ]; then
42+ echo "Latest release tag: $LATEST_TAG (will use upstream/master)"
43+ echo "target=upstream/master" >> $GITHUB_OUTPUT
44+ else
45+ echo "Using upstream/master as target"
46+ echo "target=upstream/master" >> $GITHUB_OUTPUT
47+ fi
4548
4649 - name : Sync master with latest release
4750 env :
4851 GITHUB_TOKEN : ${{ secrets.PAT_SERVICE_ACCOUNT }}
4952 run : |
50- git checkout -B master
51- echo "Checked out master branch"
52- git reset --hard upstream/master
53- echo "Reset master to upstream/master"
54- git push origin master --force
55- echo "Pushed master to origin"
56-
57- - name : Debug before dev checkout
58- run : |
59- echo "Current branch:"
60- git branch --show-current
53+ CURRENT_COMMIT=$(git rev-parse HEAD)
54+ TARGET="${{ steps.target.outputs.target }}"
55+
56+ echo "Resetting master to $TARGET"
57+ git reset --hard $TARGET
6158
59+ NEW_COMMIT=$(git rev-parse HEAD)
60+
61+ if [ "$CURRENT_COMMIT" = "$NEW_COMMIT" ]; then
62+ echo "No new changes found, master is already up to date"
63+ else
64+ echo "Pushing updates to master"
65+ git push origin HEAD:master --force
66+ echo "MASTER_COMMIT=$(git rev-parse HEAD)" >> $GITHUB_ENV
67+ fi
68+
6269 - name : Rebase dev onto master
6370 env :
6471 GITHUB_TOKEN : ${{ secrets.PAT_SERVICE_ACCOUNT }}
6572 run : |
66- # First check if dev branch exists locally
67- if git show-ref --verify --quiet refs/heads/dev; then
68- echo "Local dev branch exists, checking out"
69- git checkout dev
70- elif git show-ref --verify --quiet refs/remotes/origin/dev; then
71- echo "Remote dev branch exists, creating local tracking branch"
72- git checkout -b dev origin/dev
73- else
74- echo "No dev branch exists, creating from master"
75- git checkout -b dev
76- fi
77-
78- echo "On branch $(git branch --show-current)"
73+ git fetch origin dev:refs/remotes/origin/dev --no-tags
74+ git checkout -b temp-dev origin/dev
7975
76+ echo "Attempting to rebase dev onto master..."
8077 if ! git rebase master; then
81- echo "Rebase conflict detected, aborting"
78+ echo "⚠️ Rebase conflict detected, aborting"
8279 git rebase --abort
8380 exit 1
8481 fi
8582
86- echo "Rebase successful, pushing to origin "
87- git push origin dev --force-with-lease || git push origin dev --force
83+ echo "Rebase successful, force pushing to dev... "
84+ git push origin HEAD: dev --force
8885
8986 - name : Create version tag
9087 env :
9188 GITHUB_TOKEN : ${{ secrets.PAT_SERVICE_ACCOUNT }}
9289 run : |
9390 git checkout master
9491 COMMIT_COUNT=$(git rev-list --count HEAD)
95- echo "Commit count: $COMMIT_COUNT"
96- git checkout dev
92+ NEW_TAG="b${COMMIT_COUNT}"
9793
98- # Check if tag already exists
99- if git rev-parse "b${COMMIT_COUNT}" >/dev/null 2>&1; then
100- echo "Tag b${COMMIT_COUNT} already exists, force updating"
101- git tag -f "b${COMMIT_COUNT}"
94+ if git ls-remote --tags origin | grep -q "refs/tags/${NEW_TAG}$"; then
95+ echo "Tag $NEW_TAG already exists on remote, skipping tag creation"
10296 else
103- echo "Creating new tag b${COMMIT_COUNT}"
104- git tag "b${COMMIT_COUNT}"
97+ echo "Creating new tag: $NEW_TAG"
98+ git tag "$NEW_TAG"
99+ git push origin "$NEW_TAG"
100+ echo "Successfully created and pushed tag $NEW_TAG"
105101 fi
106-
107- git push origin "b${COMMIT_COUNT}" --force
0 commit comments