@@ -465,6 +465,7 @@ def find_binary(self, name):
465
465
if os .name == 'nt' :
466
466
dirs = ['C:\\ Program Files\\ Git\\ bin' ,
467
467
'C:\\ Program Files (x86)\\ Git\\ bin' ,
468
+ 'C:\\ Program Files\\ TortoiseGit\\ bin' ,
468
469
'C:\\ Program Files\\ Mercurial' ,
469
470
'C:\\ Program Files (x86)\\ Mercurial' ,
470
471
'C:\\ Program Files (x86)\\ TortoiseHg' ,
@@ -501,6 +502,11 @@ def retrieve_binary(self):
501
502
'can be used for reference, but changes to that will be ' +
502
503
'overwritten upon next upgrade.' ) % (__name__ , name , __name__ ))
503
504
return False
505
+
506
+ if os .name == 'nt' :
507
+ tortoise_plink = self .find_binary ('TortoisePlink.exe' )
508
+ if tortoise_plink :
509
+ os .putenv ('GIT_SSH' , tortoise_plink )
504
510
return binary
505
511
506
512
def run (self ):
@@ -927,6 +933,16 @@ def slow_delete(function, path, excinfo):
927
933
root_level_paths [0 ].endswith ('/' )
928
934
for path in package_zip .namelist ():
929
935
dest = path
936
+ if os .name == 'nt' :
937
+ regex = ':|\*|\?|"|<|>|\|'
938
+ if re .search (regex , dest ) != None :
939
+ print ('%s: Skipping file from package ' +
940
+ 'named %s due to an invalid filename' ) % (__name__ ,
941
+ path )
942
+ continue
943
+ regex = '[\x00 -\x1F \x7F -\xFF ]'
944
+ if re .search (regex , dest ) != None :
945
+ dest = dest .decode ('utf-8' )
930
946
# If there was only a single directory in the package, we remove
931
947
# that folder name from the paths as we extract entries
932
948
if skip_root_dir :
@@ -939,7 +955,12 @@ def slow_delete(function, path, excinfo):
939
955
dest_dir = os .path .dirname (dest )
940
956
if not os .path .exists (dest_dir ):
941
957
os .makedirs (dest_dir )
942
- open (dest , 'wb' ).write (package_zip .read (path ))
958
+ try :
959
+ open (dest , 'wb' ).write (package_zip .read (path ))
960
+ except (IOError , UnicodeDecodeError ):
961
+ print ('%s: Skipping file from package ' +
962
+ 'named %s due to an invalid filename' ) % (__name__ ,
963
+ path )
943
964
package_zip .close ()
944
965
945
966
package_metadata_file = os .path .join (package_dir ,
0 commit comments