Eliminate Scalar::Util usage from private-Error.pm
[gitweb.git] / perl / Git.pm
index 9ce9fcdd3ec95f08a7bf6c00bdd6da2931c01cde..f2467bddbe91954aa5a014bcee79333fe1586cde 100644 (file)
@@ -98,6 +98,8 @@ =head1 DESCRIPTION
 
 }
 
+my $instance_id = 0;
+
 
 =head1 CONSTRUCTORS
 
@@ -215,7 +217,7 @@ sub repository {
                delete $opts{Directory};
        }
 
-       $self = { opts => \%opts };
+       $self = { opts => \%opts, id => $instance_id++ };
        bless $self, $class;
 }
 
@@ -570,6 +572,24 @@ sub ident_person {
 }
 
 
+=item get_object ( TYPE, SHA1 )
+
+Return contents of the given object in a scalar string. If the object has
+not been found, undef is returned; however, do not rely on this! Currently,
+if you use multiple repositories at once, get_object() on one repository
+_might_ return the object even though it exists only in another repository.
+(But do not rely on this behaviour either.)
+
+The method must be called on a repository instance.
+
+Implementation of this method is very fast; no external command calls
+are involved. That's why it is broken, too. ;-)
+
+=cut
+
+# Implemented in Git.xs.
+
+
 =item hash_object ( TYPE, FILENAME )
 
 =item hash_object ( TYPE, FILEHANDLE )
@@ -833,11 +853,10 @@ sub _call_gate {
        if (defined $self) {
                # XXX: We ignore the WorkingCopy! To properly support
                # that will require heavy changes in libgit.
+               # For now, when we will need to do it we could temporarily
+               # chdir() there and then chdir() back after the call is done.
 
-               # XXX: And we ignore everything else as well. libgit
-               # at least needs to be extended to let us specify
-               # the $GIT_DIR instead of looking it up in environment.
-               #xs_call_gate($self->{opts}->{Repository});
+               xs__call_gate($self->{id}, $self->repo_path());
        }
 
        # Having to call throw from the C code is a sure path to insanity.