[109905] trunk/dports/devel/git-core

ciserlohn at macports.org ciserlohn at macports.org
Wed Aug 21 12:41:39 PDT 2013


Revision: 109905
          https://trac.macports.org/changeset/109905
Author:   ciserlohn at macports.org
Date:     2013-08-21 12:41:39 -0700 (Wed, 21 Aug 2013)
Log Message:
-----------
git-core: fix problems when using git-svn and subversion 1.8.x repos

Includes the yet unreleased commits: 

8ac251b66b952b0eddfa4e5bbf08a3c0ae7dbc0b
4e63dcc86cc77ec86a8d35ff752603a4b44d44a7
9c0810732c50106d1a93866ca3fa1285e07778f1

from upstream (https://github.com/git/git).

It should fix the following errors:

Temp file with moniker 'svn_delta' already in use at Git.pm line 1250
Temp file with moniker 'git_blob' already in use at Git.pm line 1250

when fetching from subversion 1.8.x repositories.

Modified Paths:
--------------
    trunk/dports/devel/git-core/Portfile

Added Paths:
-----------
    trunk/dports/devel/git-core/files/patch-perl-Git-SVN-Fetcher.pm.diff
    trunk/dports/devel/git-core/files/patch-perl-Git.pm.diff

Modified: trunk/dports/devel/git-core/Portfile
===================================================================
--- trunk/dports/devel/git-core/Portfile	2013-08-21 17:21:14 UTC (rev 109904)
+++ trunk/dports/devel/git-core/Portfile	2013-08-21 19:41:39 UTC (rev 109905)
@@ -5,6 +5,7 @@
 
 name                git-core
 version             1.8.3.4
+revision            1
 description         A fast version control system
 long_description    Git is a fast, scalable, distributed open source version \
                     control system focusing on speed and efficiency.
@@ -183,6 +184,9 @@
     depends_run-append  port:subversion \
                         port:p5.12-libwww-perl \
                         port:p5.12-svn-simple
+    patchfiles-append   patch-perl-Git-SVN-Fetcher.pm.diff \
+                        patch-perl-Git.pm.diff
+
 }
 
 variant bash_completion {

Added: trunk/dports/devel/git-core/files/patch-perl-Git-SVN-Fetcher.pm.diff
===================================================================
--- trunk/dports/devel/git-core/files/patch-perl-Git-SVN-Fetcher.pm.diff	                        (rev 0)
+++ trunk/dports/devel/git-core/files/patch-perl-Git-SVN-Fetcher.pm.diff	2013-08-21 19:41:39 UTC (rev 109905)
@@ -0,0 +1,22 @@
+diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm
+index bd17418..10edb27 100644
+--- a/perl/Git/SVN/Fetcher.pm
++++ b/perl/Git/SVN/Fetcher.pm
+@@ -315,11 +315,13 @@ sub change_file_prop {
+ sub apply_textdelta {
+ 	my ($self, $fb, $exp) = @_;
+ 	return undef if $self->is_path_ignored($fb->{path});
+-	my $fh = $::_repository->temp_acquire('svn_delta');
++	my $suffix = 0;
++	++$suffix while $::_repository->temp_is_locked("svn_delta_${$}_$suffix");
++	my $fh = $::_repository->temp_acquire("svn_delta_${$}_$suffix");
+ 	# $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 = $::_repository->temp_acquire('git_blob');
++	my $base = $::_repository->temp_acquire("git_blob_${$}_$suffix");
+ 
+ 	if ($fb->{blob}) {
+ 		my ($base_is_link, $size);
+
+

Added: trunk/dports/devel/git-core/files/patch-perl-Git.pm.diff
===================================================================
--- trunk/dports/devel/git-core/files/patch-perl-Git.pm.diff	                        (rev 0)
+++ trunk/dports/devel/git-core/files/patch-perl-Git.pm.diff	2013-08-21 19:41:39 UTC (rev 109905)
@@ -0,0 +1,47 @@
+--- a/perl/Git.pm
++++ b/perl/Git.pm
+@@ -61,7 +61,7 @@ require Exporter;
+                 remote_refs prompt
+                 get_tz_offset
+                 credential credential_read credential_write
+-                temp_acquire temp_release temp_reset temp_path);
++                temp_acquire temp_is_locked temp_release temp_reset temp_path);
+ 
+ 
+ =head1 DESCRIPTION
+@@ -1206,6 +1206,35 @@ sub temp_acquire {
+ 	$temp_fd;
+ }
+ 
++=item temp_is_locked ( NAME )
++
++Returns true if the internal lock created by a previous C<temp_acquire()>
++call with C<NAME> is still in effect.
++
++When temp_acquire is called on a C<NAME>, it internally locks the temporary
++file mapped to C<NAME>.  That lock will not be released until C<temp_release()>
++is called with either the original C<NAME> or the L<File::Handle> that was
++returned from the original call to temp_acquire.
++
++Subsequent attempts to call C<temp_acquire()> with the same C<NAME> will fail
++unless there has been an intervening C<temp_release()> call for that C<NAME>
++(or its corresponding L<File::Handle> that was returned by the original
++C<temp_acquire()> call).
++
++If true is returned by C<temp_is_locked()> for a C<NAME>, an attempt to
++C<temp_acquire()> the same C<NAME> will cause an error unless
++C<temp_release> is first called on that C<NAME> (or its corresponding
++L<File::Handle> that was returned by the original C<temp_acquire()> call).
++
++=cut
++
++sub temp_is_locked {
++	my ($self, $name) = _maybe_self(@_);
++	my $temp_fd = \$TEMP_FILEMAP{$name};
++
++	defined $$temp_fd && $$temp_fd->opened && $TEMP_FILES{$$temp_fd}{locked};
++}
++
+ =item temp_release ( NAME )
+ 
+ =item temp_release ( FILEHANDLE )
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130821/f1e2d54f/attachment.html>


More information about the macports-changes mailing list