Uploaded image for project: 'Subversion'
  1. Subversion
  2. SVN-3679

Perl API SVN::Ra get_commit_editor* functions broken, missing, untested

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Blocker
    • Resolution: Unresolved
    • Affects Version/s: 1.6.x
    • Fix Version/s: unscheduled
    • Component/s: bindings_swig_perl
    • Labels:
      None

      Description

      The test cases for the Perl API SVN::Ra at
      
        bindings/swig/perl/native/t/6ra.t
      
      currently (as of 1.6.12) lack tests for functions needed to commit a change to
      the repository via the remote-access API layer. For starters, there are no tests
      for get_commit_editor, get_commit_editor2, get_commit_editor3. (The SVN::Ra man
      page even says that the author did not succeed in testing get_commit_editor,
      get_commit_editor2; get_commit_editor3 is not even listed.)
      
      When I try to use e.g. get_commit_editor2 as suggested in the SVN::Ra
      man page, I just get an error message like
      
        TypeError in method 'svn_ra_get_commit_editor2', argument 5 of type
      'svn_commit_callback2_t'
      
      A short example Perl script that reproduces this is attached below.
      
      Motivation: The remote-access layer API is very useful for applications (such as
      Web CGI editors) that want to commit changes without the overhead and disk-state
      involved with having to checkout a working directory first. Perl remains a
      popular CGI scripting language, which makes a well-tested, production-quality
      Perl SWIG binding for svn_ra.h highly desirable.
      
      See also:
      http://mail-archives.apache.org/mod_mbox/subversion-users/201007.mbox/browser
      http://svn.haxx.se/dev/archive-2010-07/0272.shtml
      
      How to reproduce TypeError:
      
      #!/usr/bin/perl
      use SVN::Core;
      use SVN::Ra;
      use SVN::Delta;
      
      my $ra = SVN::Ra->new('http://svn.apache.org/repos/asf/subversion/');
      my $path = 'trunk/BUGS';
      open($fh, '>', \$text) || die;
      my ($revnum, $props) = $ra->get_file($path, $SVN::Core::INVALID_REVNUM, $fh);
      close $fh || die;
      print "Revision: $revnum\n\n$text\n";
      
      my $logmsg = "test commit via the SVN:Ra Perl API";
      sub commit_callback {
          my ($arg) = @_;
          use Data::Dumper;
          print STDERR "commit_callback(".Dumper($arg).")\n";
      }
      my $editor = SVN::Delta::Editor->new(
          $ra->get_commit_editor2($logmsg, \&commit_callback, undef, {}, 0));
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              mkuhn Markus Kuhn
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: