Hi James!
Your proposal looks good to me, but I'd like to add a few things: 1. We should be able to do this without disturbing the UI code. In other words, other than the context sensitivity changes, we should do this by rewriting the command objects and leave the upper-level git shell code alone. I'm thinking that the new command structure would probably look a lot like the command objects we have for the Subversion plugin, in that they would derive AnjutaAsyncCommand and dispense with AnjutaLauncher.
While playing with the library I realised that there are probably quite some commands that we don't even need to do async because git is so much faster than the ui code (sync anyway) to build lists, etc. I agree that we could do that without changing the UI code - but I would want - see below.
2. Generally the proposed feature set looks good but I want to add these: - Bisect support (we have commands for this but I haven't implemented a git shell UI for it yet) - Let users add diff hunks to the index instead of whole files. - Log filtering. As with bisect, we still have the commands for these but with no UI in git shell.
Log filtering looks good to me, diff hunks for a selection too. Not so sure about bisect. My idea was to radically simply things to a minimum but highly usable set.
Can libgit2 do all of this? From time to time I take a look at libgit2 to see how it's progressing but it seems to be missing advanced things like bisect.
It probably does - I think we shouldn't aim for a full git shell in Anjuta. When it comes to all the advanced git stuff the workflow is usually: 1) google for the problem 2) find a blog post with a cool solution (usually including quite interesting shell commands) 3) try in the shell It is really difficult to design an UI for things like bisect that isn't confusing. We might want to do design prototypes at some point to see if we find something that fits - but only after having a super easy workflow for the simpler commands. libgit2 doesn't support clone though atm, which we might want to still do for project import.
What other UI changes did you have in mind? I'd like to see those mockups...
I didn't find time to prototype the UI yet and might find some limitation on the ideas I have in my head, so please let me try this first before getting into detailled discussions. The idea is to allow to work completely without mouse (shortcuts / focus handling) and to have git integrated in the workflow rather than feeling an extra plugin. Regards, Johannes
Attachment:
signature.asc
Description: This is a digitally signed message part