git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Problem with Git.pm bidi_pipe methods
@ 2008-10-24  0:14 Philippe Bruhat (BooK)
  2008-10-28  9:12 ` Christian Jaeger
  2008-11-23 19:03 ` nadim khemir
  0 siblings, 2 replies; 3+ messages in thread
From: Philippe Bruhat (BooK) @ 2008-10-24  0:14 UTC (permalink / raw)
  To: git

Hi,

To be able to call commit-tree from a Perl program, I had to use
command_bidi_pipe() to pass the message on standard input, and get the
new commit id on standard output. The only problem I have is that the
method doesn't work (or at least, doesn't work like the other
command_... methods).

    sub command_bidi_pipe {
        my ($pid, $in, $out);
        $pid = open2($in, $out, 'git', @_);
        return ($pid, $in, $out, join(' ', @_));
    }

First, it calls git in the current working dir, when all the other
command_... methods do the appropriate chdir depending on the Git object.

Second, it can't be used as a method, since $self is not removed from @_
before calling open2, leading to errors such as this one:

    git: 'Git=HASH(0x82f898c)' is not a git-command. See 'git --help'.

Third, no access is given to STDERR (open3 may help).

I'm very sorry to complain without proposing a patch.

I think solving the current directory problem is probably going to be
difficult with open2/open3, since open2 does the fork+exec, whereas Git.pm
handles the fork+chdir+exec itself for the other command_...  methods.
And so there is no room to chdir when calling open2.

-- 
 Philippe Bruhat (BooK)

 Treat those you outrank well... you never know when they will outrank you.
                                                 (Moral from Groo #7 (Image))

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-11-23 19:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-24  0:14 Problem with Git.pm bidi_pipe methods Philippe Bruhat (BooK)
2008-10-28  9:12 ` Christian Jaeger
2008-11-23 19:03 ` nadim khemir

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).