-
-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: Sync dev-current with main github workflow #179
Conversation
Warning Rate limit exceeded@geertmeersman has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 8 minutes and 39 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
WalkthroughA new GitHub Actions workflow has been created to automate the synchronization of the Changes
Sequence DiagramsequenceDiagram
participant GH as GitHub Actions
participant Main as main branch
participant DevCurrent as dev-current branch
GH->>Main: Push to main branch
GH->>DevCurrent: Check branch status
alt DevCurrent has no unique commits
GH->>DevCurrent: Delete and recreate from main
GH->>DevCurrent: Push updated branch
else DevCurrent has unique commits
GH->>GH: Log number of unique commits
GH-->>DevCurrent: No sync performed
end
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/sync-dev-current.yml
(1 hunks)
🔇 Additional comments (2)
.github/workflows/sync-dev-current.yml (2)
1-12
: Well-configured workflow triggers and concurrency settings!The workflow is properly configured with appropriate triggers and concurrency settings to prevent parallel runs and race conditions.
13-26
: Proper environment and Git configuration setup!The job uses the latest Ubuntu runner and properly configures Git with the actions bot identity.
- name: Sync dev-current with main | ||
run: | | ||
#!/bin/bash | ||
|
||
# Fetch the latest updates | ||
echo "INFO: Pulling the latest changes..." | ||
git pull | ||
|
||
# Ensure we are on the main branch and update it | ||
echo "INFO: Switching to the main branch..." | ||
git switch main | ||
git pull | ||
|
||
# Ensure dev-current branch is up-to-date | ||
echo "INFO: Switching to the dev-current branch..." | ||
if git show-ref --verify --quiet refs/heads/dev-current; then | ||
git switch dev-current | ||
git pull | ||
else | ||
echo "INFO: dev-current branch does not exist." | ||
fi | ||
|
||
# Check if dev-current is ahead of main | ||
echo "INFO: Checking if dev-current has unmerged commits..." | ||
ahead=$(git log main..dev-current --oneline | wc -l || echo 0) | ||
|
||
if [[ $ahead -gt 0 ]]; then | ||
echo "----------------------------------------------------" | ||
echo "INFO: dev-current is ahead of main by $ahead commits" | ||
echo "INFO: No sync will occur." | ||
echo "Commit list:" | ||
git log --pretty=format:" %h %s" main..dev-current | ||
exit 0 | ||
fi | ||
|
||
# Sync dev-current with main | ||
echo "INFO: Syncing dev-current with main..." | ||
git switch main | ||
if git show-ref --verify --quiet refs/heads/dev-current; then | ||
git branch -D dev-current | ||
fi | ||
git branch dev-current | ||
git switch dev-current | ||
git push --force --set-upstream origin dev-current | ||
|
||
echo "INFO: dev-current successfully synced with main." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Add error handling for Git operations
The script should handle potential Git operation failures. Consider adding error handling for critical operations:
+handle_error() {
+ echo "ERROR: Command failed: $1"
+ exit 1
+}
+
# Fetch the latest updates
echo "INFO: Pulling the latest changes..."
-git pull
+git pull || handle_error "git pull failed"
# Ensure we are on the main branch and update it
echo "INFO: Switching to the main branch..."
-git switch main
-git pull
+git switch main || handle_error "Failed to switch to main branch"
+git pull || handle_error "Failed to update main branch"
Also, consider adding a cleanup function to handle interrupts:
+cleanup() {
+ echo "INFO: Cleaning up..."
+ # Return to original branch if possible
+ git switch - 2>/dev/null || true
+}
+
+trap cleanup EXIT INT TERM
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
- name: Sync dev-current with main | |
run: | | |
#!/bin/bash | |
# Fetch the latest updates | |
echo "INFO: Pulling the latest changes..." | |
git pull | |
# Ensure we are on the main branch and update it | |
echo "INFO: Switching to the main branch..." | |
git switch main | |
git pull | |
# Ensure dev-current branch is up-to-date | |
echo "INFO: Switching to the dev-current branch..." | |
if git show-ref --verify --quiet refs/heads/dev-current; then | |
git switch dev-current | |
git pull | |
else | |
echo "INFO: dev-current branch does not exist." | |
fi | |
# Check if dev-current is ahead of main | |
echo "INFO: Checking if dev-current has unmerged commits..." | |
ahead=$(git log main..dev-current --oneline | wc -l || echo 0) | |
if [[ $ahead -gt 0 ]]; then | |
echo "----------------------------------------------------" | |
echo "INFO: dev-current is ahead of main by $ahead commits" | |
echo "INFO: No sync will occur." | |
echo "Commit list:" | |
git log --pretty=format:" %h %s" main..dev-current | |
exit 0 | |
fi | |
# Sync dev-current with main | |
echo "INFO: Syncing dev-current with main..." | |
git switch main | |
if git show-ref --verify --quiet refs/heads/dev-current; then | |
git branch -D dev-current | |
fi | |
git branch dev-current | |
git switch dev-current | |
git push --force --set-upstream origin dev-current | |
echo "INFO: dev-current successfully synced with main." | |
- name: Sync dev-current with main | |
run: | | |
#!/bin/bash | |
handle_error() { | |
echo "ERROR: Command failed: $1" | |
exit 1 | |
} | |
cleanup() { | |
echo "INFO: Cleaning up..." | |
# Return to original branch if possible | |
git switch - 2>/dev/null || true | |
} | |
trap cleanup EXIT INT TERM | |
# Fetch the latest updates | |
echo "INFO: Pulling the latest changes..." | |
git pull || handle_error "git pull failed" | |
# Ensure we are on the main branch and update it | |
echo "INFO: Switching to the main branch..." | |
git switch main || handle_error "Failed to switch to main branch" | |
git pull || handle_error "Failed to update main branch" | |
# Ensure dev-current branch is up-to-date | |
echo "INFO: Switching to the dev-current branch..." | |
if git show-ref --verify --quiet refs/heads/dev-current; then | |
git switch dev-current | |
git pull | |
else | |
echo "INFO: dev-current branch does not exist." | |
fi | |
# Check if dev-current is ahead of main | |
echo "INFO: Checking if dev-current has unmerged commits..." | |
ahead=$(git log main..dev-current --oneline | wc -l || echo 0) | |
if [[ $ahead -gt 0 ]]; then | |
echo "----------------------------------------------------" | |
echo "INFO: dev-current is ahead of main by $ahead commits" | |
echo "INFO: No sync will occur." | |
echo "Commit list:" | |
git log --pretty=format:" %h %s" main..dev-current | |
exit 0 | |
fi | |
# Sync dev-current with main | |
echo "INFO: Syncing dev-current with main..." | |
git switch main | |
if git show-ref --verify --quiet refs/heads/dev-current; then | |
git branch -D dev-current | |
fi | |
git branch dev-current | |
git switch dev-current | |
git push --force --set-upstream origin dev-current | |
echo "INFO: dev-current successfully synced with main." |
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Summary by CodeRabbit
dev-current
branch with themain
branch