| /* |
| * test-svn-fe: Code to exercise the svn import lib |
| */ |
| |
| #include "git-compat-util.h" |
| #include "vcs-svn/svndump.h" |
| #include "vcs-svn/svndiff.h" |
| #include "vcs-svn/sliding_window.h" |
| #include "vcs-svn/line_buffer.h" |
| |
| static const char test_svnfe_usage[] = |
| "test-svn-fe (<dumpfile> | [-d] <preimage> <delta> <len>)"; |
| |
| static int apply_delta(int argc, const char **argv) |
| { |
| struct line_buffer preimage = LINE_BUFFER_INIT; |
| struct line_buffer delta = LINE_BUFFER_INIT; |
| struct sliding_view preimage_view = SLIDING_VIEW_INIT(&preimage, -1); |
| |
| if (argc != 5) |
| usage(test_svnfe_usage); |
| |
| if (buffer_init(&preimage, argv[2])) |
| die_errno("cannot open preimage"); |
| if (buffer_init(&delta, argv[3])) |
| die_errno("cannot open delta"); |
| if (svndiff0_apply(&delta, (off_t) strtoumax(argv[4], NULL, 0), |
| &preimage_view, stdout)) |
| return 1; |
| if (buffer_deinit(&preimage)) |
| die_errno("cannot close preimage"); |
| if (buffer_deinit(&delta)) |
| die_errno("cannot close delta"); |
| strbuf_release(&preimage_view.buf); |
| return 0; |
| } |
| |
| int cmd_main(int argc, const char **argv) |
| { |
| if (argc == 2) { |
| if (svndump_init(argv[1])) |
| return 1; |
| svndump_read(NULL, "refs/heads/master", "refs/notes/svn/revs"); |
| svndump_deinit(); |
| svndump_reset(); |
| return 0; |
| } |
| |
| if (argc >= 2 && !strcmp(argv[1], "-d")) |
| return apply_delta(argc, argv); |
| usage(test_svnfe_usage); |
| } |