diff --git a/.forgejo/workflows/main.yml b/.forgejo/workflows/main.yml index 19f5a27..46df0e8 100644 --- a/.forgejo/workflows/main.yml +++ b/.forgejo/workflows/main.yml @@ -24,27 +24,22 @@ jobs: git remote add upstream https://github.com/cinnyapp/cinny.git git fetch upstream dev - - name: Check for Changes and Push Branch + - name: Merge Upstream and Check Changes id: check_changes run: | - # 1. 로컬에 올라가 있는 'origin/dev'와 'upstream/dev'의 최신 커밋 해시를 비교합니다. - LOCAL_REFS=$(git rev-parse origin/dev) - UPSTREAM_REFS=$(git rev-parse upstream/dev) + BRANCH_NAME="upstream-sync-$(date +'%Y%m%d%H%M')" + git checkout -b $BRANCH_NAME origin/dev - if [ "$LOCAL_REFS" != "$UPSTREAM_REFS" ]; then - echo "New changes detected in upstream." - - BRANCH_NAME="upstream-sync-$(date +'%Y%m%d%H%M')" + git merge upstream/dev --no-edit --allow-unrelated-histories + + if ! git diff --quiet origin/dev HEAD; then + echo "New upstream changes merged successfully." echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT echo "has_changes=true" >> $GITHUB_OUTPUT - # 2. 관련 없는 히스토리 문제를 피하기 위해, 'upstream/dev'에서 직접 새 브랜치를 생성합니다. - git checkout -b $BRANCH_NAME upstream/dev - - # 3. 생성한 브랜치를 원격(origin)에 푸시합니다. git push origin $BRANCH_NAME else - echo "No changes detected. Everything is up to date." + echo "No new upstream changes to apply. Everything is up to date." echo "has_changes=false" >> $GITHUB_OUTPUT fi @@ -52,7 +47,7 @@ jobs: if: ${{ steps.check_changes.outputs.has_changes == 'true' }} run: | PR_TITLE="chore(deps): sync upstream changes ($(date +'%Y-%m-%d'))" - PR_BODY="Upstream (cinnyapp/cinny)에 새로운 변경사항이 감지되어 자동으로 생성된 PR입니다." + PR_BODY="Upstream (cinnyapp/cinny)에 새로운 변경사항이 감지되어 내 커스텀 브랜치(dev)에 병합한 후 생성된 PR입니다." HEAD_BRANCH="${{ steps.check_changes.outputs.branch_name }}" BASE_BRANCH="dev"