I hate that everytime I need to push a new branch to my origin I need to go through the painful process of
git push --set-upstream origin ${branch-name}
.
The problem is worse because I need to type and tab complete the branch name too, just too much hassle.
Now with vim I had the thought to one day just make a remap, which I did, and what that did was basically just type out the statement
:Git push --set-upstream origin
and allowed me to just type the branch name.
I think today even that was too much repetition for me, so I had the idea to see how more could I reduce this. I mean I wanted to learn vimscript anyhow, so was a nice thing to do.
The Vim Magic
" For new branch
" gets branch name
" sets upstream origin automatically
function! GitPushUpsOrgBranch()
let branch = system("git branch --show-current")
let push_str = "git push --set-upstream origin ".branch
let conf_msg = "Do you want to execute\n".push_str
let conf_res = ConfirmBox(conf_msg)
if conf_res == 1
let push_str_out = system(push_str)
echo push_str_out
endif
return 1
endfunction
" git push set upstream remap
nnoremap<silent> <Leader>gpsu :call GitPushUpsOrgBranch()<CR>
What this beautiful set of commands does is that upon hitting gpsu it makes vim call the function GitPushUpsOrgsBranch().
GitPushUpsOrgsBranch
This does 3 things:
- Gets my current branch which git 6.6+ allows (I think, don't remember) via
git branch --show-current
- Appends it to a string and forms the actual bland repetitive command I so hate
git push --set-upstream origin ${branch_name}
- Before pushing it actually prompts me and then allows me to push. (see image below)
Conclusion
This was a comfortable way to get into vimscript, but also was a nice personalization I deeply enjoyed. Pretty cool stuff.
Top comments (0)