ghidra
ghidra copied to clipboard
Acquire and release "exclusive" checkout without undoing it first.
Is your feature request related to a problem? Please describe.
I work in a project where from time to time we need to get exclusive checkout to do stuff like updating memory map, or just upgrading file to a newer ghidra version. The workflow is usually like this:
- Get all the other people to undo their checkouts or kick other people
- Check in own changes if any
- Undo own checkout
- Checkout with exclusive flag checked (= network transfer / time wasted )
- Do the work
- Check in the work.
- Undo checkout (or unset "keep file checked out" in step 5)
- Checkout again (= network transfer / time wasted )
- Inform others file can be checked out again
This add IMO unnecessary steps + in case of working with huge projects on remote servers it adds a lot of network transfer and time wasted on those.
Ah, it is also annoying when you checkout a file just to get error that you need to upgrade it, but exclusive checkout is required. It is a different way to end up in the same situation as described above.
Describe the solution you'd like
Allow user to do two things, ideally from right-click menu in active project view (next to all the check in/out related functions)
Acquire "exclusive" flag on existing checkout
If this is the only existing checkout on the server, allow user to select option to convert it to exclusive. If not, fail with a proper error message (like it does now during checkout)
Release "exclusive" flag on existing checkout
If user has exclusive checkout, allow user to select option to convert it to non-exclusive.
I think in case of releasing exclusive flag all user changes would need to be either checked-in or dropped first.
If implemented, this could be also a part of "check in" GUI, where "keep the file checked out" option lies for now.
Describe alternatives you've considered
I see no other alternatives than keeping the existing way of work.
Additional context
If both options are implemented, workflow would simplify to
- Get all the other people to undo their checkouts or kick other people
- Request "exclusive" flag (no wait / extra transfers; no need to check-in own changes yet)
- Do the work
- Check in the work
- Release "exclusive" flag (no wait / extra transfers to check out again)
- Inform others that file can be checked out again.
Agreed. Is there a technical reason why a new complete checkout is required when switching between exclusive and non exclusive?
This is related to #5368 which is already in our queue
Agreed. Is there a technical reason why a new complete checkout is required when switching between exclusive and non exclusive?
The only limitation is the server interface API which does not support this operation at present. This change will require a change to the server interface which will likely break compatibility with between client/server versions.