-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Fix versioning list only #7015
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
Fix versioning list only #7015
Conversation
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.
Summary of Changes
Hello @chrislusf, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request primarily addresses a bug in the S3 ListObjectVersions
API concerning how prefixes are handled during object listing. The changes refine the internal logic for filtering objects based on a given prefix, ensuring that only truly matching objects and relevant directories are considered, thereby preventing incorrect inclusions in the version list. A new test case has been added to validate the fix for various edge scenarios.
Highlights
- Corrected Prefix Filtering: The core logic for the S3
ListObjectVersions
API has been updated to accurately filter objects based on the provided prefix, resolving issues where non-matching objects might have been incorrectly included in the results. - Enhanced Recursive Traversal: The
findVersionsRecursively
function now includes more robust checks to determine if an object or directory should be considered when applying a prefix filter. This specifically addresses edge cases involving partial matches or complex directory structures, ensuring precise matching and correct traversal. - New Test Case for Edge Cases: A dedicated test (
TestPrefixFilteringLogic
) has been added to thoroughly validate the corrected prefix filtering behavior. This test covers specific scenarios, such as distinguishing between keys like 'a' and 'a/b' when a prefix like 'a/b' or 'a/' is applied, ensuring the fix works as intended. - Preservation of Original Prefix in Response: The
ListObjectVersions
API now ensures that thePrefix
field in the response accurately reflects the original prefix provided by the user in the request, rather than an internally normalized version used for processing.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
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.
Code Review
This pull request fixes a bug in the versioning list logic where prefixes could lead to incorrect results. The fix in findVersionsRecursively
is correct and is well-supported by the new integration test TestPrefixFilteringLogic
. I've added suggestions to improve code readability and reduce redundancy.
originalPrefix := query.Get("prefix") // Keep original prefix for response | ||
prefix := originalPrefix // Use for internal processing |
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.
It's redundant to assign originalPrefix
to prefix
on the next line. You can directly use originalPrefix
for internal processing to avoid this extra assignment.
originalPrefix := query.Get("prefix") // Keep original prefix for response | |
prefix := originalPrefix // Use for internal processing | |
prefix := originalPrefix // Use for internal processing |
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
What problem are we solving?
How are we solving the problem?
How is the PR tested?
Checks