On Dec 23, 2009, at 12:09 PM, Eric Wong wrote: > Andrew Myrick <amyrick@xxxxxxxxx> wrote: >> One of my projects is failing to clone because merge-base is failing >> on one of the revisions; the branch is a partial branch, so merge-base >> can't find a common ancestor with trunk. I'd like to catch the >> exception that command_oneline should throw when merge-base fails, but >> my perl is very rusty and I'm struggling to get git-svn.perl to grok >> the Git::Error::Command class. What is the appropriate way to import >> that class? Or more generally, is there a better solution to handling >> this error case? > > Hi Andrew, > > Git::Error::Command should be imported with the rest of Git.pm > > It's a special way of doing exceptions in Perl which I don't see much > point of... Looking at git-send-email as an example, it does this: > > use Error qw(:try); > use Git; > > try { > # something that will throw > } catch Git::Error::Command with { > # error handling > } I looked at git-send-email's example, but I wanted to do a bit more: try { # command_oneline(...); } catch Git::Error::Command with { $E = shift; if ($E->value() == 1) { # do something } else { # do something else } } This is used in perl/Git.pm, but when I tried it in git-svn.perl, it fails with the error "Can't locate object method 'value' via package 'Git::SVN'". > > A more standard approach in Perl is just: > > eval { > # something that will die > }; > if ($@) { > # error handling > } > Presumably $@ contains the Git::Error::Command object, which leaves me in the same spot, unfortunately. > But yes, it is Perl after all and TMTOWTDI :) Is there ever :) -Andrew -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html