Setting up password-less connection in Netbeans
Following Setting up password-less connection with GitHub in TortoiseGit article, here are tips on how to setup password-less connection between your GitHub account and your local repository operated under Netbeans. The easiest way to setup password-less connection, is to do this on initial GitHub repo clone or pulling. And it will be presented this way, in following article.
Contents
Intro
Most important: Do not use method shown in my Setting up password-less connection with GitHub in TortoiseGit. For some reason (unknown to me) Netbeans can’t work with keys generated by Puttygen
. Use GitHub article on generating SSH keys instead.
If you’re Windows user, you have to use Git Bash
console, instead of regular cmd
console (at least this article does not covers using it). It is available, when you install msysgit
(look here for more details).
In normal conditions, you install msysgit
prior or next to installing TortoiseGit, because it requires it. However, if you don’t use TortoiseGit at all (for example you’re fine with Netbeans internal Git client), you either have to install msysgit
alone (to have access to Git Bash
) or any other Windows port of Linux tools (like Cygwin for Windows) or you have to “fight” hard, translating paths and command from GitHub article to standard Windows cmd
command-line.
Setup
OK. I assume you’re, where GitHub article left you. That is, you’ve added your public key to your GitHub account (Step 3) and you’ve tested, that your private key (stored in path expressed in “Your identification has been saved in” message) is valid and can be used to login to GitHub without password (Step 4).
Git Bash gives Linux-like paths, even on Windows, so /c/Users/[you]/.ssh/id_rsa
file (in “Your identification has been saved in” message) corresponds to C:\Users\[you]\.ssh\id_rsa
, where [you]
is your Windows user name. Decide at this step, whether you’re going to leave your private key in this default folder or copy it (by any way) to another location. Keeping this file in default location (along with public key id_rsa.pub
and known_hosts
file) is recommended as long as you don’t have good reasons for moving this file to another location (and/or renaming it).
Let’s start with cloning GitHub repo as a new Netbeans project.
Follow these steps:
1. Start with Team > Git > Clone
and specify GitHub repository’s using SSH-like URL (usually it is something like git@github.com:[user]/[repository].git
).
2. Enter git
as user name, even if you see git@
in the beginning of URL. This is one of many Netbeans wakos. In some dialogs it is able to extract user name out of URL (automaticaly cuts of git@
from URL and place it in Username
) and on some (like this) it don’t. To make things even more crazy, even though you have git@
in URL, the entire thing won’t work (at least in Netbeans 7.3) if you leave user field empty (Auth cancel
error, whatever this means).
3. Select Private/Public Key
option and enter (or browse) location of your private key (see above) into Private Key File
. If you secured your private key with a passpharse (very recommended — see here), enter it to the field below and tick Save Passpharse
. Hit Next >
.
4. Select remote branch in second step of this wizzard and set destination directory (to where GitHub repository should be clonned to) in the third step. Make sure, you’re referencing an empty (or non-existing) directory as you can’t clone to directory containing anything. Hit Finish
.
5. Wait few seconds and click Create Project...
in openned dialog box. Follow the standard way of adding new Netbeans project, selecting PHP Application with Existing Sources
. Provide any information you want or you usually provide and finish adding new project process.
You’re done!
If everything went without troubles, Netbeans will write all necessary data into your local copy meta files (.git
folder). Next time you call on Team > Git > Remote > Push
, to push your local changes to GitHub, you should not be asked for a password or passpharse. Your entire pushing process should be limited to serie of clicks on Next >
and Finish
.
Conlusion
Why cloning? What about existing local repositories?
Well… I had too many problems when trying to force Netbeans to use existing local copy of GitHub repository (created with TortiseGit), as well as SVN repository (created with TortoiseSVN) that I dropped the entire idea.
From now-on, if on any system I’m switching from TortoiseGit (or any other Git client) to Netbeans, I always comit and push all local changes, delete entire folder and clone it back (checkout in case of Subversion) using tools in Netbeans.
This is the quickest, least painful way.