Initial commit
[gitlite/.git] / gitlite.c
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #include <git2/global.h>
5 #include <git2/clone.h>
6 #include <git2/errors.h>
7
8 // Compile with:
9 // clang90 -o gitlite gitlite.c -lgit2 -I/usr/local/include -L/usr/local/lib -g
10
11 void
12 git_bail_error(int rc)
13 {
14     const git_error *err = NULL;
15
16         if (rc < 0) {
17                 err = git_error_last();
18                 if (err) 
19             printf("ERROR %d: %s\n", err->klass, err->message);
20                 else 
21             printf("ERROR %d: cannot fetch error info\n", rc);
22
23     }
24 }
25
26 int
27 main(int argc, char *argv[])
28 {
29         int rc;
30         const char *url = "https://github.com/freebsd/pkg.git";
31         //const char *url = "https://github.com/freebsd/freebsd.git";
32         const char *local_path = "/home/sbz/git/src";
33         git_clone_options clone_opts = GIT_CLONE_OPTIONS_INIT;
34         git_checkout_options co_opts = GIT_CHECKOUT_OPTIONS_INIT;
35         git_repository *cloned_repo = NULL;
36
37         co_opts.checkout_strategy = GIT_CHECKOUT_SAFE;
38         co_opts.progress_cb = NULL;
39         co_opts.progress_payload = NULL;
40         clone_opts.checkout_opts = co_opts;
41         clone_opts.fetch_opts.callbacks.sideband_progress = NULL;
42         clone_opts.fetch_opts.callbacks.transfer_progress = NULL;
43         clone_opts.fetch_opts.callbacks.credentials = NULL;
44         clone_opts.fetch_opts.callbacks.payload = NULL;
45
46         rc = git_libgit2_init();
47         git_bail_error(rc);
48
49         rc = git_clone(&cloned_repo, url, local_path, &clone_opts);
50         git_bail_error(rc);
51
52         if (cloned_repo)
53                 git_repository_free(cloned_repo);
54
55         rc = git_libgit2_shutdown();
56         git_bail_error(rc);
57
58     return (rc);
59 }