Andrew Myrick <amyrick@xxxxxxxxx> wrote: > 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'". That's strange. I'm at a bit of a loss here so I'll wait for somebody with more Perl knowledge than myself. What happens when you dump @_ in your catch block? use Data::Dumper; try { } catch Git::Error::Command with { print STDERR Dumper(\@_); } > 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 :) Yes I'm lost here, too, so in these cases I default to putting print statements everywhere and Data::Dumper :) -- Eric Wong -- 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