threads / patch / 20645

patchGIT_SSH does not override ssh in git-svn

Subject: [PATCH] GIT_SSH does not override ssh in git-svn

## tl;dr

4 messages between Aug 17, 2009 and Aug 17, 2009. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Karthik R· Aug 17, 2009, 21:09 UTC · lore
Signed-off-by: Karthik R <karthikr@fastmail.fm>
---

Setting GIT_SSH when using "git svn clone svn+ssh://..." does not override the default ssh; SVN_SSH needs to be set instead. Corrected this.

Also, on Windows, SVN_SSH needs to be set with \ escaped
  e.g., "C:\\PuTTY\\plink.exe"
See http://code.google.com/p/msysgit/issues/detail?id=305
 git-svn.perl |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
Show changes to git-svn.perl +10 −0
diff --git a/git-svn.perl b/git-svn.perl
index b0bfb74..c932b6e 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -21,6 +21,16 @@ $Git::SVN::default_ref_id = $ENV{GIT_SVN_ID} || 
'git-svn';
 $Git::SVN::Ra::_log_window_size = 100;
 $Git::SVN::_minimize_url = 'unset';
 
+my $git_ssh_user_set = 1 if defined $ENV{GIT_SSH};
+if ($git_ssh_user_set) {
+       # If GIT_SSH is set, also set SVN_SSH...
+       $ENV{SVN_SSH} = $ENV{GIT_SSH};
+       # ... and escape \s in shell-variable on Windows
+       if ($^O eq 'MSWin32' || $^O eq 'msys') {
+               $ENV{SVN_SSH} =~ s/\\/\\\\/g;
+       }
+}
+
 $Git::SVN::Log::TZ = $ENV{TZ};
 $ENV{TZ} = 'UTC';
 $| = 1; # unbuffer STDOUT
-- 
1.5.4.3
Johannes Schindelin· Aug 17, 2009, 21:38 UTC · re: Karthik R · lore

Re: [PATCH] GIT_SSH does not override ssh in git-svn

Hi,
On Mon, 17 Aug 2009, Karthik R wrote:
Show 12 quoted lines
> 
> 
> Signed-off-by: Karthik R <karthikr@fastmail.fm>
> ---
> 
> Setting GIT_SSH when using "git svn clone svn+ssh://..." does not override the
> default ssh; SVN_SSH needs to be set instead. Corrected this.
> 
> Also, on Windows, SVN_SSH needs to be set with \ escaped
>  e.g., "C:\\PuTTY\\plink.exe"
> 
> See http://code.google.com/p/msysgit/issues/detail?id=305

This probably all wants to go into the commit message: it is very useful information!

Besides, I think you would like to formulate the commit subject more positive: "Respect GIT_SSH in git-svn" or some such. After all, you fix the issue. IOW use the imperative: you command git-svn to behave ;-)

Ciao, Dscho

Junio C Hamano· Aug 17, 2009, 21:40 UTC · re: Karthik R · lore

Re: [PATCH] GIT_SSH does not override ssh in git-svn

Karthik R <karthikr@fastmail.fm> writes:
Show 10 quoted lines
> +my $git_ssh_user_set = 1 if defined $ENV{GIT_SSH};
> +if ($git_ssh_user_set) {
> +       # If GIT_SSH is set, also set SVN_SSH...
> +       $ENV{SVN_SSH} = $ENV{GIT_SSH};
> +       # ... and escape \s in shell-variable on Windows
> +       if ($^O eq 'MSWin32' || $^O eq 'msys') {
> +               $ENV{SVN_SSH} =~ s/\\/\\\\/g;
> +       }
> +}
> +
Why not just
	if (defined $ENV{GIT_SSH}) {
        	...
???
Show 5 quoted lines
> $Git::SVN::Log::TZ = $ENV{TZ};
> $ENV{TZ} = 'UTC';
> $| = 1; # unbuffer STDOUT
> -- 
> 1.5.4.3
Karthik R· Aug 17, 2009, 22:35 UTC · re: Junio C Hamano · lore

Re: [PATCH] GIT_SSH does not override ssh in git-svn

Junio C Hamano wrote:
Show 29 quoted lines
> Karthik R <karthikr@fastmail.fm> writes:
>
>   
>> +my $git_ssh_user_set = 1 if defined $ENV{GIT_SSH};
>> +if ($git_ssh_user_set) {
>> +       # If GIT_SSH is set, also set SVN_SSH...
>> +       $ENV{SVN_SSH} = $ENV{GIT_SSH};
>> +       # ... and escape \s in shell-variable on Windows
>> +       if ($^O eq 'MSWin32' || $^O eq 'msys') {
>> +               $ENV{SVN_SSH} =~ s/\\/\\\\/g;
>> +       }
>> +}
>> +
>>     
>
> Why not just
>
> 	if (defined $ENV{GIT_SSH}) {
>         	...
>
> ???
>
>   
>> $Git::SVN::Log::TZ = $ENV{TZ};
>> $ENV{TZ} = 'UTC';
>> $| = 1; # unbuffer STDOUT
>> -- 
>> 1.5.4.3
>>     

I think I had trouble getting that to work correctly on my Windows XP box... I didn't dig into that (my perl was exactly 1 day old).

Does this look better (it does to me) ? If so, I can resend the patch addressing Dscho's comments too.

+# If GIT_SSH is set, also set SVN_SSH...
+$ENV{SVN_SSH} = $ENV{GIT_SSH} if defined $ENV{GIT_SSH};
+# ... and escape \s in shell-variable on Windows
+if ($^O eq 'MSWin32' || $^O eq 'msys') {
+       $ENV{SVN_SSH} =~ s/\\/\\\\/g if defined $ENV{SVN_SSH};
+}
+

← back to recent threads