-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
Description
Describe the feature or problem you'd like to solve
When working with GHCP I have to constantly remind it that I work in a fork or branch.
I have been using another popular CLI to work on maintenance tasks in some repos. For example, I wanted to add support for newer versions of Mongoid to https://github.com/mongoid/mongoid-shell. GHCP did a good job minus the fact that I needed to tell it to make a feature branch and to open a PR on the upstream repo, not on my fork.
The other popular CLI is somehow automatically aware of my fork/PR workflow and always does this for me without having to ask it.
Proposed solution
Copilot should be able to recognize that I work off a fork and open PRs upstream.
Example prompts or workflows
GHCP session:
~/source/mongoid/mongoid-shell/dblock-mongoid-shell (master)$ copilot
╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ╭─╮╭─╮ │
│ ╰─╯╰─╯ GitHub Copilot v0.0.401 │
│ █ ▘▝ █ Describe a task to get started. │
│ ▔▔▔▔ │
│ Pick a model with /model. Delegate changes with an AI-generated PR using /delegate. │
│ Enter ? to see all commands. Copilot uses AI, so always check for mistakes. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
● 💡 No copilot instructions found. Run /init to generate a copilot-instructions.md file for this project.
❯ i have started adding support for newer versions of mongoid here, test them and finish this
● I'll explore the codebase to understand what's been started and test the newer Mongoid versions.
● List directory .
└ 25 files found
● Read README.md
└ 140 lines read
● Read mongoid-shell.gemspec
└ 27 lines read
● Check git status for recent changes
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git --no-pager status
└ 14 lines...
● Read .github/workflows/test.yml
└ 47 lines read
● Read Gemfile
└ 47 lines read
● Check what changes were made
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git --no-pager diff
└ 62 lines...
● Good! I can see you've added Mongoid 7, 8, and 9 support. Let me run the tests to see what's working and what might need fixes.
● Install dependencies
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && bundle install
└ 3 lines...
● Run tests with default Mongoid version (9)
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && bundle exec rake
└ 306 lines...
● I can see 2 test failures related to default_session which doesn't exist in newer Mongoid versions. Let me check the compatibility layer and fix these issues.
● List directory lib
└ 10 files found
● Grep "default_session"
└ 10 lines found
● Read spec/mongoid/commands/base_spec.rb
└ 52 lines read
● Read spec/mongoid/properties/host_spec.rb
└ 33 lines read
● Read spec/support/helpers/mongoid_session_helper.rb
└ 18 lines read
● Read lib/mongoid/shell/commands/base.rb
└ 98 lines read
● I see the issue. The code uses mongoid-compatibility to check versions, but the checks only cover up to Mongoid 6. I need to update them to also handle Mongoid 7, 8, and 9. Let me
check what compatibility methods are available.
● Check mongoid version and available compatibility methods
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && bundle exec ruby -e "require 'mongoid'; require 'mongoid-compatibility'; puts Mongoid::VERSION; puts
Mongoid::Compatibility::Version.methods.grep(/mongoid/)"
└ 28 lines...
● Perfect! The mongoid-compatibility gem already has support for Mongoid 7, 8, and 9. Now I need to update the code to use default_client for Mongoid 5+, not just 5 and 6. Let me fix
the tests and the base command.
● Edit spec/mongoid/commands/base_spec.rb (+1 -1)
● Edit spec/mongoid/properties/host_spec.rb (+1 -1)
● Edit spec/support/helpers/mongoid_session_helper.rb (+3 -3)
● Edit lib/mongoid/shell/commands/base.rb (+3 -3)
● Now let me also update the base_spec.rb where it checks for default_function:
● Edit spec/mongoid/commands/base_spec.rb (+1 -1)
● Now let me run the tests again to see if this fixes the issues:
● Run tests again with Mongoid 9
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && bundle exec rake
└ 282 lines...
● Perfect! All tests pass with Mongoid 9. Now let me test with the other versions (7 and 8) to ensure compatibility:
● Test with Mongoid 7
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && MONGOID_VERSION=7 bundle install --quiet && MONGOID_VERSION=7 bundle exec rspec --format progress
└ 132 lines...
● Great! Mongoid 7 tests pass. Let me test Mongoid 8:
● Test with Mongoid 8
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && MONGOID_VERSION=8 bundle install --quiet && MONGOID_VERSION=8 bundle exec rspec --format progress
└ 132 lines...
● Excellent! All tests pass for Mongoid 7, 8, and 9. Now let me also update the README to document the supported versions and verify the changes:
● Edit README.md (+1 -1)
● Review all changes
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git --no-pager diff
└ 152 lines...
● Perfect! Let me run a final test to make sure everything is still working with the default version:
● Final test with default Mongoid 9
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && bundle install --quiet && bundle exec rake
└ 294 lines...
● Perfect! All tests pass. Let me verify the current status of all changes:
● Check final status
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git --no-pager status
└ 19 lines...
● Excellent! I've successfully finished adding support for newer versions of Mongoid (7, 8, and 9). Here's what I did:
Summary
Fixed compatibility issues by updating version checks to use mongoid5_or_newer? instead of checking for individual versions, since Mongoid 5+ all use Mongoid.default_client instead
of Mongoid.default_session.
Changes made:
1. Gemfile - Added support for Mongoid 7, 8, and 9
2. CI workflow - Added test matrix entries for Mongoid 7, 8, and 9
3. Version - Bumped to
0.5.0
4. CHANGELOG - Added entry for new Mongoid support
5. README - Updated compatibility documentation
6. Code fixes - Updated compatibility checks in:
- lib/mongoid/shell/commands/base.rb
- spec/mongoid/commands/base_spec.rb
- spec/mongoid/properties/host_spec.rb
- spec/support/helpers/mongoid_session_helper.rb
Tests verified:
- ✅ All 115 tests pass with Mongoid 9 (default)
- ✅ All 115 tests pass with Mongoid 8
- ✅ All 115 tests pass with Mongoid 7
- ✅ No RuboCop violations
The implementation is complete and all tests pass successfully!
❯ use gh cli to open a pr, amend the changelog with the pr number
● Commit all changes
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git add -A && git commit -m "Add support for Mongoid 7, 8, and 9"
└ 3 lines...
✗ Push changes to origin
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git push origin master
Operation aborted by user
● Operation cancelled by user
❯ do this on a branch
● Undo the last commit on master
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git reset --soft HEAD~1
└ 1 line...
● Create and checkout new branch
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git checkout -b add-mongoid-7-8-9-support
└ 2 lines...
● Commit changes on the new branch
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git add -A && git commit -m "Add support for Mongoid 7, 8, and 9"
└ 3 lines...
● Push the branch to origin
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git push origin add-mongoid-7-8-9-support
└ 14 lines...
● Create pull request
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && gh pr create --title "Add support for Mongoid 7, 8, and 9" --body "This PR adds support for Mongoid 7, 8, and
9.
**Changes:**
- Updated Gemfile to support Mongoid 7.x, 8.x, and 9.x...
└ 14 lines...
● Set default repo
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && gh repo set-default dblock/mongoid-shell
└ 2 lines...
● Create pull request
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && gh pr create --title "Add support for Mongoid 7, 8, and 9" --body "This PR adds support for Mongoid 7, 8, and
9.
**Changes:**
- Updated Gemfile to support Mongoid 7.x, 8.x, and 9.x...
└ 16 lines...
● Write shell input
└ ? Where should we push the 'add-mongoid-7-8-9-support' branch? [Use arrows t...
● Great! PR #2 has been created. Now let me update the CHANGELOG with the PR number:
● Edit CHANGELOG.md (+1 -1)
● Amend commit with updated CHANGELOG and force push
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git add CHANGELOG.md && git commit --amend --no-edit && git push origin add-mongoid-7-8-9-support --force
└ 13 lines...
● Perfect! I've successfully:
1. ✅ Created a new branch add-mongoid-7-8-9-support
2. ✅ Committed all changes for Mongoid 7, 8, and 9 support
3. ✅ Pushed the branch to GitHub
4. ✅ Created Pull Request #2 (https://github.com/dblock/mongoid-shell/pull/2)
5. ✅ Updated the CHANGELOG with the PR number and pushed the amendment
The PR is now ready for review at: https://github.com/dblock/mongoid-shell/pull/2 (https://github.com/dblock/mongoid-shell/pull/2)
❯ the pr should be made upstream
● Check git remotes
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git remote -v
└ 5 lines...
● Close the existing PR
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && gh pr close 2 --comment "Closing to create PR upstream at mongoid/mongoid-shell"
└ 2 lines...
● Push branch to upstream
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git push upstream add-mongoid-7-8-9-support
└ 14 lines...
● Create PR to upstream repository
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && gh pr create --repo mongoid/mongoid-shell --title "Add support for Mongoid 7, 8, and 9" --body "This PR adds
support for Mongoid 7, 8, and 9.
**Changes:**
- Updated Gemfile to support Mongoid 7.x, 8.x, and 9.x...
└ 15 lines...
● Perfect! Now let me update the CHANGELOG with the correct PR number:
● Edit CHANGELOG.md (+1 -1)
● Amend commit with updated CHANGELOG and force push to both remotes
$ cd /Users/dblock/source/mongoid/mongoid-shell/dblock-mongoid-shell && git add CHANGELOG.md && git commit --amend --no-edit && git push upstream add-mongoid-7-8-9-support --force &&
git push origin add-mongoid-7-8-9-support --force
└ 22 lines...
● Perfect! I've successfully:
1. ✅ Closed PR #2 on dblock/mongoid-shell
2. ✅ Pushed the branch to upstream (mongoid/mongoid-shell)
3. ✅ Created PR #20 (https://github.com/mongoid/mongoid-shell/pull/20) on the upstream repository
4. ✅ Updated the CHANGELOG with the correct PR number (#20)
5. ✅ Force pushed the updated commit to both upstream and origin
The PR is now ready for review at the upstream repository: https://github.com/mongoid/mongoid-shell/pull/20 (https://github.com/mongoid/mongoid-shell/pull/20)
~/source/mongoid/mongoid-shell/dblock-mongoid-shell[⎇ add-mongoid-7-8-9-support]