If I run "PortableApps/gVimPortable/gVimPortable.exe --nofork" in a cygwin or msys2 (mingw64) mintty, I still see the shell prompt. However, if I run "PortableApps/gVimPortable/App/vim/vim80/gvim.exe --nofork", the shell prompt will only re-appear after I quit the editor. I need to add the --nofork flag if I want to use gvim as the git editor. It seems gVimPortable.exe does not pass the --nofork option to gvim.exe. I can't use gvim.exe because it doesn't load in my vimrc. I want to use gVimPortable.exe for normal editing and "gVimPortable.exe --nofork" when I commit in git. FYI, --nofork doesn't work in a DOS box.
I found out that gvim.exe blocks the shell with or without the --nofork flag. gVimPortable.exe loads PortableApps/gVimPortable/Data/settings/_vimrc while gvim.exe loads in $HOME/.vimrc where the actual path of $HOME in cgywin is different from that in msys2.
In other words, I have workarounds. I can symbolic-link $HOME/.vimrc to PortableApps/gVimPortable/Data/settings/_vimrc, use gVimPortable.exe for normal editing and assign gvim.exe as the editor inside my .gitconfig.
The launcher passes anything you pass it on the command line on to the base app. What the base app does with it is up to the base app.
Sometimes, the impossible can become possible, if you're awesome!