Skip to content

feat: implement rebasing#534

Open
jakubbortlik wants to merge 1 commit into
harrisoncramer:developfrom
jakubbortlik:feat/implement-rebasing
Open

feat: implement rebasing#534
jakubbortlik wants to merge 1 commit into
harrisoncramer:developfrom
jakubbortlik:feat/implement-rebasing

Conversation

@jakubbortlik
Copy link
Copy Markdown
Collaborator

@jakubbortlik jakubbortlik commented Mar 4, 2026

Closes #497.

This is still in draft because I would like to test it thoroughly, but the main functionality works. The maintained Diffview fork supports updating a diffview, and programmatically modifying selections which enables us to update the reviewer in place without closing and reopening after a rebase.

There will be a trivial conflict with #530 because both PR's add keybindings in the same place in settings.

I've also replaced some synchronous system calls to git with async calls. This prevents blocking the UI (cursor and winbar updates) when checking if the local branch is up-to-date with the remote tracking branch. This makes loading the summary and rebuilding the discussion tree more responsive.

AI use: The Go code is mostly generated by Claude Opus 4.5. The same model has been used for reviewing the lua code.

Comment thread lua/gitlab/reviewer/init.lua Outdated
@jakubbortlik jakubbortlik force-pushed the feat/implement-rebasing branch from 27e544a to 6fc6475 Compare March 17, 2026 16:20
@jakubbortlik jakubbortlik force-pushed the feat/implement-rebasing branch 2 times, most recently from 3384ee1 to d528de8 Compare March 30, 2026 13:12
@jakubbortlik jakubbortlik changed the title Draft: feat: implement rebasing feat: implement rebasing Apr 10, 2026
@jakubbortlik jakubbortlik changed the title feat: implement rebasing Draft: feat: implement rebasing Apr 10, 2026
@jakubbortlik jakubbortlik force-pushed the feat/implement-rebasing branch from dff2d2a to 49d2495 Compare April 11, 2026 11:40
Comment thread doc/gitlab.nvim.txt
create_mr = "glC", -- Create a new MR for currently checked-out feature branch
choose_merge_request = "glc", -- Chose MR for review (if necessary check out the feature branch)
start_review = "glS", -- Start review for the currently checked-out branch
reload_review = "gl<C-R>", -- Load new MR state from Gitlab and apply new diff refs to the diff view
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering whether it would make sense to connect this to the refresh of the discussion tree instead of making it a separate function and keybinding.

Comment thread doc/gitlab.nvim.txt
Comment on lines +865 to 871
gitlab.close_review() ~

Closes the reviewer tab and discussion tree and cleans up (e.g., removes
winbar timer).
>lua
require("gitlab").close_review()
<
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an existing API that was just missing documentation.

M.is_open = true
local cur_view = diffview_lib.get_current_view()
M.diffview_layout = cur_view.cur_layout
M.diffview = require("diffview.lib").get_current_view()
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Saving this to the module table makes it possible to reduce the reliance on the diffview.lib in other places of the codebase.

Comment thread lua/gitlab/reviewer/init.lua Outdated
@jakubbortlik jakubbortlik force-pushed the feat/implement-rebasing branch from a9de870 to 9dd7965 Compare April 19, 2026 06:38
@jakubbortlik jakubbortlik changed the title Draft: feat: implement rebasing feat: implement rebasing Apr 20, 2026
@jakubbortlik jakubbortlik force-pushed the feat/implement-rebasing branch 2 times, most recently from 906e633 to 5aad115 Compare April 25, 2026 19:18
@jakubbortlik jakubbortlik force-pushed the feat/implement-rebasing branch from 5aad115 to 567f8a9 Compare April 29, 2026 10:09
@jakubbortlik jakubbortlik force-pushed the feat/implement-rebasing branch from 567f8a9 to 4bd4100 Compare May 22, 2026 05:13
@jakubbortlik
Copy link
Copy Markdown
Collaborator Author

Hi @harrisoncramer, do you think you could have a look at this PR? I think it is ready to be merged and find the functionality really useful, and it would unblock me for working on other issues. When I'm working on a fix or new feature, I frequently just test it during my normal work and while doing so I really would like to have the functionality from this PR and also from #552 available.

@jakubbortlik jakubbortlik force-pushed the feat/implement-rebasing branch 2 times, most recently from e3238ba to 667e039 Compare May 22, 2026 13:14
- Rebases the MR on the server.
- Pulls the remote branch after rebasing.
- Aborts rebase if it is not necessary, but enables forcing a rebase.
- Aborts rebase when there are conflicts.
- Adds keymaps for common rebase variants, and for reloading reviewer.
- Checks if branch is up-to-date asynchronously.
@jakubbortlik jakubbortlik force-pushed the feat/implement-rebasing branch from 667e039 to 291636a Compare May 22, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve rebasing experience

1 participant