commitizen / cz-cli

The commitizen command line utility. #BlackLivesMatter
http://commitizen.github.io/cz-cli/
MIT License
16.87k stars 552 forks source link

Long term goal: Integrate with various Git GUIs #45

Open jimthedev opened 9 years ago

jimthedev commented 9 years ago

Would be great it we could provide a way for git GUIs to inject themselves in the place of inquirer so that they could use their own GUIs to ask users for prompts. This might be a pie in the sky idea but it would be pretty freaking cool.

pauleveritt commented 9 years ago

Here are the docs for writing IntelliJ plugins but it's going to be an open question whether the plug point that you want is available. [VCS Integration Plugins](VCS Integration Plugins) looks like it is in the ballpark.

I've asked internally and pointed to this ticket. Will need patience, still cleaning up from last week's update-the-universe cycle.

jimthedev commented 9 years ago

@pauleveritt Thanks and no worries on timing. I am still working on several major changes that would be breaking changes for any IDE plugins. It will still be nice to read up and familiarize myself a bit with the ecosystem. Thanks a bunch.

vjpr commented 8 years ago

Just wanted to mention there is an IntelliJ plugin for writing plugins at runtime that can rapidly speed up the development process. https://github.com/dkandalov/live-plugin

VCS Plugin Docs - http://www.jetbrains.org/intellij/sdk/docs/reference_guide/vcs_integration_for_plugins.html

I found a silly IntelliJ plugin that adds a button to the commit dialog to use as a starting point: https://github.com/darekkay/what-the-commit

The hook is in META_INF:

...
    <actions>
        <action id="WhatTheCommit.Button" class="com.eclectide.intellij.whatthecommit.WhatTheCommitAction"
                text="What The Commit"
                description="Load random message" icon="/load.png">
            <add-to-group group-id="Vcs.MessageActionGroup" anchor="first"/>
        </action>
    </actions>
...

For showing a dialog: http://www.jetbrains.org/intellij/sdk/docs/user_interface_components/dialog_wrapper.html?search=dialog


This plugin (https://github.com/jshiell/checkstyle-idea/) adds a checkbox to the "Before Commit" section of the commit dialog. I think this is the best approach because it makes it easy to disable it (good reducing frustration during early adoption in a code base).

Most of the code needed is here: https://github.com/jshiell/checkstyle-idea/blob/e04092ab57bfb0a5ad8a26114faca9ecc4318afd/src/main/java/org/infernus/idea/checkstyle/handlers/ScanFilesBeforeCheckinHandler.java


The checkinHandlerFactory extension point is what we are looking for:

https://github.com/jshiell/checkstyle-idea/blob/e547d13ef4d168a6a2400c76d31bee825b27c3e3/src/main/resources/META-INF/plugin.xml#L184

All the VCS extension points can be found here: https://upsource.jetbrains.com/idea-ce/file/idea-ce-1731d054af4ca27aa827c03929e27eeb0e6a8366/platform/platform-resources/src/META-INF/VcsExtensionPoints.xml

Because of this, I don't think live-plugin will do, it would need to be a proper plugin.


Turns out live-plugin does support extension points (https://github.com/dkandalov/live-plugin/issues/61). Should be very easy to make.

darrachequesne commented 7 years ago

Hi! We add the need for an IntelliJ integration at work, so we made this really basic plugin: https://plugins.jetbrains.com/plugin/9861-git-commit-template

Source is here: https://github.com/MobileTribe/commit-template-idea-plugin

Open to suggestions!

motin commented 6 years ago

Using SourceTree, it is possible to add a custom action that launches git cz in the current repository's directory in a new terminal window. The custom action can be assigned a keyboard shortcut. This is as close of a GUI integration that is possible at the moment it seems. :) Code here for anyone interested: https://gist.github.com/motin/5896c5b04d039aac48e6a2985d12171b