git-svn: Update git-svn to use the ability to place temporary files within repository directory
PATCH 1/1 git-svn: Update git-svn to use the ability to place temporary files within repository directory
This fixes git-svn within msys where Perl will provide temporary files with path such as /tmp while the git suit expects native Windows paths.
--- git-svn.perl | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
git-svn.perl +5 -4
@@ -3312,11 +3312,11 @@ sub change_file_prop { sub apply_textdelta { my ($self, $fb, $exp) = @_; - my $fh = Git::temp_acquire('svn_delta'); + my $fh = $_repository->temp_acquire('svn_delta'); # $fh gets auto-closed() by SVN::TxDelta::apply(), # (but $base does not,) so dup() it for reading in close_file open my $dup, '<&', $fh or croak $!; - my $base = Git::temp_acquire('git_blob'); + my $base = $_repository->temp_acquire('git_blob'); if ($fb->{blob}) { print $base 'link ' if ($fb->{mode_a} == 120000); my $size = $::_repository->cat_blob($fb->{blob}, $base);
@@ -3357,7 +3357,8 @@ sub close_file { warn "$path has mode 120000", " but is not a link\n"; } else { - my $tmp_fh = Git::temp_acquire('svn_hash'); + my $tmp_fh = $_repository->temp_acquire( + 'svn_hash'); my $res; while ($res = sysread($fh, my $str, 1024)) { my $out = syswrite($tmp_fh, $str, $res);
@@ -3745,7 +3746,7 @@ sub change_file_prop { sub _chg_file_get_blob ($$$$) { my ($self, $fbat, $m, $which) = @_; - my $fh = Git::temp_acquire("git_blob_$which"); + my $fh = $_repository->temp_acquire("git_blob_$which"); if ($m->{"mode_$which"} =~ /^120/) { print $fh 'link ' or croak $!; $self->change_file_prop($fbat,'svn:special','*');
Signature · 1 line
1.6.0.3.1437.g6c121.dirty
Quoted 2 lines · Marten Svanfeldt (dev)
This fixes git-svn within msys where Perl will provide temporary files with path such as /tmp while the git suit expects native Windows paths.
Ah, I completely didn't understand the related Git.pm patch from you until I saw this sentence above.
Can you update that other patch and clarify this statement so it makes sense to UNIX-only folks?
| This fixes issues when the Perl in use uses a different format for paths | than in use by native code in the git tools such as msysgit with msys-perl.
Thanks,
Signature · 1 line
Eric Wong
PATCH 1/1 git-svn: Update git-svn to use the ability to place temporary files within repository directory
In reply to Marten Svanfeldt (dev)This fixes git-svn within msys where Perl will provide temporary files with path such as /tmp while the git suit expects native Windows paths.
---
Somehow I managed to screw up the last patch when getting it ready for submission. This patch is a fixed version that actually works.
git-svn.perl | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
git-svn.perl +5 -4
@@ -3312,11 +3312,11 @@ sub change_file_prop { sub apply_textdelta { my ($self, $fb, $exp) = @_; - my $fh = Git::temp_acquire('svn_delta'); + my $fh = $::_repository->temp_acquire('svn_delta'); # $fh gets auto-closed() by SVN::TxDelta::apply(), # (but $base does not,) so dup() it for reading in close_file open my $dup, '<&', $fh or croak $!; - my $base = Git::temp_acquire('git_blob'); + my $base = $::_repository->temp_acquire('git_blob'); if ($fb->{blob}) { print $base 'link ' if ($fb->{mode_a} == 120000); my $size = $::_repository->cat_blob($fb->{blob}, $base);
@@ -3357,7 +3357,8 @@ sub close_file { warn "$path has mode 120000", " but is not a link\n"; } else { - my $tmp_fh = Git::temp_acquire('svn_hash'); + my $tmp_fh = $::_repository->temp_acquire( + 'svn_hash'); my $res; while ($res = sysread($fh, my $str, 1024)) { my $out = syswrite($tmp_fh, $str, $res);
@@ -3745,7 +3746,7 @@ sub change_file_prop { sub _chg_file_get_blob ($$$$) { my ($self, $fbat, $m, $which) = @_; - my $fh = Git::temp_acquire("git_blob_$which"); + my $fh = $::_repository->temp_acquire("git_blob_$which"); if ($m->{"mode_$which"} =~ /^120/) { print $fh 'link ' or croak $!; $self->change_file_prop($fbat,'svn:special','*');
Signature · 1 line
1.6.0.3.1439.gc9385a