After my talks about Git Flow in Hamburg and Essen, some developers (especially Andy) came up to me and were very skeptical if companies will be able to establish a workflow such as Git Flow without proper IDE integration. We at TWT were happy with the command line or a GUI client like Sourcetree. But I could understand Andys point of view.
Luckily, Opher Vishnia took up the gauntlet (as he purports the story himself ;)) and created a simple IntelliJ/PHPStorm Plugin that enables you to use Git Flow directly inside the IDE. You can get the Plugin via the Jetbrains Repository or from his Github Account. Thanks to Dominik for bringing it to my attention again after I had neglected to test this thoroughly…
After installation you can create features, releases and hotfixes from within the IDE.
One problem that people seemed to have with the plugin on a Mac (myself included) was an error that prevented the plugin from working at all.
11:05:19.663: git flow feature start test-plugin git: 'flow' is not a git command. See 'git --help'. Did you mean one of these? reflog show
It turns out (from this support thread on Github) that the git executable and the git-flow executable must live in the same directory for the plugin to work. As my PHPStorm uses /usr/bin/git, I just symlinked my git-flow installation to /usr/bin:
cd /usr/bin sudo ln -s /usr/local/bin/git-flow-feature git-flow-feature sudo ln -s /usr/local/bin/git-flow-hotfix git-flow-hotfix sudo ln -s /usr/local/bin/git-flow-init git-flow-init sudo ln -s /usr/local/bin/git-flow-release git-flow-release sudo ln -s /usr/local/bin/git-flow-support git-flow-support sudo ln -s /usr/local/bin/git-flow-version git-flow-version sudo ln -s /usr/local/bin/gitflow-common gitflow-common sudo ln -s /usr/local/bin/gitflow-shFlags gitflow-shFlags
So that it looks like this afterwards:
ls -la git* -rwxr-xr-x 1 root wheel 14224 25 Nov 2013 21:11:19 git -rwxr-xr-x 1 root wheel 14256 25 Nov 2013 21:11:19 git-cvsserver lrwxr-xr-x 1 root wheel 23 21 Jan 2014 11:01:20 git-flow -> /usr/local/bin/git-flow lrwxr-xr-x 1 root wheel 30 21 Jan 2014 11:01:18 git-flow-common -> /usr/local/bin/git-flow-common lrwxr-xr-x 1 root wheel 31 21 Jan 2014 11:01:04 git-flow-feature -> /usr/local/bin/git-flow-feature lrwxr-xr-x 1 root wheel 30 21 Jan 2014 11:01:16 git-flow-hotfix -> /usr/local/bin/git-flow-hotfix lrwxr-xr-x 1 root wheel 28 21 Jan 2014 11:01:26 git-flow-init -> /usr/local/bin/git-flow-init lrwxr-xr-x 1 root wheel 31 21 Jan 2014 11:01:38 git-flow-release -> /usr/local/bin/git-flow-release lrwxr-xr-x 1 root wheel 31 21 Jan 2014 11:01:32 git-flow-shFlags -> /usr/local/bin/git-flow-shFlags lrwxr-xr-x 1 root wheel 31 21 Jan 2014 11:01:54 git-flow-support -> /usr/local/bin/git-flow-support lrwxr-xr-x 1 root wheel 31 21 Jan 2014 11:01:04 git-flow-version -> /usr/local/bin/git-flow-version -rwxr-xr-x 1 root wheel 14272 25 Nov 2013 21:11:19 git-receive-pack -rwxr-xr-x 1 root wheel 14256 25 Nov 2013 21:11:19 git-shell -rwxr-xr-x 1 root wheel 14272 25 Nov 2013 21:11:19 git-upload-archive -rwxr-xr-x 1 root wheel 14272 25 Nov 2013 21:11:19 git-upload-pack
After that, everything worked like a charm. We’ll use that for some time and I’ll report back how that works out for us.