Closed omniproc closed 11 years ago
SparkleShare doesn't change GIT_SSH, it does set PLINK_PROTOCOL like so:
Environment.SetEnvironmentVariable ("PLINK_PROTOCOL", "ssh");
i'm not sure if this line is needed any longer...
I'm not saying it does change GIT_SSH. But it's looking for it. Thus, if i have set GIT_SSH because i'm using some other GIT tools (e.g. tortoisegit or msysgit along with plink) then Sparkleshare will find that variable set and assume i want to use plink instead of the built-in openssh client. The problem here is that plink needs pageant to be running. without it running Sparkleshare will throw the error i reported.
Now: I don't want Sparkleshare to use plink. BUT i want to keep my GIT_SSH environment variable because my other tools depand on it.
The fact that GIT_SSH is set should not cause Sparkleshare to use plink. If i delete the GIT_SSH variable, everything works as expected.
i'm not sure this can be fixed. SparkleShare just assumes GIT_SSH contains the right thing to use SSH. as far as i know there isn't any other way to tell our copy of git to use the included ssh.exe...
hmm should be reported to the git devs then i guess.
On Windows (7 x64) when using Sparkleshare along with other GIT tools like for example TortoiseGIT i keep getting this error. Tried it with my own GIT Repo as well as with Bitbucket and Github.
The debug_log looks like this:
22:09:06 | Controller | ssh-agent started, PID=4776 22:09:06 | Auth | Imported key 'C:\Users\USERNAME\AppData\Roaming\sparkleshare\MYKEY.key' 22:09:06 | Auth | The following keys may be used: 2048 HEX C:\Users\USERNAME\AppData\Roaming\sparkleshare\MYKEY.key (RSA) 22:09:06 | Cmd | sparkleshare | git log --since=1.month --raw --find-renames --date=iso --format=medium --no-color --no-merges 22:09:06 | Cmd | sparkleshare | git config --get filter.bin.clean 22:09:06 | ListenerFactory | Issued new listener for tcp://notifications.sparkleshare.org:443/ 22:09:06 | Cmd | sparkleshare | git config remote.origin.url "ssh://git@bitbucket.org/USERNAME/sparkleshare" 22:09:06 | Cmd | sparkleshare | git status --porcelain 22:09:07 | Listener | Subscribing to channel CHANNELID on tcp://notifications.sparkleshare.org:443/ 22:09:07 | Listener | Listening for announcements on tcp://notifications.sparkleshare.org:443/ 22:09:07 | Git | sparkleshare | Checking for remote changes... 22:09:07 | Cmd | sparkleshare | git rev-parse HEAD 22:09:07 | Cmd | sparkleshare | git ls-remote --heads --exit-code "ssh://git@bitbucket.org/USERNAME/sparkleshare" master 22:09:08 | Controller | Error fetching avatar for USERNAME@MAILPROVIDER.TLD: Der Remoteserver hat einen Fehler zurückgegeben: (404) Nicht gefunden.
Looking closer at it it seems to be a problem with the configuration. On TortoiseGIT i'm using plink so i've set up a environment variable called GIT_SSH which points to my TortoiseGIT installation. Unfortunately Sparkeshare also is looking for that variable and assumes i want to use plink together with Sparkeshare. Therefore, if i use puttygen to create a *.pkk out of the Sparkleshare keys, load it into pageant and restart Sparkleshare with pageant running, i'm not getting any errors anymore.
IMO it should be a Spakleshare configuration option which SSH client (including a specific path to the exe) should be used. Till then simply using another, app-specific environment variable (like sparkeshare_ssh) should do it. So I may use different SSH clients for different apps.