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
git-commit-mode prevents magit from running certain [not "any"] other git operations in any repo #827
Comments
I previously suggested a solution which was to teach magit how to handle multiple git processes at once. However after more thought triggered by discussion on the google group, I think a better solution is "don't start git commit until the commit log editing has been completed". This avoids the problems which stem from the modal-like nature of the current workflow. A non-modal approach also satisfies the "long-lived commit buffer" workflow. |
Adam Spiers notifications@github.com writes:
The problem is that if we don't use git to prepare the commit message, Generally speaking, we definitively should find some solution to run more Rémi Vanicat |
Yes, only allowing one git processes is in may cases not necessary. Lets discuss that on #24, the oldest still open issue! I just recently changed that from
That wasn't intentional. And it should be "easy" enough to fix without first refactoring (see above/#24) another core component of Magit or dropping the client thing. Use So maybe some refactoring is needed in that area even before we make functional changes (#24) to accommodate this change. One such thing I have started a while back but never completed (or just not sufficiently tested?) is to factor out the duplicated (but strangely somewhat different) error handling in |
I am factoring the whole "making sure we find emacsclient and have a fallback that works very similarly if we cannot use that" functionality out into a new library Some of these things still have to be fleshed out but it basically works already. I have some recent changes that I haven't tested at all yet, so I am not pushing the branch yet. But that could happen any time now (famous last words). The editing commit messages and having git ask emacs(client) to do it (or telling git to use the already written message, as we used to do) or very distinct tasks but they are currently to strongly connected (and to some extend they also were with the old log-edit). So this is not only an attempt to finally fix the client interaction but also to separate these concerns. This might make it easier to restore a client-less commit as an option (should we, after fixing the client approach, decide we still want that). It will also allow using And last but not least |
I have the feeling that we are hitting on things that the VC developers have bumped into before, or at least is what I get from reading @tarsius do publish the branches, in your personal repository so we can help by testing and commenting, maybe even with code. |
That's not really true. As I have said on #846:
Regardless I still intend to stop using |
I have just made the old commit mode available as a separate package. Until the new commit mode is functioning in all its glory, you might or might not want to use that. The repository is a https://github.com/magit/magit-log-edit. It should also appear on Melpa soon. |
A quick 👍 for a less-modal commit mode, thanks |
Four years and ~1100 issues later I have taken care of #24. That fixes this issue too :-) |
Once launched via
git
runningemacsclient
,git-commit-mode
effectively locks the use of git until the commit is completed or aborted. This is my single biggest complaint about this new commit mechanism, and it does make me suspect that the modal-like nature of this design is fundamentally flawed.Example use case which is broken by this design:
b b
to switch to the correct branchGit is already running
Workaround: switch branch from CLI instead :-/
Another example use case:
Workaround: save the message somewhere then abort the commit, or complete it and then fix branch tips :-/
One could argue that the new workflow encourages developers to adopt a "cleaner" workflow, where open tasks are not left open for a long period of time. This is true, but IMHO it should be up to the user to decide their own workflow. The tool is there to serve the user, not the other way around, so it should not be so opinionated about how its user works.
Other breakage caused by this new design include #772, #785, and #805 - mostly resolved already (great work!) so hopefully this is teething problems rather than an indication that something is more fundamentally broken.
The text was updated successfully, but these errors were encountered: